# API

<figure><img src="/files/269eea128c3cf196395cb15c61907dfb86d06601" alt=""><figcaption></figcaption></figure>

***

## **Referencia de API**

Para documentación detallada de los endpoints, visite: <https://rest.boxhero.io/docs/api>

***

## Endpoint

Todas las solicitudes de la API deben dirigirse a la siguiente URL base:\ <mark style="color:azul;"><https://rest.boxhero-app.com></mark>

## **Autenticación**

Todas las solicitudes de la API deben incluir un **Authorization** **encabezado** con un **Bearer** **token**:

```
Authorization: Bearer {API_TOKEN}
```

Para obtener un token de API:

1. Inicie sesión en su cuenta de BoxHero en el escritorio (Web).
2. Vaya a <mark style="color:azul;">`Configuración`</mark> > <mark style="color:azul;">`Integrations`</mark>.
3. Genere un nuevo token de API.

## **Realizar solicitudes**

Aquí hay una solicitud de API de ejemplo para recuperar productos.

```bash
curl -X 'GET' \
  'https://rest.boxhero-app.com/v1/items?location_ids=12345&location_ids=34567&limit=100' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer test-api-token-123'
```

## Límites de tasa

Para garantizar la estabilidad del sistema, imponemos los siguientes límites de tasa:

* 5 consultas por segundo para cada endpoint.

Una vez que se alcance el límite de tasa, verá un mensaje de error con lo siguiente:

* `X-Ratelimit-Limit` - Máximo de consultas por minuto
* `X-Ratelimit-Remaining` - Consultas restantes
* `X-Ratelimit-Reset` - Tiempo (en segundos) restante hasta que se reinicie el conteo de consultas

***

## Respuestas

### Éxito

Las respuestas con códigos de estado HTTP en el rango 200 indican un procesamiento exitoso de la API.

### Error

Los códigos de estado en el rango 400 o 500 indican fallos en la solicitud de la API:

* Rango 400: error del lado del cliente debido a la información proporcionada con la solicitud (por ejemplo, faltan parámetros obligatorios).
* Rango 500: error del lado del servidor.

**Ejemplo de respuesta de error:**

```json
{
  "id": "ex_ku3gij67k9xzc8ef6r5esyu5",
  "type": "/errors/tokens/invalid",
  "title": "El token de autenticación no es válido. Proporcione un token válido.",
  "correlation_id": "rq_z4g7dh55ykol7v2cx6homkpd",
  "given": "invalid-token-123"
}
```

* **id :** Un ID único para identificar el error.
* **type :** Un código en forma de URL que identifica el tipo de error.
* **title :** Proporcione el contenido del error en forma legible para humanos.
* **correlation\_id :** Apunta al ID de la solicitud asociada con el error.
* **otros :** Se pueden incluir campos adicionales para proporcionar información adicional, como "*given*" en el ejemplo.

### Tipos de error comunes

<table><thead><tr><th width="252">Tipo</th><th>Descripción</th></tr></thead><tbody><tr><td>/errors/not-found</td><td>Recurso solicitado no encontrado (por ejemplo, no existe un elemento con un ID específico).</td></tr><tr><td>/errors/invalid-request</td><td>Parámetros no válidos en la solicitud.</td></tr><tr><td>/errors/invalid-team-mode</td><td>La consulta solicitada no se puede procesar en el modo actual del equipo (por ejemplo, usando la API de búsqueda de <em>location</em> en <em>Basic Mode</em>).</td></tr><tr><td>/errors/tokens/required</td><td>Falta el token de API.</td></tr><tr><td>/errors/tokens/invalid</td><td>Token de API no válido (por ejemplo, el token de API ha caducado).</td></tr><tr><td>/errors/too-many-requests</td><td>Se superó el límite de tasa.</td></tr><tr><td>/errors/unhandled</td><td>Error del lado del servidor sin resolver.</td></tr><tr><td>/errors/core/usage-limit-exceeded</td><td>Se alcanzó el límite de uso. Se requiere actualizar el plan.</td></tr></tbody></table>

## Paginación

Para los endpoints que devuelven grandes conjuntos de datos (por ejemplo, listas de elementos, listas de transacciones), la API de vista de lista limita la cantidad de elementos devueltos en una sola solicitud mediante paginación. Utilizamos paginación basada en cursor:

{% hint style="info" %}
Para determinar si se requiere paginación, verifique si hay parámetros relacionados con la paginación presentes en el cuerpo de la solicitud del endpoint en la documentación de la API.
{% endhint %}

#### **Parámetros de paginación**

* `has_more` : Un valor booleano que indica si existen más datos más allá de la página actual.
* `cursor` : Proporciona el valor del cursor para recuperar la siguiente página.

#### **Recuperar la siguiente página**

* Compruebe si `has_more` es `true`. Significa que hay otra página disponible.
* Si `true`, envíe otra solicitud incluyendo `cursor={received cursor value}` en los parámetros. Esto devolverá los datos subsiguientes.
* Repita hasta que `has_more` es `false` para recuperar la lista completa.

***

## Soporte y comentarios

Si encuentra problemas o necesita funcionalidad adicional de la API, póngase en contacto con nuestro [equipo de soporte](https://docs-en.boxhero.io/etc/contact). Agradecemos sus comentarios para mejoras de la API y solicitudes de nuevas funciones.

{% embed url="<https://www.boxhero.io/en/blog/boxhero-open-api-integrate-inventory-data>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.boxhero.io/docs/documentation/es/integraciones/open-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
