# API

<figure><img src="/files/31bf9ef26a7d5db4c4f6c3664cb78434efade6de" alt=""><figcaption></figcaption></figure>

***

## **API-Referenz**

Für eine ausführliche Dokumentation der Endpunkte besuchen Sie bitte: <https://rest.boxhero.io/docs/api>

***

## Endpunkt

Alle API-Anfragen sollten an die folgende Basis-URL gesendet werden:\ <mark style="color:blau;"><https://rest.boxhero-app.com></mark>

## **Authentifizierung**

Alle API-Anfragen müssen einen **Authorization** **Header** mit einem **Bearer** **Token**:

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

Um einen API-Token zu erhalten:

1. Melden Sie sich in Ihrem BoxHero-Konto auf dem Desktop (Web) an.
2. Navigieren Sie zu <mark style="color:blau;">`Einstellungen`</mark> > <mark style="color:blau;">`Integrationen`</mark>.
3. Einen neuen API-Token generieren.

## **Anfragen stellen**

Hier ist eine Beispiel-API-Anfrage zum Abrufen von Produkten.

```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'
```

## Ratenlimits

Um die Systemstabilität sicherzustellen, setzen wir die folgenden Ratenlimits fest:

* 5 Anfragen pro Sekunde für jeden Endpunkt.

Sobald Sie das Ratenlimit erreicht haben, wird eine Fehlermeldung mit Folgendem angezeigt:

* `X-Ratelimit-Limit` - Maximale Anfragen pro Minute
* `X-Ratelimit-Remaining` - Verbleibende Anfragen
* `X-Ratelimit-Reset` - Verbleibende Zeit (in Sekunden) bis zum Zurücksetzen des Anfragezählers

***

## Antworten

### Erfolg

Antworten mit HTTP-Statuscodes im Bereich 200 weisen auf eine erfolgreiche API-Verarbeitung hin.

### Fehler

Statuscodes im Bereich 400 oder 500 weisen auf fehlgeschlagene API-Anfragen hin:

* Bereich 400: Clientseitiger Fehler aufgrund von mit der Anfrage bereitgestellten Informationen (z. B. fehlende erforderliche Parameter).
* Bereich 500: Serverseitiger Fehler.

**Beispiel für eine Fehlermeldung:**

```json
{
  "id": "ex_ku3gij67k9xzc8ef6r5esyu5",
  "type": "/errors/tokens/invalid",
  "title": "Der Authentifizierungstoken ist ungültig. Bitte geben Sie einen gültigen Token an.",
  "correlation_id": "rq_z4g7dh55ykol7v2cx6homkpd",
  "given": "invalid-token-123"
}
```

* **id :** Eine eindeutige ID zur Identifizierung des Fehlers.
* **type :** Ein Code in Form einer URL, der den Fehlertyp identifiziert.
* **title :** Geben Sie den Inhalt des Fehlers in menschenlesbarer Form an.
* **correlation\_id :** Verweist auf die ID der Anfrage, die mit dem Fehler verbunden ist.
* **other :** Zusätzliche Felder können enthalten sein, um weitere Informationen bereitzustellen, wie zum Beispiel "*given*" im Beispiel.

### Häufige Fehlertypen

<table><thead><tr><th width="252">Typ</th><th>Beschreibung</th></tr></thead><tbody><tr><td>/errors/not-found</td><td>Angeforderte Ressource nicht gefunden (z. B. existiert ein Element mit einer bestimmten ID nicht).</td></tr><tr><td>/errors/invalid-request</td><td>Ungültige Parameter in der Anfrage.</td></tr><tr><td>/errors/invalid-team-mode</td><td>Die angeforderte Abfrage kann im aktuellen Teammodus nicht verarbeitet werden (z. B. die Verwendung der <em>location</em> Lookup-API im <em>Basic-Modus</em>).</td></tr><tr><td>/errors/tokens/required</td><td>API-Token fehlt.</td></tr><tr><td>/errors/tokens/invalid</td><td>Ungültiger API-Token (z. B. der API-Token ist abgelaufen).</td></tr><tr><td>/errors/too-many-requests</td><td>Das Ratenlimit wurde überschritten.</td></tr><tr><td>/errors/unhandled</td><td>Ungelöster serverseitiger Fehler.</td></tr><tr><td>/errors/core/usage-limit-exceeded</td><td>Nutzungsgrenze erreicht. Ein Plan-Upgrade ist erforderlich.</td></tr></tbody></table>

## Paginierung

Für Endpunkte, die große Datensätze zurückgeben (z. B. Artikellisten, Transaktionslisten), begrenzt die Listenansichts-API die Anzahl der in einer einzelnen Anfrage zurückgegebenen Elemente durch Paginierung. Wir verwenden cursorbasierte Paginierung:

{% hint style="info" %}
Um festzustellen, ob Paginierung erforderlich ist, prüfen Sie, ob im Anfragekörper des Endpunkts in der API-Dokumentation parameterbezogene Paginierungsangaben vorhanden sind.
{% endhint %}

#### **Paginierungsparameter**

* `has_more` : Ein boolescher Wert, der angibt, ob über die aktuelle Seite hinaus weitere Daten vorhanden sind.
* `cursor` : Liefert den Cursorwert zum Abrufen der nächsten Seite.

#### **Abrufen der nächsten Seite**

* Prüfen Sie, ob `has_more` ist `true`. Das bedeutet, dass eine weitere Seite verfügbar ist.
* Wenn `true`, senden Sie eine weitere Anfrage einschließlich `cursor={empfangener Cursorwert}` in den Parametern. Dadurch werden die nachfolgenden Daten zurückgegeben.
* Wiederholen Sie dies, bis `has_more` ist `false` ist, um die vollständige Liste abzurufen.

***

## Support und Feedback

Wenn Sie auf Probleme stoßen oder zusätzliche API-Funktionalitäten benötigen, kontaktieren Sie bitte unser [Support-Team](https://docs-en.boxhero.io/etc/contact). Wir freuen uns über Ihr Feedback zu API-Verbesserungen und neuen Funktionswünschen.

{% 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/de/integrationen/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.
