Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s
148 lines
5.7 KiB
Plaintext
148 lines
5.7 KiB
Plaintext
---
|
|
title: APIs
|
|
description: Abfragen und ändern Sie Ihre CRM-Daten programmatisch mit REST oder GraphQL.
|
|
---
|
|
|
|
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
|
|
|
|
Twenty wurde so entwickelt, dass es entwicklerfreundlich ist und leistungsstarke APIs bietet, die sich an Ihr individuelles Datenmodell anpassen. Wir bieten vier verschiedene API-Typen, um unterschiedlichen Integrationsanforderungen gerecht zu werden.
|
|
|
|
## Entwickler-Erst-Ansatz
|
|
|
|
Twenty generiert APIs speziell für Ihr Datenmodell:
|
|
|
|
* **Keine langen IDs erforderlich**: Verwenden Sie Ihre Objekt- und Feldnamen direkt in Endpunkten
|
|
* **Standard- und benutzerdefinierte Objekte werden gleich behandelt**: Ihre benutzerdefinierten Objekte erhalten dieselbe API-Behandlung wie integrierte
|
|
* **Dedizierte Endpunkte**: Jedes Objekt und Feld erhält seinen eigenen API-Endpunkt
|
|
* **Benutzerdefinierte Dokumentation**: Speziell für das Datenmodell Ihres Arbeitsplatzes generiert
|
|
|
|
<Note>
|
|
Ihre personalisierte API-Dokumentation ist nach dem Erstellen eines API-Schlüssels unter **Einstellungen → API & Webhooks** verfügbar. Da Twenty APIs erzeugt, die Ihrem benutzerdefinierten Datenmodell entsprechen, ist die Dokumentation für Ihren Arbeitsbereich einzigartig.
|
|
</Note>
|
|
|
|
## Die beiden API-Typen
|
|
|
|
### Core API
|
|
|
|
Zugriff auf `/rest/` oder `/graphql/`
|
|
|
|
Arbeiten Sie mit Ihren tatsächlichen **Datensätzen** (den Daten):
|
|
|
|
* Personen, Unternehmen, Opportunities usw. erstellen, lesen, aktualisieren und löschen
|
|
* Daten abfragen und filtern
|
|
* Verwalten von Datensatzbeziehungen
|
|
|
|
### Metadata API
|
|
|
|
Zugriff auf `/rest/metadata/` oder `/metadata/`
|
|
|
|
Verwalten Sie Ihren **Arbeitsbereich und Ihr Datenmodell**:
|
|
|
|
* Objekte und Felder erstellen, ändern oder löschen
|
|
* Konfigurieren der Arbeitsbereichseinstellungen
|
|
* Beziehungen zwischen Objekten definieren
|
|
|
|
## REST vs GraphQL
|
|
|
|
Sowohl Core- als auch Metadata-APIs sind in REST- und GraphQL-Formaten verfügbar:
|
|
|
|
| Format | Verfügbare Vorgänge |
|
|
| ----------- | ------------------------------------------------------------------- |
|
|
| **REST** | CRUD, Batch-Vorgänge, Upserts |
|
|
| **GraphQL** | Dasselbe plus **Batch-Upserts**, Beziehungsabfragen in einem Aufruf |
|
|
|
|
Wählen Sie je nach Bedarf — beide Formate greifen auf dieselben Daten zu.
|
|
|
|
## API-Endpunkte
|
|
|
|
| Umgebung | Basis-URL |
|
|
| ----------------- | ------------------------- |
|
|
| **Cloud** | `https://api.twenty.com/` |
|
|
| **Selbsthosting** | `https://{your-domain}/` |
|
|
|
|
## Authentifizierung
|
|
|
|
Jede API-Anfrage erfordert einen API-Schlüssel im Header:
|
|
|
|
```
|
|
Authorization: Bearer YOUR_API_KEY
|
|
```
|
|
|
|
### API-Schlüssel erstellen
|
|
|
|
1. Gehen Sie zu **Einstellungen → APIs & Webhooks**
|
|
2. Klicken Sie auf **+ Schlüssel erstellen**
|
|
3. Konfigurieren:
|
|
* **Name**: Beschreibender Name für den Schlüssel
|
|
* **Ablaufdatum**: Wann der Schlüssel abläuft
|
|
4. Klicken Sie auf **Speichern**
|
|
5. **Sofort kopieren** — der Schlüssel wird nur einmal angezeigt
|
|
|
|
<VimeoEmbed videoId="928786722" title="API-Schlüssel erstellen" />
|
|
|
|
<Warning>
|
|
Ihr API-Schlüssel gewährt Zugriff auf sensible Daten. Teilen Sie ihn nicht mit nicht vertrauenswürdigen Diensten. Wenn er kompromittiert wurde, deaktivieren Sie ihn umgehend und erstellen Sie einen neuen.
|
|
</Warning>
|
|
|
|
### Einem API-Schlüssel eine Rolle zuweisen
|
|
|
|
Für mehr Sicherheit weisen Sie eine spezifische Rolle zu, um den Zugriff zu beschränken:
|
|
|
|
1. Gehen Sie zu **Einstellungen → Mitglieder → Rollen**
|
|
2. Klicken Sie auf die Rolle, die Sie zuweisen möchten
|
|
3. Öffnen Sie den Tab **Zuweisungen**
|
|
4. Unter **API-Schlüssel** auf **+ API-Schlüssel zuweisen** klicken
|
|
5. Wählen Sie den API-Schlüssel aus
|
|
|
|
Der Schlüssel übernimmt die Berechtigungen dieser Rolle. Siehe [Berechtigungen](/l/de/user-guide/permissions-access/capabilities/permissions) für Details.
|
|
|
|
### API-Schlüssel verwalten
|
|
|
|
**Neu generieren**: Einstellungen → APIs & Webhooks → Schlüssel anklicken → **Neu generieren**
|
|
|
|
**Löschen**: Einstellungen → APIs & Webhooks → Schlüssel anklicken → **Löschen**
|
|
|
|
## API-Playground
|
|
|
|
Testen Sie Ihre APIs direkt im Browser mit unserem integrierten Playground — verfügbar für **REST** und **GraphQL**.
|
|
|
|
### Auf den Playground zugreifen
|
|
|
|
1. Gehen Sie zu **Einstellungen → APIs & Webhooks**
|
|
2. API-Schlüssel erstellen (erforderlich)
|
|
3. Klicken Sie auf **REST API** oder **GraphQL API**, um den Playground zu öffnen
|
|
|
|
### Was Sie erhalten
|
|
|
|
* **Interaktive Dokumentation**: Für Ihr spezifisches Datenmodell generiert
|
|
* **Live-Tests**: Führen Sie echte API-Aufrufe gegen Ihren Arbeitsbereich aus
|
|
* **Schema-Explorer**: Verfügbare Objekte, Felder und Beziehungen durchsuchen
|
|
* **Request-Builder**: Abfragen mit Autovervollständigung erstellen
|
|
|
|
Der Playground spiegelt Ihre benutzerdefinierten Objekte und Felder wider, sodass die Dokumentation für Ihren Arbeitsbereich stets korrekt ist.
|
|
|
|
## Batch-Vorgänge
|
|
|
|
Sowohl REST als auch GraphQL unterstützen Batch-Vorgänge:
|
|
|
|
* **Batch-Größe**: Bis zu 60 Datensätze pro Anfrage
|
|
* **Vorgänge**: Mehrere Datensätze erstellen, aktualisieren, löschen
|
|
|
|
**GraphQL-Exklusivfunktionen:**
|
|
|
|
* **Batch-Upsert**: Erstellen oder Aktualisieren in einem Aufruf
|
|
* Verwenden Sie Pluralobjektnamen (z. B. `CreateCompanies` statt `CreateCompany`)
|
|
|
|
## Rate Limits
|
|
|
|
API-Anfragen werden gedrosselt, um die Stabilität der Plattform zu gewährleisten:
|
|
|
|
| Limit | Wert |
|
|
| --------------- | ------------------------ |
|
|
| **Anfragen** | 100 Aufrufe pro Minute |
|
|
| **Batch-Größe** | 60 Datensätze pro Aufruf |
|
|
|
|
<Tip>
|
|
Verwenden Sie Batch-Vorgänge, um den Durchsatz zu maximieren — verarbeiten Sie bis zu 60 Datensätze in einem einzelnen API-Aufruf, statt einzelne Anfragen zu senden.
|
|
</Tip>
|