⚡ You're viewing a live demo of ChimerAI. Data resets daily at midnight UTC.Get the CLI →

Airtable Integration

🎥 Video Tutorial: Watch on YouTube

Lese, erstelle, aktualisiere und lösche Airtable-Records direkt aus deiner ChimerAI-App — ohne Python-Service, rein im Next.js-Layer über die Airtable REST API.

EigenschaftWert
Feature-Keyairtable
TierEnterprise Pro
Abhängigkeitchimerai add integration
Env-VariablenAIRTABLE_API_KEY, AIRTABLE_BASE_ID

Installation

chimerai add integration   # Landing Page + Shell
chimerai add airtable      # Airtable Client-Lib + API-Route + Demo-Page

Generierte Dateien:

lib/airtable-client.ts                          ← listRecords, createRecord, updateRecord, deleteRecord
app/api/integrations/airtable/route.ts          ← POST-Endpoint (list / create / update / delete)
app/api/integrations/airtable/status/route.ts   ← GET Health-Check (prüft ob Key + Base ID vorhanden)
app/dashboard/integrations/airtable/page.tsx    ← Demo-UI

Airtable Setup

1. Personal Access Token erstellen

  1. In Airtable einloggen → oben rechts auf den Account-Namen → Developer Hub (oder direkt airtable.com/create/tokens)
  2. Create new token
  3. Name vergeben (z.B. chimerai-integration)
  4. Scopes hinzufügen: mindestens data.records:read und data.records:write
  5. Unter Access die gewünschte(n) Base(s) auswählen, auf die der Token zugreifen darf
  6. Create token → den angezeigten Wert (Format pat...) sofort kopieren, er wird danach nicht mehr angezeigt

2. Base ID finden

Öffne die Base im Browser und schau in die URL:

https://airtable.com/appXXXXXXXXXXXXXX/...
                     ^^^^^^^^^^^^^^^^^
                     Base ID

Alternativ: Base öffnen → Help → API documentation → die Base ID steht oben auf der Seite.

3. Environment Variables setzen

# .env
AIRTABLE_API_KEY=pat...
AIRTABLE_BASE_ID=appXXXXXXXXXXXXXX

Sicherheit: Token niemals ins Git-Repository committen. Nur die tatsächlich benötigten Scopes vergeben (kein data.records:write, wenn nur gelesen werden muss).


API-Endpunkt

POST /api/integrations/airtable

Alle Operationen über einen einzigen Endpunkt, gesteuert via operation-Feld. baseId ist optional — fehlt es, wird AIRTABLE_BASE_ID aus der Umgebung verwendet.

Records auflisten

POST /api/integrations/airtable
Content-Type: application/json

{
  "operation": "list",
  "table": "Tasks",
  "filterByFormula": "{Status} = 'Open'",
  "maxRecords": 20
}

Antwort:

{
  "records": [
    { "id": "recAbc123", "fields": { "Name": "Setup CI", "Status": "Open" }, "createdTime": "2026-07-01T10:00:00.000Z" }
  ]
}

Record erstellen

POST /api/integrations/airtable
Content-Type: application/json

{
  "operation": "create",
  "table": "Tasks",
  "fields": { "Name": "Neue Aufgabe", "Status": "Open" }
}

Record aktualisieren

POST /api/integrations/airtable
Content-Type: application/json

{
  "operation": "update",
  "table": "Tasks",
  "recordId": "recAbc123",
  "fields": { "Status": "Done" }
}

Record löschen

POST /api/integrations/airtable
Content-Type: application/json

{
  "operation": "delete",
  "table": "Tasks",
  "recordId": "recAbc123"
}

GET /api/integrations/airtable/status

Prüft ob AIRTABLE_API_KEY und AIRTABLE_BASE_ID konfiguriert sind:

{ "ok": true }
// oder
{ "ok": false, "error": "AIRTABLE_API_KEY is not configured" }

Lib-Funktionen direkt nutzen

import { listRecords, createRecord, updateRecord, deleteRecord } from '@/lib/airtable-client';

// Lesen (mit Filter und Sortierung)
const records = await listRecords('Tasks', {
  filterByFormula: "{Status} = 'Open'",
  sort: [{ field: 'Name', direction: 'asc' }],
});

// Erstellen
const created = await createRecord('Tasks', { Name: 'Neue Aufgabe', Status: 'Open' });

// Aktualisieren
await updateRecord('Tasks', created.id, { Status: 'Done' });

// Löschen
await deleteRecord('Tasks', created.id);

Troubleshooting

FehlerUrsacheLösung
AIRTABLE_API_KEY is not configuredEnv-Variable fehltVariable in .env setzen, Server neu starten
AIRTABLE_BASE_ID is not configuredEnv-Variable fehlt und kein baseId im RequestAIRTABLE_BASE_ID setzen oder baseId explizit mitgeben
Airtable error 401Token ungültig oder abgelaufenNeuen Personal Access Token erstellen
Airtable error 403Token hat keinen Zugriff auf die BaseBase unter Token-Einstellungen → Access hinzufügen
Airtable error 404Falsche Base ID oder TabellennameBase ID aus der URL prüfen, Tabellennamen exakt (Groß-/Kleinschreibung) angeben
Airtable error 422Ungültige Felder (z.B. Feldname existiert nicht in der Tabelle)Feldnamen gegen das Airtable-Tabellenschema prüfen

Rate Limits (Airtable API)

LimitWert
Anfragen pro Base5 / Sekunde
Bei ÜberschreitungHTTP 429, Airtable empfiehlt Backoff von 30s

Bei höherem Volumen: Request-Batching (Airtable unterstützt bis zu 10 Records pro Create/Update-Call über die native Batch-API) oder Caching-Layer einbauen.

ChimerAI Docs · Back to Demo