snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
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 3s

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,176 @@
---
title: Daten über die API importieren
description: Wann und wie Sie die APIs von Twenty für groß angelegte Datenimporte verwenden.
---
## Übersicht
Twenty stellt sowohl **GraphQL**- als auch **REST-APIs** für den programmatischen Datenimport bereit. Verwenden Sie die API, wenn der CSV-Import für Ihr Datenvolumen nicht praktikabel ist oder wenn Sie automatisierte, wiederkehrende Importe benötigen.
## Wann Sie den API-Import verwenden sollten
| Szenario | Empfohlene Methode |
| ------------------------------------ | --------------------------------- |
| Unter 10.000 Datensätzen | CSV-Import |
| 10.000–50.000 Datensätze | CSV-Import (in Dateien aufteilen) |
| **Über 50.000 Datensätze** | **API-Import** |
| Einmalige Migration | Beides (je nach Volumen) |
| **Wiederkehrende Importe** | **API-Import** |
| **Echtzeitsynchronisierung** | **API-Import** |
| **Integration mit anderen Systemen** | **API-Import** |
<Note>Für Datensätze im Bereich von Hunderttausenden ist die API deutlich schneller und zuverlässiger als mehrere CSV-Importe.</Note>
## API-Rate-Limits
Twenty setzt Rate-Limits durch, um die Systemstabilität zu gewährleisten:
| Limit | Wert |
| ------------------------------- | ------------------------ |
| **Anfragen pro Minute** | 100 |
| **Datensätze pro Batch-Aufruf** | 60 |
| **Maximaler Durchsatz** | ~6.000 Datensätze/Minute |
<Warning>
**Planen Sie Ihren Import unter Berücksichtigung dieser Limits.**
Für 100.000 Datensätze bei maximalem Durchsatz rechnen Sie mit etwa 17 Minuten Importzeit. Fügen Sie Pufferzeit für Fehlerbehandlung und Wiederholungen hinzu.
</Warning>
## Erste Schritte
### Schritt 1: API-Schlüssel abrufen
1. Gehen Sie zu **Einstellungen → Entwickler**
2. Klicken Sie auf **+ API-Schlüssel erstellen**
3. Geben Sie Ihrem API-Schlüssel einen aussagekräftigen Namen
4. Kopieren Sie den API-Schlüssel sofort (er wird nicht erneut angezeigt)
5. Bewahren Sie ihn sicher auf
<Warning>
**Halten Sie Ihren API-Schlüssel geheim.**
Jeder, der Ihren API-Schlüssel besitzt, kann auf die Daten Ihres Arbeitsbereichs zugreifen und sie ändern. Checken Sie ihn niemals in Code-Repositories ein und geben Sie ihn nicht öffentlich weiter.
</Warning>
### Schritt 2: Wählen Sie Ihre API
Twenty unterstützt zwei API-Typen:
| API | Am besten geeignet für | Dokumentation |
| ----------- | ---------------------------------------------------------------- | ------------------------------------------- |
| **GraphQL** | Flexible Abfragen, Abruf verknüpfter Daten, komplexe Operationen | [API-Dokumentation](/l/de/developers/extend/api) |
| **REST** | Einfache CRUD-Operationen, vertraute REST-Muster | [API-Dokumentation](/l/de/developers/extend/api) |
Beide APIs unterstützen:
* Erstellen, Lesen, Aktualisieren und Löschen von Datensätzen
* **Batch-Operationen** — bis zu 60 Datensätze pro Aufruf erstellen oder aktualisieren
**Verwenden Sie für Importe Batch-Operationen**, um den Durchsatz innerhalb der Rate-Limits zu maximieren.
### Schritt 3: Importreihenfolge planen
Wie bei CSV-Importen ist die **Reihenfolge bei Relationen wichtig**:
1. Zuerst **Unternehmen** (keine Abhängigkeiten)
2. **Personen** an zweiter Stelle (können mit Unternehmen verknüpft werden)
3. **Opportunities** an dritter Stelle (können mit Unternehmen und Personen verknüpft werden)
4. **Aufgaben/Notizen** (können mit allen oben genannten verknüpft werden)
5. **Benutzerdefinierte Objekte** (gemäß ihren Abhängigkeiten)
## Beste Praktiken
### Anfragen bündeln
* Senden Sie Datensätze nicht einzeln
* Fassen Sie bis zu **60 Datensätze pro API-Aufruf** zusammen
* Dies maximiert den Durchsatz innerhalb der Rate-Limits
### Mit Rate-Limits umgehen
* Implementieren Sie Verzögerungen zwischen den Anfragen (mindestens 600 ms für dauerhafte Importe)
* Verwenden Sie exponentielles Backoff, wenn Sie an Grenzen stoßen
* Überwachen Sie 429-Antworten (Too Many Requests)
### Daten zuerst validieren
* Bereinigen und validieren Sie Ihre Daten vor dem Import
* Prüfen Sie, ob Pflichtfelder ausgefüllt sind
* Überprüfen Sie, ob die Formate den Anforderungen von Twenty entsprechen (siehe [Feldzuordnung](/l/de/user-guide/data-migration/capabilities/field-mapping))
### Alles protokollieren
* Protokollieren Sie jeden importierten Datensatz (einschließlich IDs)
* Protokollieren Sie Fehler mit vollem Kontext
* Dies hilft bei der Fehleranalyse und der Überprüfung des Abschlusses
### Zuerst testen
* Testen Sie mit einer kleinen Stichprobe (10–20 Datensätze)
* Überprüfen Sie, ob die Daten in Twenty korrekt angezeigt werden
* Führen Sie anschließend den vollständigen Import aus
### Upsert verwenden, um Duplikate zu vermeiden
Die GraphQL-API unterstützt **Batch-Upsert** — aktualisieren, wenn der Datensatz existiert, ansonsten erstellen. Dies verhindert Duplikate beim erneuten Ausführen von Importen.
## Objekt- und Feldnamen finden
So sehen Sie verfügbare Objekte und Felder:
1. Gehen Sie zu **Einstellungen → API und Webhooks**
2. Durchsuchen Sie die **Metadaten-API**
3. Sehen Sie alle Standard- und benutzerdefinierten Objekte mit ihren Feldern
Die Dokumentation zeigt alle Standard- und benutzerdefinierten Objekte, deren Felder und die erwarteten Datentypen.
## Professionelle Dienstleistungen
Bei komplexen API-Migrationen können unsere Partner helfen:
| Dienst | Enthalten |
| ------------------------------------ | ------------------------------------------------- |
| **Datenmodell-Design** | Entwerfen Sie Ihre optimale Datenstruktur |
| **Migrationsskripte** | Schreiben und Ausführen der Importskripte |
| **Daten-Transformation** | Bearbeitung komplexer Zuordnungen und Bereinigung |
| **Validierung & Qualitätssicherung** | Überprüfen, dass die Migration abgeschlossen ist |
**Am besten geeignet für:**
* Migrationen mit über 100.000 Datensätzen
* Komplexe Daten-Transformationen
* Straffe Zeitpläne
* Teams ohne Entwicklerressourcen
Kontaktieren Sie uns unter [contact@twenty.com](mailto:contact@twenty.com) oder informieren Sie sich über unsere [Implementierungsservices](/l/de/user-guide/getting-started/capabilities/implementation-services).
## FAQ
<AccordionGroup>
<Accordion title="Was ist der Unterschied zwischen GraphQL und REST?">
Mit GraphQL können Sie in einer einzelnen Abfrage genau die Daten anfordern, die Sie benötigen, und es eignet sich besser für komplexe Operationen. REST verwendet standardmäßige HTTP-Methoden (GET, POST, PUT, DELETE) und ist möglicherweise vertrauter, wenn Sie mit herkömmlichen APIs gearbeitet haben.
</Accordion>
<Accordion title="Kann ich vorhandene Datensätze über die API aktualisieren?">
Ja! Verwenden Sie Update-Mutationen (GraphQL) oder PUT/PATCH-Anfragen (REST) mit der `id` des Datensatzes.
</Accordion>
<Accordion title="Wie gehe ich mit Duplikaten um?">
Fragen Sie zunächst nach vorhandenen Datensätzen mit eindeutigen Kennungen (E-Mail, Domain). Aktualisieren, wenn vorhanden; erstellen, wenn nicht.
</Accordion>
<Accordion title="Kann ich Datensätze über die API löschen?">
Ja, verwenden Sie Lösch-Mutationen (GraphQL) oder DELETE-Anfragen (REST).
</Accordion>
<Accordion title="Gibt es ein SDK für Python oder Node.js?">
Derzeit nicht, aber beide APIs funktionieren mit jedem HTTP-Client in jeder Sprache.
</Accordion>
</AccordionGroup>
## API-Dokumentation
Für vollständige Implementierungsdetails, Codebeispiele und Schema-Referenz:
* [API-Dokumentation](/l/de/developers/extend/api)