---
title: "Die Talkspirit Partner-API"
description: "Die Partner-API ist ein versionierter REST-Vertrag für namentlich benannte Integrationspartner. Sie wird mit einem API-Schlüssel authentifiziert, den ein Administrator Ihrer Organisation erstellt, und sie steht nicht für eine Selbstregistrierung offen."
category: integrations
section: api-and-webhooks
type: Reference
lastUpdated: 2026-09-30
locale: de
canonical: https://support.talkspirit.com/de/integrations/partner-api
---

# Die Talkspirit Partner-API


## Die Talkspirit Partner-API

Talkspirit stellt eine REST-API unter dem Präfix `/v1` bereit, damit eine Integration die Mitglieder einer Organisation, ihre Struktur, ihre Meetings, Projekte, Ziele und Arbeitsvereinbarungen lesen und an einigen genau umrissenen Stellen schreiben kann, ohne dass jemand in der Talkspirit-Oberfläche arbeitet. Jede Antwort ist JSON, und die meisten Fehler sind ein RFC-7807-Problemdokument mit einem stabilen, maschinenlesbaren `code`. Ratenbegrenzung und Zeitüberschreitung sind die beiden Ausnahmen: ihre Antwortkörper haben eine eigene Form.

Es ist eine **Partner**-API, keine öffentliche. Der Ressourcenumfang ist bewusst eng, der Zugang wird pro benannter Integration bereitgestellt, und es gibt kein Entwicklerportal, in dem Sie sich anmelden oder selbst Zugangsdaten erzeugen könnten. Um einen Cloud-Speicher oder eine andere eingebaute Integration anzubinden, ist keine API-Arbeit nötig: siehe [Wie füge ich eine Integration hinzu oder entferne sie?](../integrations/enable-a-cloud-file-picker).

## Was vorhanden sein muss, damit ein Aufruf gelingt

Zwei Bedingungen, die beide bei der Talkspirit-Organisation liegen, mit der Sie sich integrieren:

1. **Das API-Modul ist für diese Organisation aktiviert.** Es ist ein optionales Modul und standardmäßig aus. Ohne es wird jede Anfrage mit `401` abgewiesen, selbst wenn der Schlüssel gültig ist. Wird das Modul später abgeschaltet, funktionieren bereits ausgegebene Schlüssel nach kurzer Verzögerung nicht mehr.
2. **Sie haben einen API-Schlüssel für diese Organisation.** Ein Administrator der Organisation erstellt ihn in der Administration unter Sicherheit auf der Seite **API**. Der Talkspirit-Support gibt keine Schlüssel heraus, und von der Partnerseite aus können Sie keinen erzeugen.

Bitten Sie den Administrator, dem die Organisation gehört, beides einzurichten. Das Vorgehen steht in [API-Token als Administrator verwalten](../integrations/manage-api-tokens-as-an-admin).

## Wo finde ich die Referenzdokumentation?

Die API dokumentiert sich selbst. Der Dienst veröffentlicht unter demselben Host, der die API bereitstellt:

- `/v1/docs`, eine interaktive Referenz, gerendert mit Scalar. Sie liest `/v1/openapi.json`, listet jede Operation mit ihren Schemata und kann Testanfragen direkt von der Seite senden.
- `/v1/openapi.json`, das maschinenlesbare OpenAPI-Dokument, zur Client-Generierung.

Beide sind ohne Zugangsdaten lesbar. `/v1/redoc` war früher eine eigene Leseseite und antwortet inzwischen mit `301` auf `/v1/docs`, es gibt also eine Referenzseite statt zwei.

Der Vertrag wird aus dem laufenden Dienst erzeugt und in der Continuous Integration geprüft, er kann also nicht von dem abweichen, was die API tatsächlich ausliefert. Behandeln Sie ihn als die Autorität: dieser Artikel erklärt die Form, die Referenz erklärt jedes Feld. Er trägt eine eigene Versionsnummer, unabhängig vom Pfad `/v1`: dieser Artikel wurde gegen **0.65.0** geprüft.

## Wie die Authentifizierung funktioniert

Übergeben Sie Ihren Schlüssel bei jeder Anfrage als Bearer-Token:

```http
Authorization: Bearer <Ihr API-Schlüssel>
```

Der Schlüssel ist eine opake Zeichenfolge, die mit `ts_partner_` beginnt. Talkspirit speichert nur einen Fingerabdruck davon, der vollständige Wert wird also einmal bei der Erstellung angezeigt und ist danach nicht wiederherstellbar. Ein verlorener Schlüssel wird ersetzt, nie zurückgeholt. Verwechseln Sie ihn nicht mit einem MCP-Schlüssel, der mit `tsk_` beginnt, von jedem Mitglied im eigenen Kontobereich erstellt wird und den separaten MCP-Endpunkt authentifiziert, nicht diese API.

Im Hintergrund prüft der Dienst Ihren Schlüssel und tauscht ihn gegen ein kurzlebiges Token eines technischen Benutzers, der Ihrer Integration zugeordnet ist. Ihre Integration sieht daher genau das, was dieser technische Benutzer sehen darf: die Kreise, Rollen und Boards, die ihm in der Organisation gegeben wurden, und, bei einer Aufgabe, die zu keinem Projekt gehört, nur die Aufgaben, die dieser Benutzer im Produkt sehen darf. Ein Geltungsbereich auf dem Schlüssel erweitert das nie.

Behandeln Sie den Schlüssel wie ein Passwort. Halten Sie ihn aus der Versionsverwaltung heraus und bitten Sie den Administrator, ihn zu widerrufen und neu auszugeben, falls er je offengelegt wird. Der Widerruf wirkt sofort, mit einem Kulanzfenster von bis zu etwa fünf Minuten für ein bereits getauschtes Token.

## Was die API bereitstellt

Achtundvierzig Operationen unter `/v1`, plus `GET /healthz`. Neun davon schreiben; alle anderen lesen.

| Ressource | Lese-Endpunkte | Geltungsbereich |
| --- | --- | --- |
| Benutzer | `GET /v1/users`, `GET /v1/users/{user_id}`, `GET /v1/users/{user_id}/memberships` | `users:read` |
| Alle Mitgliedschaften der Organisation | `GET /v1/memberships` | `users:read` |
| Kreise | `GET /v1/circles`, `GET /v1/circles/{circle_id}`, `GET /v1/circles/{circle_id}/members` | `circles:read` |
| Rollen | `GET /v1/roles`, `GET /v1/roles/{role_id}`, `GET /v1/roles/{role_id}/members` | `roles:read` |
| Rollenvorlagen | `GET /v1/role-templates`, `GET /v1/role-templates/{role_template_id}` | `roles:read` |
| Definitionen benutzerdefinierter Felder | `GET /v1/custom-fields` | `roles:read`, `circles:read` oder `users:read`, je nach angefragtem `entity_type` |
| Meetings | `GET /v1/meetings`, `GET /v1/meetings/{meeting_id}` | `meetings:read` |
| Projekte | `GET /v1/projects`, `GET /v1/projects/{project_id}`, `GET /v1/projects/{project_id}/comments` | `projects:read` |
| Abschnitte | `GET /v1/sections`, `GET /v1/sections/{section_id}` | `projects:read` |
| Labels | `GET /v1/labels`, `GET /v1/labels/{label_id}` | `projects:read` |
| Aufgaben | `GET /v1/tasks`, `GET /v1/tasks/{task_id}`, `GET /v1/tasks/{task_id}/comments` | `tasks:read` |
| Ziele | `GET /v1/goals`, `GET /v1/goals/{goal_id}`, `GET /v1/goals/{goal_id}/key-results`, `GET /v1/goals/{goal_id}/comments` | `goals:read` |
| Zeiträume | `GET /v1/time-periods`, `GET /v1/time-periods/{time_period_id}` | `goals:read` |
| Arbeitsvereinbarungen | `GET /v1/documents`, `GET /v1/documents/{document_id}`, `GET /v1/documents/{document_id}/content`, `GET /v1/documents/{document_id}/comments` | `documents:read` |
| Tensions | `GET /v1/tensions`, `GET /v1/tensions/{tension_id}` | `tensions:read` |
| Aktivitätsprotokoll | `GET /v1/audit-logs` | `audit_log:read` |
| Ihre eigene Identität | `GET /v1/whoami` | keiner |

Zwei Zuordnungen sind bemerkenswert, weil sie dem Pfadnamen nicht folgen: Abschnitte und Labels werden mit `projects:read` gelesen, Zeiträume mit `goals:read`.

Der Text einer Arbeitsvereinbarung ist eine eigene Unterressource, `GET /v1/documents/{document_id}/content`, eine Liste von Dokumenten trägt also nie eine Seite voller Volltexte. Sie liefert die Fassung, die das Konto des Schlüssels im Produkt sieht: die veröffentlichte, oder den neuesten Entwurf, solange nichts veröffentlicht wurde. Eine Arbeitsvereinbarung, die es gibt, die aber keinen Text enthält, antwortet mit `200` und leerem Text statt mit `404`.

`GET /v1/memberships` liefert alle Mitgliedschaften der Organisation, eine Seite pro Aufruf: ein vollständiger Abgleich der Struktur kostet also so viele Aufrufe, wie es Seiten gibt, und nicht einen Aufruf pro Mitglied. Jede Zeile ist genau eine Zeile von `GET /v1/users/{user_id}/memberships`, mit der `user_id` des Mitglieds. Übergeben Sie `?updated_since=`, um nur die Mitgliedschaften zu erhalten, die seit einem bestimmten Zeitpunkt hinzugefügt oder bearbeitet wurden; ein solcher Durchlauf kann eine entfernte Mitgliedschaft nicht sehen, gleichen Sie also von Zeit zu Zeit mit einem vollständigen Durchlauf ab.

`GET /v1/audit-logs` ist das Aktivitätsprotokoll der Organisation, das Neueste zuerst: Anmeldungen (erfolgreiche und abgelehnte), Veröffentlichungen, Kommentare sowie Beitritte zu und Austritte aus Gruppen. Da es alle Mitglieder abdeckt, muss das Konto hinter dem Schlüssel Administrator der Organisation sein, und der Schlüssel muss zusätzlich `audit_log:read` tragen. Übergeben Sie `?occurred_after=`, um nur zu lesen, was seit einem bestimmten Zeitpunkt geschehen ist.

Mehrere Listen akzeptieren außerdem Filter, zum Beispiel die Rollen, die ein Mitglied innehat, die Kreise, denen ein Mitglied angehört, die aus einer Rollenvorlage erstellten Rollen oder die Tensions auf der Tagesordnung eines Meetings. Die Referenzdokumentation listet jeden Filter, den ein Endpunkt akzeptiert.

### Felder, die eine Erläuterung brauchen

Mehrere Felder tragen mehr Bedeutung, als ihr Name vermuten lässt.

- **`last_activity_at`, an einem Mitglied.** `GET /v1/users`, `GET /v1/users/{user_id}` und die Antwort von `PATCH /v1/users/{user_id}` veröffentlichen die zuletzt erfasste Aktivität des Mitglieds. Es ist ein Aktivitätssignal, keine Anmeldung: Es wird erfasst, wenn ein authentifiziertes Mitglied das Produkt nutzt, und etwa einmal pro Stunde aktualisiert statt bei jeder Anfrage. Lesen Sie es also als „kürzlich aktiv“ und niemals als Authentifizierungsereignis. Es ist `null`, wenn nie eine Aktivität erfasst wurde, und bei einem anonymisierten Mitglied. Aufrufe, die Sie mit Ihrem eigenen Schlüssel machen, erfassen Aktivität für den technischen Benutzer hinter dem Schlüssel, nie für die Mitglieder, die er liest oder ändert.
- **`assigned_at` und `updated_at`, an einer Zuordnung.** Jede Zeile von `GET /v1/roles/{role_id}/members`, `GET /v1/circles/{circle_id}/members` und `GET /v1/users/{user_id}/memberships` sowie jede Mitgliedszeile, die `GET /v1/roles` und `GET /v1/roles/{role_id}` mit `?include=members` zurückgeben, trägt beide. `assigned_at` ist der Zeitpunkt, an dem die Zuordnung begann: bei einer aus Holaspirit migrierten Organisation das Datum, das die Zuordnung dort hatte, und nicht das Datum der Migration. Zeilen, deren Quelle kein solches Datum trug, fallen auf den Zeitpunkt ihres Importlaufs zurück – daran erkennen Sie sie, denn sie teilen sich alle einen Wert. `updated_at` ist der Zeitpunkt, an dem die Zeile zuletzt geschrieben wurde: ihre Bezeichnung, ihre Entscheider- und Administrator-Kennzeichen, ein Weggang oder eine Rückkehr. Es bewegt sich nicht, wenn sich eine Allokation ändert, es ist also kein Strom von Zuordnungsänderungen, und keines der beiden Felder ist eine Zuordnungshistorie.
- **`options`, an der Definition eines Mitglieds-Zusatzfelds.** `GET /v1/custom-fields?entity_type=user` veröffentlicht den vollständigen Optionskatalog jedes Felds mit Einfach- und Mehrfachauswahl, wo es zuvor nichts veröffentlichte: jede konfigurierte Option, auch die, die noch kein Mitglied trägt, als Paar `{value, label}`. `value` ist die Options-Id, die `PATCH /v1/users/{user_id}/custom-fields` annimmt; `label` ist das, als was der Wert eines Mitglieds meist zu lesen ist. Ordnen Sie den Wert eines Mitglieds daher zuerst über `label` zu und über `value`, wenn das fehlschlägt, und rechnen Sie damit, dass zwei Optionen desselben Felds dieselbe Bezeichnung tragen können. Die Optionen kommen nach Bezeichnung sortiert, bis zu 5.000 pro Feld, und `options_truncated` an derselben Definition sagt, ob diese Grenze gegriffen hat. Ein Auswahlfeld ohne konfigurierte Option meldet eine leere Liste; `null` bedeutet weiterhin, dass der Feldtyp überhaupt keine Optionsliste hat. Die Werte aus `GET /v1/users?include=custom_fields` sind unverändert.

- **`source_template_id`, an einer Rolle.** Die Rollenvorlage, aus der die Rolle erstellt wurde, die Id, die `GET /v1/role-templates` zurückgibt, oder `null`, wenn die Rolle ohne Vorlage erstellt wurde. Eine Rollenvorlage ist eine wiederverwendbare Rollendefinition, etwa „Sekretär“. Eine eingeladene Kopie einer Rolle liest sich als `null`: ihre `source_role_id` führt zu der Rolle, die die Vorlage trägt. Wurde Ihre Organisation aus Holaspirit migriert, haben sich die Vorlagen-Ids mit der Migration geändert, lesen Sie sie also erneut aus `GET /v1/role-templates`.
- **Die persönlichen Felder eines Mitglieds.** `email`, `phone`, `last_activity_at` und die Werte der benutzerdefinierten Felder erreichen Ihren Schlüssel so, wie sie den technischen Benutzer im Produkt erreichen. Ein Administrator liest sie alle. Ein Mitglied liest sie alle bis auf eine E-Mail-Adresse, die ihr Inhaber ausgeblendet hat. Ein Gast, der mit diesem Mitglied keine aktive Gruppe teilt, liest keines davon. Ein zurückgehaltenes Feld ist `null`. Der technische Benutzer hinter einem Schlüssel ist meist kein Administrator, rechnen Sie also damit, dass `email` bei Mitgliedern, die sie ausgeblendet haben, `null` ist.
- **`priority`, an einer Tension.** Sie kann `NONE` sein, was bedeutet, dass niemand eine gesetzt hat, und das ist es, was eine ohne Priorität erstellte Tension jetzt erfasst. Behandeln Sie einen Wert, den Sie nicht kennen, als künftigen Wert und nicht als Fehler.

**Der Typwechsel eines Auswahlfelds verschiebt seine Werte zwischen zwei Slots.** Ein Feld, das ein Administrator von Einfach- auf Mehrfachauswahl umstellt, wird nicht mehr als `value`, ein einzelner Wert, gelesen, sondern als `values`, eine Liste – und ein Schreibvorgang muss denselben Slot verwenden. Der falsche wird mit einem `422 INVALID_CUSTOM_FIELD_VALUE` abgelehnt, dessen Meldung den zu verwendenden Slot nennt; still umgewandelt wird nie.

### Die neun Schreiboperationen

| Operation | Geltungsbereich | Was Sie wissen müssen |
| --- | --- | --- |
| `POST /v1/tasks` | `tasks:write` | Erzeugt bei jedem Aufruf eine Aufgabe, ein blindes Wiederholen ist also nicht sicher. |
| `POST /v1/tensions` | `tensions:write` | Erzeugt eine Tension. Eine weggelassene `priority` erfasst `NONE`. |
| `PATCH /v1/tensions/{tension_id}` | `tensions:write` | Bearbeitet eine Tension. |
| `PATCH /v1/tensions/{tension_id}/status` | `tensions:write` | Bewegt eine Tension durch ihre Status. |
| `DELETE /v1/tensions/{tension_id}` | `tensions:delete` | **Eine harte Löschung ohne Rückholmöglichkeit.** Siehe unten. |
| `PATCH /v1/users/{user_id}` | `users:write` | Bearbeitet ein Mitglied. |
| `PATCH /v1/users/{user_id}/custom-fields` | `users:write` | Setzt Werte benutzerdefinierter Felder an einem Mitglied. |
| `PATCH /v1/circles/{circle_id}/custom-fields` | `circles:write` | Setzt Werte benutzerdefinierter Felder an einem Kreis. |
| `PATCH /v1/roles/{role_id}/custom-fields` | `roles:write` | Setzt Werte benutzerdefinierter Felder an einer Rolle. |

**Das Löschen einer Tension ist unwiderruflich.** Die Tension und ihre Verknüpfungen sind weg, und kein Lesezugriff gibt sie danach zurück. Die Operation liegt hinter ihrem eigenen Geltungsbereich `tensions:delete`, den `tensions:write` bewusst nicht mitgewährt, damit diese Fähigkeit ausdrücklich erteilt und nicht geerbt wird. Eine Tension ist außerdem nur von ihrem Ersteller löschbar: ein Schlüssel kann die Tensions löschen, die sein eigener technischer Benutzer erstellt hat, und nichts anderes.

## Die Geltungsbereiche

Ein Administrator wählt die Geltungsbereiche bei der Erstellung des Schlüssels. Sechzehn sind definiert:

- Ohne Modulbindung: `users:read`, `users:write`, `audit_log:read`
- Modul Struktur: `roles:read`, `roles:write`, `circles:read`, `circles:write`, `tensions:read`, `tensions:write`, `tensions:delete`, `documents:read`
- Modul Ziele: `goals:read`
- Modul Projekte: `projects:read`, `tasks:read`, `tasks:write`
- Modul Meetings: `meetings:read`

Sie erscheinen nicht alle gleichzeitig. Ein Geltungsbereich wird nur angeboten, wenn das Modul, aus dem er liest, in der Organisation aktiv ist: `tasks:read` fehlt also, wenn Projekte aus ist, und der ganze Struktur-Block fehlt, wenn Struktur aus ist. Fragen Sie den Administrator, welche Module die Organisation betreibt, bevor Sie gegen einen Geltungsbereich entwickeln.

`audit_log:read` liest das Aktivitätsprotokoll, `GET /v1/audit-logs`. Er genügt allein nicht: das Konto hinter dem Schlüssel muss außerdem Administrator der Organisation sein, sonst antwortet die Route mit `403 FORBIDDEN_UPSTREAM`.

## Ihre erste Anfrage

`GET /v1/whoami` braucht keinen Geltungsbereich und dient gleichzeitig als Prüfung der Zugangsdaten. Er gibt den Partnernamen zurück, unter dem Ihr Schlüssel ausgegeben wurde, die Organisation, zu der er gehört, die Geltungsbereiche, die er trägt, `user_id`, das Mitglied, als das Ihr Schlüssel handelt, und `created_by_user_id`, den Administrator, der den Schlüssel erstellt hat (`null` bei einem älteren Schlüssel oder einem, den ein Talkspirit-Operator erstellt hat). Wird ein Aufruf abgelehnt oder liefert er weniger als erwartet, ist `user_id` das Konto, das Sie sich ansehen sollten.

```
curl -H "Authorization: Bearer <Ihr API-Schlüssel>" \
     https://partner-api.talkspirit.com/v1/whoami
```

Ein `200` bedeutet, dass der Schlüssel selbst gültig ist, und sagt Ihnen, was er trägt. Es beweist nicht, dass die Organisation das Konto dahinter noch akzeptiert: `whoami` prüft allein den Schlüssel und ruft Talkspirit nie auf, antwortet also weiter mit `200`, während jeder Endpunkt, der einen Geltungsbereich verlangt, mit `403` antwortet. Alles andere steht in der Fehlertabelle unten.

## Konventionen, nach denen Sie entwickeln sollten

- **Versionierung.** Alles liegt unter `/v1`. Eine brechende Änderung erscheint unter einem neuen Präfix, statt dieses zu verändern.
- **Paginierung.** Listen-Endpunkte nehmen `?cursor=` und `?limit=` und antworten mit einem `data`-Array plus einem `pagination`-Objekt mit `next_cursor` und `has_more`. Der Standardwert für `limit` ist überall 50. Das Maximum ist 199, mit zwei Ausnahmen: 100 bei `GET /v1/users` und 50 bei `GET /v1/meetings`. Der Cursor ist opak: geben Sie ihn unverändert zurück. Es gibt keinen Parameter `page`, `skip` oder `offset`, in keiner Schreibweise.
- **Feld-Erweiterung.** Antworten tragen einen minimalen Satz an Feldern. Fordern Sie mehr mit `?include=` an, einer kommagetrennten Liste, die an jedem Endpunkt dokumentiert ist. Ein Feld, das Sie nicht angefordert haben, fehlt in der Antwort, statt `null` zu sein: eine fehlende Liste bedeutet also „nicht angefordert" und `[]` bedeutet „angefordert, und es gibt keine".
- **Nur Server zu Server.** Cross-Origin-Anfragen aus einem Browser werden nicht unterstützt.
- **Wiederholungen.** Jedes `GET` kann gefahrlos wiederholt werden. Die Schreiboperationen sind nicht idempotent: `POST /v1/tasks` und `POST /v1/tensions` erzeugen bei jedem Aufruf einen Datensatz, deduplizieren Sie also auf Ihrer Seite, statt blind zu wiederholen.

## Was die Fehler bedeuten

| Status und Code | Was passiert ist |
| --- | --- |
| `401 AUTHENTICATION_REQUIRED` | Kein `Authorization`-Header an der Anfrage. |
| `401 AUTHENTICATION_INVALID` | Der Schlüssel ist unbekannt oder widerrufen, oder die Organisation hat keinen API-Zugang. Die Meldung unterscheidet beides. |
| `403 FORBIDDEN_SCOPE` | Der Schlüssel ist gültig, aber der von diesem Endpunkt verlangte Geltungsbereich wurde ihm nicht erteilt. |
| `403 FORBIDDEN_UPSTREAM` | Der Schlüssel hat den Geltungsbereich, aber das Konto dahinter darf diese Änderung an einem Mitglied nicht vornehmen oder ist für das Aktivitätsprotokoll kein Administrator. Ein Administrator muss es erteilen. |
| `403 FORBIDDEN_SIGN_IN_DISABLED`, `FORBIDDEN_MODULE_DISABLED`, `FORBIDDEN_ACCOUNT_SUSPENDED`, `FORBIDDEN_ACCOUNT_UNKNOWN` oder `FORBIDDEN_ACCESS_DENIED` | Der Geltungsbereich ist da, aber die Organisation weist das Konto hinter dem Schlüssel ab: seine Anmeldemethode wurde abgeschaltet, das Modul, das dieser Endpunkt liest, ist aus, das Konto ist gesperrt, es existiert in der Organisation nicht mehr, oder es darf das Angefragte nicht sehen. Verzweigen Sie über den `code`. |
| `400 INVALID_CURSOR` oder `INVALID_INCLUDE` | Das Paginierungstoken ist fehlerhaft oder über seiner Grenze, oder ein `include`-Token akzeptiert dieser Endpunkt nicht. |
| `409 ACTIVITY_LOG_DISABLED` | Die Organisation hat ihr Aktivitätsprotokoll nie eingeschaltet. Ein Administrator ändert diese Einstellung; ein erneuter Versuch hilft nicht. |
| `429 RATE_LIMIT_EXCEEDED` oder `UPSTREAM_RATE_LIMITED` | Zu viele Anfragen für diesen Schlüssel, oder Talkspirit selbst begrenzt die Anfragen hinter der API. Warten Sie die Sekundenzahl aus dem `Retry-After`-Header ab. |
| `502 UPSTREAM_ERROR` oder `UPSTREAM_AUTH_ERROR` | Ein Dienst, von dem dieser Endpunkt abhängt, ist ausgefallen oder hat unerwartet geantwortet. Nichts hat sich geändert, wiederholen Sie mit wachsendem Abstand. |
| `504` | Die Anfrage hat das Zeitlimit des Servers überschritten und wurde abgebrochen. Ob eine Schreiboperation gewirkt hat, ist offen: wiederholen Sie sie nur, wenn das gefahrlos ist. |

Eine Ablehnung durch die Organisation, die fünf `403`-Codes in der Tabelle, ist endgültig: weder ein erneuter Versuch noch ein neuer Schlüssel hebt sie auf, ein Administrator der Organisation muss handeln. Bis zur Vertragsversion 0.49.0 kamen diese Ablehnungen und die Ratenbegrenzung von Talkspirit beide als `502` an, was sich wie eine vorübergehende Störung liest. Eine Integration, die auf dieses alte Verhalten geschrieben wurde, wiederholt eine Ablehnung endlos und ignoriert `Retry-After` bei einer Begrenzung: prüfen Sie Ihre anhand der Tabelle oben.

Fehlerkörper sagen nie, ob ein Schlüssel existiert oder ob der Geltungsbereich gescheitert ist, versuchen Sie also nicht, daraus einen Zustand abzuleiten.

## Wie geht es weiter?

- [API-Token als Administrator verwalten](../integrations/manage-api-tokens-as-an-admin)
- [Wie füge ich eine Integration hinzu oder entferne sie?](../integrations/enable-a-cloud-file-picker)
