HelpStackDocs

Integrationen

API-Referenz

REST-API für das HelpStack-Dashboard, Widget und Webhooks.

Kurzüberblick#

BasispfadEndpunkte befinden sich unter https://helpstack.eu/api/… — ein Pfadpräfix, keine direkt aufrufbare URL
Authentifizierung (Dashboard-API)NextAuth-Sitzungs-Cookie (angemeldeter Benutzer)
Authentifizierung (Widget-API)Keine (öffentlich, rate-limitiert)
Authentifizierung (Webhooks)Verify-Token-Handshake + HMAC-SHA256-Signatur
Content-Typeapplication/json (Datei-Uploads verwenden multipart/form-data)
MandantenfähigkeitJede Dashboard-Anfrage ist auf die Organisation des Sitzungsbenutzers beschränkt

Erwarten Sie eine 404-Antwort auf /api selbst und eine 401-Antwort auf authentifizierte Endpunkte. Unter der blanken URL https://helpstack.eu/api gibt es keine Route — sie gibt 404 by design zurück, da die API aus Unterpfaden besteht (/api/conversations, /api/channels, …), kein durchsuchbares Stammverzeichnis. Wenn Sie einen echten Endpunkt wie /api/conversations im Browser öffnen, erhalten Sie 401 (kein Sitzungs-Cookie), was bestätigt, dass er existiert und authentifizierungsgeschützt ist. Keiner dieser Statuswerte ist ein Fehler.

Authentifizierungsmodell — bitte zuerst lesen#

Derzeit gibt es kein öffentliches API-Schlüssel- oder Bearer-Token-System für externe Aufrufer. Suchen Sie nicht nach einem „API-Schlüssel" — es gibt keinen. Die Dashboard-/interne API wird mit dem NextAuth-Sitzungs-Cookie eines angemeldeten Benutzers authentifiziert, und jede Anfrage wird durch Middleware automatisch auf die Organisation dieses Benutzers beschränkt (withOrganization / withAdmin / withAgent). Diese Endpunkte werden von der HelpStack-Dashboard-Benutzeroberfläche genutzt.

Um Dashboard-Endpunkte von außerhalb des Browsers aufzurufen, müssen Sie ein authentifiziertes Sitzungs-Cookie wiederverwenden. Wenn Sie Machine-to-Machine-Zugriff benötigen, sind die unterstützten öffentlichen Oberflächen:

  • Widget-Endpunkte — öffentlich, IP/Besucher rate-limitiert (siehe Widget-Einbettung).
  • Webhook-Endpunkte — öffentlich, durch Token + HMAC-Signatur verifiziert (siehe Webhooks).

Behandeln Sie alles, was ein Sitzungs-Cookie erfordert, bei programmatischer Nutzung als „gegen Ihre Deployment verifizieren".

Antwort-Envelope#

Alle API-Routen geben einen Standard-Envelope zurück.

Erfolg

{ "success": true, "data": { } }

Fehler

{
  "success": false,
  "error": {
    "message": "Human-readable message",
    "code": "OPTIONAL_CODE",
    "fields": { "fieldName": ["error 1"] }
  }
}

code und fields sind optional. fields wird bei Validierungsfehlern (Zod) mit feldspezifischen Meldungen befüllt.

Fehlercodes & HTTP-Status#

Fehler werden durch typisierte Fehlerklassen und einen zentralen Handler erzeugt. Übergeordnete Zuordnung:

HTTPWannBeispiel-code
400Ungültige Eingabe / ValidierungsfehlerVALIDATION_ERROR
401Fehlende oder abgelaufene Authentifizierung
402Unzureichende Token zur Durchführung der AktionINSUFFICIENT_TOKENS
403Unzureichende Rolle/Berechtigung
404Ressource nicht gefunden
409Duplikat/Konflikt
429Rate-Limit erreicht
502Drittanbieter-API-Fehler
500Unerwarteter/interner Fehler (Meldung ist maskiert)

Zod-Validierungsfehler geben 400 mit code: "VALIDATION_ERROR" und einem fields-Objekt zurück. Unerwartete Fehler geben 500 mit einer generischen Meldung zurück ("An unexpected error occurred"); das tatsächliche Detail wird nur serverseitig protokolliert.

Endpunkt-Katalog#

Rollen: Ein mit ADMIN markierter Endpunkt erfordert Admin-Rechte (withAdmin), AGENT erfordert Mitarbeiter-Rechte oder höher (withAgent), Sitzung erfordert ein authentifiziertes Organisationsmitglied (withOrganization).

Kanäle

MethodePfadZweckAuthentifizierung
GET/api/channelsKanäle auflistenSitzung
POST/api/channelsKanal erstellenADMIN
GET/api/channels/[id]Einen Kanal abrufenSitzung
PATCH/api/channels/[id]Kanal aktualisierenADMIN
DELETE/api/channels/[id]Kanal löschenADMIN
GET/api/channels/[id]/widget-scriptEinbettungs-Script für einen WEBSITE_CHAT-Kanal abrufenSitzung
GET/api/channels/[id]/widget-configErscheinungsbild-Konfiguration des Widgets abrufenSitzung
GET/POST/api/channels/[id]/agent-toolsKanalspezifische Agent-Tools auflisten/anhängenSitzung

Kanal erstellenPOST /api/channels (validierter Body, createChannelSchema):

{
  "type": "WEBSITE_CHAT",
  "name": "Website Chat",
  "region": "eu",
  "defaultLanguage": "en",
  "autoTranslate": true,
  "translateToLanguage": "en",
  "fallbackLanguage": "sl",
  "aiProviderId": "PROVIDER_ID",
  "credentials": {},
  "responseTemplate": {},
  "autoReply": false,
  "autoApprove": false,
  "autoEnhance": false
}
FeldTypErforderlichHinweise
typeAufzählungjaEMAIL | FACEBOOK | INSTAGRAM | WHATSAPP | TELEGRAM | WEBSITE_CHAT
namestringjaMindestlänge 1
regionstringnein
defaultLanguagestringneinStandard en (Mitarbeitersprache)
autoTranslatebooleanneinStandard true
translateToLanguagestringneinMitarbeitersprache, in die übersetzt werden soll
fallbackLanguagestringneinVermutete Kundensprache für kurze/mehrdeutige Nachrichten
aiProviderIdstringneinFällt auf den Standardanbieter der Organisation zurück
credentialsObjektjaKanalspezifische Anmeldedaten (z. B. IMAP/SMTP, Seitentoken)
responseTemplateObjektnein
autoReplybooleanneinStandard false
autoApprovebooleanneinStandard false
autoEnhancebooleanneinStandard false

Die Strukturen der Anmeldedaten (credentials) werden je nach Kanaltyp separat validiert — z. B. erfordert E-Mail { host, port, username, password, from, secure?, imapHost?, imapPort?, imapSecure?, imapAllowSelfSigned? }; Facebook erfordert { pageId, accessToken, appSecret? }; Instagram erfordert { accountId, accessToken }. Anmeldedaten werden verschlüsselt gespeichert (AES-256-GCM).

Gespräche

MethodePfadZweckAuthentifizierungWichtige Parameter
GET/api/conversationsGespräche auflistenSitzungpage, pageSize, status, channelId, unread, assignedToId, language, search
POST/api/conversationsGespräch erstellenAGENT
GET/api/conversations/[id]Eines abrufenSitzung
PATCH/api/conversations/[id]Aktualisieren (Status, Priorität, Zuweisung, Sprache, Notizen)Sitzung
DELETE/api/conversations/[id]LöschenSitzung
GET/api/conversations/[id]/messagesNachrichten auflistenSitzung
POST/api/conversations/[id]/messagesMitarbeiterantwort sendenAGENT
POST/api/conversations/[id]/readAls gelesen markierenSitzung
POST/api/conversations/[id]/unreadAls ungelesen markierenSitzung
POST/api/conversations/bulk-readMehrere als gelesen markierenSitzung

status-Filterwerte: OPEN | PENDING | CLOSED | ARCHIVED. pageSize ist auf 100 begrenzt (Standard 20).

Nachricht sendenPOST /api/conversations/[id]/messages (validierter Body, sendMessageSchema):

{
  "conversationId": "CONVERSATION_ID",
  "content": "Thanks for reaching out — here's how to fix that.",
  "attachments": ["storage/path/file.png"]
}
FeldTypErforderlichHinweise
conversationIdstringjaMuss dem [id]-Routenparameter entsprechen, sonst 400 VALIDATION_ERROR
contentstringjaMindestlänge 1
attachmentsstring[]neinSpeicherpfade

Verhalten: Die Nachricht wird als OUTBOUND erstellt. Wenn der Kanal autoTranslate aktiviert hat und eine Kundensprache bekannt ist, wird die Nachricht nicht freigegeben erstellt und im Hintergrund übersetzt (der Mitarbeiter genehmigt sie vor dem Senden). Das Senden verbraucht Plan-Token; wenn der Organisation die Token ausgegangen sind, gibt die Route 402 mit code: "INSUFFICIENT_TOKENS" zurück. Bei Erfolg gibt die Route die erstellte Nachricht mit HTTP 201 zurück.

Nachrichten

MethodePfadZweckAuthentifizierung
POST/api/messages/[id]/approveEine in der Warteschlange befindliche/übersetzte Antwort zum Senden freigebenSitzung
POST/api/messages/[id]/generate-replyEinen KI-Antwortvorschlag generierenSitzung
POST/api/messages/[id]/retranslateÜbersetzung der Nachricht erneut ausführenSitzung

FAQs

MethodePfadZweckAuthentifizierungWichtige Parameter
GET/api/faqsFAQs auflistenSitzungchannelId
POST/api/faqsFAQ erstellenADMIN
PATCH/api/faqs/[id]FAQ aktualisierenSitzung
DELETE/api/faqs/[id]FAQ löschenSitzung
POST/api/faqs/reorderFAQs neu anordnenSitzung
POST/api/faqs/generateKI-generierte FAQ-Vorschläge erstellenSitzung

Medien

MethodePfadZweckAuthentifizierung
POST/api/media/uploadDatei hochladen (multipart/form-data)Sitzung
GET/api/media/[id]Medien-Metadaten/Datei abrufenSitzung
DELETE/api/media/[id]Medien löschenSitzung

Benachrichtigungen

MethodePfadZweckAuthentifizierung
GET/PUT/api/notifications/preferencesBenachrichtigungseinstellungen abrufen/aktualisierenSitzung
GET/POST/api/notifications/integrationsBenachrichtigungsintegrationen auflisten/konfigurierenSitzung
POST/api/notifications/push-subscriptionEin Web-Push-Abonnement registrierenSitzung

KI-Anbieter

MethodePfadZweckAuthentifizierung
GET/api/ai-providersKonfigurierte Anbieter auflistenSitzung
POST/api/ai-providersAnbieter hinzufügenSitzung
PATCH/api/ai-providers/[id]Anbieter aktualisierenSitzung
DELETE/api/ai-providers/[id]Anbieter entfernenSitzung

Agent-Tools

MethodePfadZweckAuthentifizierung
GET/api/agent-toolsAgent-Tools auf Organisationsebene auflistenSitzung
POST/api/agent-toolsAgent-Tool erstellenSitzung
PATCH/api/agent-tools/[id]Agent-Tool aktualisierenSitzung
DELETE/api/agent-tools/[id]Agent-Tool löschenSitzung
GET/api/agent-tools/[id]/logsTool-Aufrufprotokolle anzeigenSitzung

Die vollständige Tool-Anatomie finden Sie unter Benutzerdefinierte Agent-Tools.

Widget (öffentlich)

MethodePfadZweckAuthentifizierung
GET/api/widget/[channelId]/configWidget-KonfigurationÖffentlich, ~30/Min./IP
GET/api/widget/[channelId]/faqsBis zu 5 FAQ-ChipsÖffentlich, ~30/Min./IP
GET/api/widget/[channelId]/statusOnline-StatusÖffentlich
POST/api/widget/[channelId]/uploadDatei-UploadÖffentlich
POST/api/widget/messageNachricht senden (WebSocket-Fallback)Öffentlich, ~20/Min./Besucher

Payloads finden Sie unter Widget-Einbettung.

Webhooks (öffentlich)

MethodePfadZweckAuthentifizierung
GET/api/webhooks/facebookVerifizierungs-HandshakeVerify-Token
POST/api/webhooks/facebookMessenger-Ereignisse empfangenHMAC-Signatur
GET/POST/api/webhooks/instagramInstagram-Ereignisse verifizieren/empfangenVerify-Token / HMAC
GET/POST/api/webhooks/whatsappWhatsApp-Ereignisse verifizieren/empfangenVerify-Token / HMAC

Handshake- und Signaturdetails finden Sie unter Webhooks.

Verwandte Themen#