# Neotask API-Referenz Vollstaendige API-Referenz fuer die Neotask Plattform. Dieses Dokument behandelt jeden verfuegbaren Endpunkt, Authentifizierungsmethoden, Fehlerbehandlung und Ratenbegrenzungen. --- ## Authentifizierung Alle API-Anfragen erfordern Authentifizierung ueber eine der folgenden Methoden: - **Bearer JWT**: Uebergeben Sie den Header `Authorization: Bearer `. Tokens werden ueber die unten beschriebenen Login-Endpunkte erhalten. - **License HMAC**: Geraetegebundene HMAC-SHA256-Signierung, die von der Neotask Desktop-Anwendung verwendet wird. Der Client signiert Anfragen mit einem Geheimnis, das aus dem Lizenzschluessel und Geraetefingerabdruck abgeleitet wird. - **Tenant Header**: Fuegen Sie `x-tenant-id: ` fuer jeden Tenant-bezogenen Endpunkt hinzu. Dieser Header identifiziert, auf welchen Tenant (Arbeitsbereich) sich die Anfrage bezieht. Viele Endpunkte kombinieren mehrere Authentifizierungsanforderungen. Zum Beispiel bedeutet "Tenant + Admin", dass die Anfrage sowohl ein gueltiges JWT (eines Benutzers mit der Admin-Rolle) als auch den `x-tenant-id`-Header enthalten muss. --- ## Auth-Endpunkte Endpunkte fuer die Benutzerauthentifizierung ueber Web-, iOS- und Desktop-Plattformen. | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | POST | `/api/auth/login` | Mit E-Mail und Passwort authentifizieren. Gibt bei Erfolg ein JWT zurueck. | Keine | | POST | `/api/auth/google` | Ueber Google OAuth im Web authentifizieren. Erwartet einen Google-Autorisierungscode. | Keine | | POST | `/api/auth/google-ios` | Ueber Google OAuth auf iOS authentifizieren. Erwartet ein iOS-spezifisches Autorisierungs-Payload. | Keine | | POST | `/api/auth/google-token` | Ein Google-Zugriffstoken verifizieren und ein Neotask JWT zurueckgeben. | Keine | | POST | `/api/auth/apple` | Ueber Apple Sign-In authentifizieren. Erwartet ein Apple-Identitaetstoken. | Keine | | GET | `/api/auth/me` | Das Profil des authentifizierten Benutzers zurueckgeben (Name, E-Mail, Avatar, Rollen). | JWT | | DELETE | `/api/auth/account` | Das Konto des authentifizierten Benutzers und alle zugehoerigen Daten dauerhaft loeschen. | JWT | --- ## Dashboard-Auth-Endpunkte Authentifizierungsendpunkte spezifisch fuer das Neotask Dashboard, einschliesslich Lizenzschluessel-Login und Zwei-Faktor-Authentifizierung (TOTP). | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | POST | `/api/dashboard/auth/login` | Mit einem Lizenzschluessel authentifizieren. Gibt bei Erfolg ein JWT zurueck oder signalisiert, dass TOTP erforderlich ist. | Keine | | POST | `/api/dashboard/auth/totp-login` | Login mit einem TOTP-Code oder Backup-Code abschliessen, wenn Zwei-Faktor-Authentifizierung aktiviert ist. | Keine | | GET | `/api/dashboard/auth/me` | Die aktuellen Lizenzinformationen und Funktionsberechtigungen fuer den authentifizierten Dashboard-Benutzer zurueckgeben. | JWT | | POST | `/api/dashboard/totp/setup` | Ein TOTP-Geheimnis und QR-Code fuer die Einrichtung der Zwei-Faktor-Authentifizierung generieren. | JWT | | POST | `/api/dashboard/totp/verify` | Einen TOTP-Code verifizieren, um die Zwei-Faktor-Authentifizierung fuer das Konto zu bestaetigen und zu aktivieren. | JWT | --- ## Abrechnungsendpunkte Abonnements, Checkout-Sitzungen und In-App-Kaeufe ueber Stripe und RevenueCat verwalten. | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | POST | `/api/billing/checkout` | Eine Stripe Checkout-Sitzung fuer den Pro-Tarif erstellen. Gibt eine Checkout-URL zurueck. | Tenant + Admin | | POST | `/api/billing/checkout/enterprise` | Eine Stripe Checkout-Sitzung fuer den Enterprise-Tarif erstellen. Gibt eine Checkout-URL zurueck. | Tenant + Admin | | GET | `/api/billing/status` | Den aktuellen Tarif, Nachrichtenanzahl und Nutzungslimits fuer den Tenant zurueckgeben. | Tenant + Viewer | | POST | `/api/billing/portal` | Eine Stripe Kundenportal-Sitzung zur Verwaltung von Zahlungsmethoden und Rechnungen erstellen. | Tenant + Admin | | POST | `/api/billing/agent-addon` | Ein zusaetzliches Agenten-Slot-Add-on fuer den Tenant erwerben. | Tenant + Admin | | POST | `/api/billing/webhook` | Stripe Webhook-Handler. Validiert die Stripe-Signatur und verarbeitet Abonnement-Lebenszyklus-Ereignisse. | Stripe Signature | | POST | `/api/billing/revenuecat-sync` | Einen iOS In-App-Kauf ueber RevenueCat verifizieren und Berechtigungen mit dem Tenant synchronisieren. | Tenant + Admin | | POST | `/api/billing/revenuecat-webhook` | RevenueCat Webhook-Handler. Verarbeitet Abonnement-Ereignisse aus dem App Store. | Bearer | --- ## Chat-Endpunkte Nachrichten senden und empfangen, Sitzungen verwalten und asynchrone Job-Ergebnisse abfragen. | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | POST | `/api/chat/init` | Automatisch einen Tenant, Agenten und eine Sitzung fuer den authentifizierten Benutzer bereitstellen. Verwenden Sie dies, um die Chat-Umgebung eines neuen Benutzers in einem einzigen Aufruf zu initialisieren. | JWT | | POST | `/api/chat/send` | Eine Nachricht an den Agenten senden. Die Nachricht wird asynchron verarbeitet; eine Job-ID wird sofort zurueckgegeben. | Tenant + Admin | | GET | `/api/chat/jobs/:jobId` | Den Status und das Ergebnis eines asynchronen Chat-Jobs anhand seiner ID abfragen. | Tenant + Viewer | | GET | `/api/chat/messages` | Alle Nachrichten fuer eine bestimmte Sitzung abrufen. Uebergeben Sie die Sitzungs-ID als Abfrageparameter. | Tenant + Viewer | | GET | `/api/chat/sessions` | Alle Chat-Sitzungen fuer den Tenant auflisten. | Tenant + Viewer | | POST | `/api/chat/sessions` | Eine neue Chat-Sitzung erstellen. | Tenant + Admin | --- ## Agenten- und Aktivitaetsendpunkte Agenten, Sitzungen, Tools, Dateien, Skills, Kanaele, geplante Aufgaben und Teams des Tenants durchsuchen. | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | GET | `/api/activity/agents` | Alle Agenten des Tenants auflisten. | Tenant | | GET | `/api/activity/sessions` | Sitzungen auflisten. Unterstuetzt Filterung nach `agentId`, `status` und Datumsbereich-Abfrageparametern. | Tenant | | GET | `/api/activity/sessions/:id/entries` | Alle Eintraege (Nachrichten und Ereignisse) fuer eine bestimmte Sitzung abrufen. | Tenant | | GET | `/api/activity/tools` | Alle fuer die Agenten des Tenants verfuegbaren Tools auflisten. | Tenant | | GET | `/api/activity/files` | Alle mit den Agenten des Tenants verbundenen Dateien auflisten. | Tenant | | GET | `/api/activity/skills` | Alle mit den Agenten des Tenants verbundenen Skills auflisten. | Tenant | | GET | `/api/activity/channels` | Alle mit den Agenten des Tenants verbundenen Kanaele auflisten. | Tenant | | GET | `/api/activity/cron-jobs` | Alle geplanten (Cron-)Aufgaben fuer den Tenant auflisten. | Tenant | | GET | `/api/activity/teams` | Alle Teams innerhalb des Tenants auflisten. | Tenant | --- ## Skills-Endpunkte Den Skill-Katalog verwalten, Skills installieren und konfigurieren sowie benutzerdefinierte Skills veroeffentlichen. | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | GET | `/api/skills/catalog` | Den vollstaendigen Skill-Katalog durchsuchen. Gibt alle zur Installation verfuegbaren veroeffentlichten Skills zurueck. | Tenant | | GET | `/api/skills/list` | Die aktuell vom Benutzer installierten Skills auflisten. | Tenant + Viewer | | POST | `/api/skills/sync` | Skills aus dem Dateisystem synchronisieren. Verwenden Sie dies nach dem Bereitstellen neuer Skill-Dateien, um die Registry zu aktualisieren. | Tenant + Admin | | POST | `/api/skills/register` | Einen Skill aus dem Katalog registrieren (installieren). | Tenant + Viewer | | DELETE | `/api/skills/register/:skillId` | Einen Skill anhand seiner ID abmelden (deinstallieren). | Tenant + Viewer | | POST | `/api/skills/:skillId/publish` | Einen Skill veroeffentlichen, um ihn im Katalog verfuegbar zu machen. | Tenant + Admin | | POST | `/api/skills/:skillId/unpublish` | Einen Skill von der Veroeffentlichung zurueckziehen und aus dem Katalog entfernen. | Tenant + Admin | | GET | `/api/skills/all` | Alle Skills einschliesslich unveroeffentlichter auflisten. Nur-Admin-Endpunkt fuer die Skill-Verwaltung. | Tenant + Admin | | PUT | `/api/skills/:skillId/env-schema` | Das Umgebungsvariablen-Schema fuer einen Skill definieren oder aktualisieren. Dies steuert, welche Konfigurationsfelder den Benutzern angezeigt werden. | Tenant + Admin | | POST | `/api/skills/:skillId/configure` | Konfigurationswerte fuer einen installierten Skill speichern. | Tenant + Viewer | | DELETE | `/api/skills/:skillId/configure` | Alle Konfiguration fuer einen Skill entfernen und auf Standards zuruecksetzen. | Tenant + Viewer | --- ## Kanal-Endpunkte Messaging-Kanaele verknuepfen, konfigurieren, aktivieren und trennen (z.B. Slack, Discord, WhatsApp). | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | GET | `/api/channels/` | Alle Kanaele und ihre aktuellen Status auflisten. | Tenant + Viewer | | GET | `/api/channels/:channel/status` | Den detaillierten Status eines bestimmten Kanals abrufen. | Tenant + Viewer | | POST | `/api/channels/:channel/link` | Den Verknuepfungsprozess fuer einen Kanal starten. Gibt je nach Kanaltyp eine Verknuepfungs-URL oder ein Sitzungstoken zurueck. | Tenant + Admin | | GET | `/api/channels/:channel/link/wait` | Auf den Abschluss eines Kanalverknuepfungs-Flows warten (Long-Polling). Gibt zurueck, sobald der Kanal erfolgreich verknuepft ist oder die Operation ablaeuft. | Tenant + Admin | | GET | `/api/channels/:channel/jobs/:jobId` | Das Ergebnis eines kanalspezifischen asynchronen Jobs abrufen. | Tenant + Admin | | POST | `/api/channels/:channel/enable` | Einen verknuepften Kanal aktivieren, damit der Agent beginnt, Nachrichten davon zu empfangen. | Tenant + Admin | | POST | `/api/channels/:channel/disable` | Einen Kanal deaktivieren, ohne ihn zu trennen. Der Agent empfaengt keine Nachrichten mehr, aber die Kanalverbindung bleibt erhalten. | Tenant + Admin | | POST | `/api/channels/:channel/disconnect` | Einen Kanal vollstaendig trennen und die Verknuepfung aufheben. | Tenant + Admin | | GET | `/api/channels/:channel/config` | Die aktuelle Konfiguration fuer einen Kanal abrufen. | Tenant + Admin | | POST | `/api/channels/:channel/config` | Die Konfiguration fuer einen Kanal aktualisieren. | Tenant + Admin | --- ## Google OAuth-Endpunkte Google OAuth-Flows fuer die Verbindung von Google-Diensten mit Neotask initiieren und verwalten. | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | GET/POST | `/oauth/google/start` | Einen Google OAuth-Flow initiieren. Akzeptiert optionale Parameter zur Angabe, auf welche Google-Dienste Zugriff angefordert werden soll. | Optional | | GET | `/oauth/google/services` | Alle von Neotask unterstuetzten Google-Dienstdefinitionen auflisten, nach Kategorie gruppiert. | Keine | | GET | `/oauth/google/callback` | OAuth-Callback-Handler. Google leitet hierher weiter, nachdem der Benutzer den Zugriff gewaehrt oder verweigert hat. | Keine | | GET | `/oauth/google/status` | Den Status eines laufenden OAuth-Flows abfragen. Gibt zurueck, ob der Flow ausstehend, abgeschlossen oder fehlgeschlagen ist. | Keine | ### Verfuegbare Google-Dienste Neotask unterstuetzt die Verbindung mit 25 Google-Diensten, organisiert nach Kategorie: | Kategorie | Dienste | |----------|----------| | **Kern** | Gmail, Calendar, Drive, Docs, Sheets, Slides, Forms, Keep, Tasks | | **Kommunikation** | People/Contacts, Chat, Meet, YouTube, Photos | | **Standort** | Places API, Routes/Directions, Business Profile | | **Spezialisiert** | Classroom, Play Developer, AdSense, Google Ads | --- ## Provider-Keys-Endpunkte Drittanbieter-API-Schluessel verwalten (z.B. fuer LLM-Anbieter). Schluessel werden im Ruhezustand verschluesselt und koennen bei Bedarf entschluesselt werden. | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | PUT | `/api/provider-keys/:provider` | Einen API-Schluessel fuer den angegebenen Anbieter speichern oder aktualisieren. Der Schluessel wird vor der Speicherung verschluesselt. | HMAC + Auth | | GET | `/api/provider-keys/` | Alle gespeicherten Anbieterschluessel auflisten. Schluesselwerte sind maskiert (nur die letzten vier Zeichen werden angezeigt). | Auth | | DELETE | `/api/provider-keys/:provider` | Einen gespeicherten API-Schluessel fuer den angegebenen Anbieter entfernen. | HMAC + Auth | | GET | `/api/provider-keys/:provider/resolve` | Den vollstaendigen API-Schluessel fuer den angegebenen Anbieter entschluesseln und zurueckgeben. | Auth | | GET | `/api/provider-keys/mode` | Den aktuellen Schluesselmodus (benutzerdefiniert vs. Plattform-Guthaben) und den verbleibenden Guthabenstand abrufen. | Auth | ### Erlaubte Anbieter Der `:provider`-Pfadparameter muss einer der folgenden Werte sein: - `anthropic` - `openai` - `openai-codex` - `openrouter` - `google-ai` --- ## Nutzungsendpunkte Nutzung verfolgen, Analysen abfragen, Ausgaben ueberwachen und Budgets verwalten. | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | POST | `/api/usage/ingest` | Einen Nutzungsdatensatz aufnehmen (z.B. Token-Zaehler, verwendetes Modell). | Auth | | GET | `/api/usage/query` | Nutzungsanalysen mit flexiblen Filtern abfragen (Datumsbereich, Modell, Agent). | Auth | | GET | `/api/usage/summary` | Eine Nutzungszusammenfassung fuer einen bestimmten Zeitraum abrufen. Uebergeben Sie `period` als Abfrageparameter (z.B. `day`, `week`, `month`). | Auth | | GET | `/api/usage/analytics` | Detaillierte Nutzungsanalysen einschliesslich Aufschluesselungen nach Modell und Agent abrufen. | Auth | | GET | `/api/usage/spending` | Ausgabendaten fuer einen bestimmten Zeitraum abrufen. Uebergeben Sie `period` als Abfrageparameter. | Auth | | GET | `/api/usage/budget` | Budgetinformationen einschliesslich Gesamtlimit, verbrauchtem Betrag und verbleibendem Betrag abrufen. | Auth | | POST | `/api/usage/cron-runs` | Die Ausfuehrung einer geplanten (Cron-)Aufgabe fuer die Nutzungsverfolgung aufzeichnen. | Auth | | POST | `/api/usage/budget-snapshot` | Einen Zeitpunkt-Snapshot des aktuellen Budgetstatus erfassen. | Auth | --- ## Onboarding-Endpunkte Neue Benutzer durch die Ersteinrichtung fuehren, einschliesslich Auswahl eines Modellanbieters und Konfiguration eines API-Schluessels. | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | POST | `/api/onboarding/init` | Die Onboarding-Konfiguration fuer den authentifizierten Benutzer initialisieren. Erstellt Standardeinstellungen und gibt den Onboarding-Status zurueck. | JWT | | GET | `/api/onboarding/models` | Verfuegbare Modellanbieter und ihre unterstuetzten Modelle auflisten. Dieser Endpunkt ist oeffentlich und erfordert keine Authentifizierung. | Keine | | POST | `/api/onboarding/setup` | Einen Anbieter-API-Schluessel waehrend des Onboardings konfigurieren. Validiert den Schluessel vor dem Speichern. | Tenant + Admin | | POST | `/api/onboarding/complete` | Das Onboarding fuer den aktuellen Benutzer als abgeschlossen markieren. | Dashboard Auth | --- ## Tenant-Endpunkte Tenants (Arbeitsbereiche) erstellen und verwalten, verschluesselte Geheimnisse speichern sowie Sitzungen und Jobs direkt erstellen. | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | POST | `/api/tenants/` | Einen neuen Tenant (Arbeitsbereich) erstellen. Gibt die Tenant-ID und Standardeinstellungen zurueck. | JWT | | GET | `/api/tenants/:tenantId` | Details fuer einen bestimmten Tenant abrufen, einschliesslich Einstellungen und Mitgliederanzahl. | JWT | | POST | `/api/tenants/secrets` | Ein verschluesseltes Geheimnis speichern, das dem Tenant zugeordnet ist. Wird fuer Dienst-Integrationen verwendet. | Tenant + Admin | | POST | `/api/tenants/sessions` | Eine neue Sitzung innerhalb des Tenants erstellen. | Tenant + Admin | | POST | `/api/tenants/jobs` | Einen neuen asynchronen Job innerhalb des Tenants erstellen. | Tenant + Admin | --- ## Memory-Endpunkte Agenten-Speicherkonfiguration, Dateien und Inhalte verwalten. Speicher ermoeglicht es Agenten, Informationen ueber Sitzungen hinweg beizubehalten. | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | GET | `/api/memory/config` | Die aktuelle Speicherkonfiguration abrufen (Aktivierungsstatus, Aufbewahrungsrichtlinie, Limits). | Auth | | POST | `/api/memory/config` | Speichereinstellungen wie Aufbewahrungszeitraum und Speicherlimits aktualisieren. | Auth | | GET | `/api/memory/files` | Alle fuer den Agenten gespeicherten Speicherdateien auflisten. | Auth | | GET | `/api/memory/files/:filename` | Den Inhalt einer bestimmten Speicherdatei anhand des Dateinamens abrufen. | Auth | | DELETE | `/api/memory/files/:filename` | Eine bestimmte Speicherdatei anhand des Dateinamens loeschen. | Auth | | GET | `/api/memory/content` | Gespeicherten Speicherinhalt abrufen. | Auth | | POST | `/api/memory/content` | Neuen Speicherinhalt fuer den Agenten speichern. | Auth | --- ## Google-Konten-Endpunkte Ueber OAuth mit Neotask verbundene Google-Konten verwalten. | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | GET | `/api/google-accounts/` | Alle verbundenen Google-Konten mit ihren Dienst-Scopes und Status auflisten. | Auth | | POST | `/api/google-accounts/:accountId/activate` | Ein verbundenes Google-Konto aktivieren, damit der Agent seine autorisierten Dienste nutzen kann. | Auth | | DELETE | `/api/google-accounts/:accountId` | Ein verbundenes Google-Konto entfernen und seine gespeicherten Tokens widerrufen. | Auth | --- ## Kontakt- und Support-Endpunkte Support-Kontaktanfragen einreichen und verwalten. | Methode | Endpunkt | Beschreibung | Auth | |--------|----------|-------------|------| | POST | `/api/contact/` | Eine Kontaktformular-Nachricht einreichen. Auf 5 Anfragen pro 15 Minuten pro IP-Adresse begrenzt. | Keine | | GET | `/api/contacts/` | Alle Kontaktanfragen mit Paginierung auflisten. Nur Admin. | Admin | | PATCH | `/api/contacts/:id` | Den Status einer Kontaktanfrage aktualisieren (z.B. als geloest markieren). | Admin | | DELETE | `/api/contacts/:id` | Eine Kontaktanfrage loeschen. | Admin | --- ## Ratenbegrenzungen Neotask erzwingt Ratenbegrenzungen auf bestimmten Endpunkten zum Schutz der Dienststabilitaet. Wenn eine Ratenbegrenzung ueberschritten wird, gibt die API eine `429 Too Many Requests`-Antwort zurueck. | Endpunkt-Kategorie | Limit | |-------------------|-------| | Kontaktformular | 5 Anfragen pro 15 Minuten pro IP | | Anmeldeversuche | 10 Anfragen pro 15 Minuten pro IP | | Tracking/Analysen | 30 Anfragen pro 60 Sekunden pro IP | --- ## Fehlerantworten Alle Fehlerantworten folgen einem einheitlichen JSON-Format: ```json { "error": "Fehlermeldungsbeschreibung", "status": 400 } ``` ### Statuscodes | Code | Bedeutung | |------|---------| | 400 | **Bad Request** -- Die Anfrage war fehlerhaft oder enthielt ungueltige Parameter. | | 401 | **Unauthorized** -- Authentifizierung fehlt oder das bereitgestellte Token ist ungueltig. | | 402 | **Payment Required** -- Das Guthaben des Tenants ist aufgebraucht. Upgraden Sie Ihren Tarif oder fuegen Sie Guthaben hinzu, um fortzufahren. | | 403 | **Forbidden** -- Der authentifizierte Benutzer hat nicht ausreichende Berechtigungen fuer diese Aktion. | | 404 | **Not Found** -- Die angeforderte Ressource existiert nicht. | | 429 | **Rate Limited** -- Zu viele Anfragen. Warten Sie und versuchen Sie es nach dem in den Antwort-Headern angegebenen Zeitraum erneut. | | 500 | **Internal Server Error** -- Ein unerwarteter Fehler ist auf dem Server aufgetreten. Wenn dies anhalt, kontaktieren Sie den Neotask Support. |