Quick start
Esta guía te lleva de cero a tu primer request autenticado en unos 5 minutos: obtener un token, hacer un GET real, leer la respuesta, paginar y entender los errores.
Necesitás un usuario de API de Rently (con permisos para usar la API) y la URL de tu instancia. En Rently cada cliente (tenant) vive en su propio host, por ejemplo https://tu-empresa.rently.com.ar. El host identifica al tenant, así que siempre usá el host de tu instancia en cada llamada.
En esta guía usamos https://{tenant}.rently.com.ar como ejemplo. Reemplazalo por el host de tu tenant.
1. Obtener un token
La API se autentica con un token Bearer OAuth2. Para obtenerlo, hacé un POST a /auth/token con tus credenciales usando el grant client_credentials. Tu usuario de API es el client_id y tu clave es el client_secret.
curl -X POST https://{tenant}.rently.com.ar/auth/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=YOUR_USERNAME" \
-d "client_secret=YOUR_PASSWORD"
La respuesta es un JSON con el token:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJ...",
"token_type": "bearer",
"expires_in": 86399
}
| Campo | Descripción |
|---|---|
access_token | El token que enviás en cada request posterior. |
token_type | Siempre bearer. Define el esquema del header Authorization. |
expires_in | Vigencia del token en segundos (≈ 1 día). |
El token vale alrededor de un día (expires_in ≈ 86399 segundos). Guardalo y reutilizalo en lugar de pedir uno nuevo en cada request. Cuando expire, volvé a pedir otro.
El token sólo es válido contra el mismo host con el que lo pediste. Si usás un token contra el host de otro tenant, la API responde 403. Pedí siempre el token y hacé las llamadas contra el mismo host.
2. Tu primer request autenticado
Con el access_token, agregá el header Authorization: Bearer {token} a cualquier endpoint de la API. Empecemos por un GET simple y sin parámetros: listar las sucursales de tu instancia con GET /api/branchoffices.
curl https://{tenant}.rently.com.ar/api/branchoffices \
-H "Authorization: Bearer YOUR_TOKEN"
Respuesta (array de sucursales):
[
{
"Id": 1,
"BusinessName": "Rently LAX Airport",
"Name": "LAX Branch",
"Street": "123 Airport Road",
"Number": "Terminal 1",
"City": "Los Angeles",
"Country": "United States",
"PostalCode": "90045",
"Latitude": 33.9416,
"Longitude": -118.4085,
"Telephone": "+1-213-555-0123",
"Email": "lax@rently.com",
"IATACode": "LAX",
"IsFranchise": false,
"PublicWebSite": "https://rently.com/locations/lax"
}
]
Algunos endpoints aceptan un parámetro Language para fijar el idioma de los textos de la respuesta; por ejemplo, GET /api/search lo soporta. El valor acepta el nombre de cultura completo (es-AR, en-US, pt) o el código ISO de dos letras (es, en). Si lo omitís, se usa el idioma por defecto de tu instancia. Consultá la referencia de la API para ver qué endpoints lo aceptan.
Listo: ese es tu primer llamado autenticado. Cada vez que recibas un 200, ya estás operando contra la API.
3. Un GET con paginación
Los listados grandes vienen paginados. Veamos GET /api/bookings/list, que devuelve reservas en bloques. Acepta estos parámetros de query:
| Parámetro | Default | Descripción |
|---|---|---|
offset | 0 | Cursor de paginación. En la primera llamada, 0. |
limit | 30 | Cantidad de elementos por página. |
status | — | Filtro opcional por estado de la reserva. |
sortDirectionAsc | true | Dirección de ordenamiento. |
curl "https://{tenant}.rently.com.ar/api/bookings/list?offset=0&limit=30" \
-H "Authorization: Bearer YOUR_TOKEN"
La respuesta envuelve los resultados en una estructura paginada:
{
"Offset": 0,
"Limit": 30,
"Total": 1,
"Results": [
{
"Id": 1,
"IsQuotation": false,
"Balance": 0.0,
"TotalPayed": 0.0
}
],
"NextOffset": 0
}
| Campo | Descripción |
|---|---|
Offset / Limit | El offset y el límite aplicados a esta página. |
Total | Cantidad total de registros disponibles. |
Results | El array de elementos de esta página (puede venir null si no hay resultados). |
NextOffset | El offset a enviar en la próxima llamada para traer la página siguiente. |
Cómo iterar las páginas
Para recorrer todas las páginas, tomá el NextOffset de cada respuesta y pasalo como offset en la siguiente. La iteración termina cuando Results trae menos elementos que Limit.
# Página siguiente: usá el NextOffset que devolvió la respuesta anterior
curl "https://{tenant}.rently.com.ar/api/bookings/list?offset=NEXT_OFFSET&limit=30" \
-H "Authorization: Bearer YOUR_TOKEN"
4. Manejo de errores
Ante un error, la API responde con un código de estado HTTP y, en los errores de negocio, un cuerpo JSON con el formato WebApiErrorResponse:
{
"ErrorMessage": "The requested resource was not found",
"ErrorCode": 1,
"Id": "0HMV9A1B2C3D4-00000001"
}
| Campo | Descripción |
|---|---|
ErrorMessage | Descripción legible del error. |
ErrorCode | Código numérico del error (por ejemplo, 1 = cliente no encontrado, 4 = el precio no coincide, 22 = reserva no encontrada). Se serializa como entero. |
Id | GUID de correlación. Útil para reportar el problema al soporte. |
Códigos de estado más comunes:
| Estado | Significado | Cuerpo |
|---|---|---|
200 | Éxito. | Resultado del endpoint. |
400 | Error de negocio o de validación. | WebApiErrorResponse con ErrorCode. |
403 | No autenticado o sin permisos. | — |
404 | Recurso no encontrado. | — |
Si el token falta, está vencido, o no corresponde al tenant del host, la API responde 403 (no 401). Si recibís 403, revisá que el header Authorization esté presente, que el token no haya expirado y que estés usando el host correcto del tenant.
Id del errorCuando algo falla con un 400, el campo Id del cuerpo es el identificador de correlación. Incluilo al abrir un ticket de soporte: permite rastrear exactamente qué pasó del lado del servidor.
Próximos pasos
Ya tenés lo esencial: token, request autenticado, paginación y errores. Desde acá podés explorar el resto de la API:
- Buscá disponibilidad y cotizá con
GET /api/searchyGET /api/booking/price. - Creá una reserva con
POST /api/booking/booky registrá el pago conPOST /api/booking/pay. - Consultá los catálogos maestros:
GET /api/places,GET /api/categories,GET /api/currencies.
El detalle completo de cada endpoint, con sus parámetros y schemas, está en la referencia de la API.