Skip to main content
Lege Tickets programmatisch an — aus CRM, Bestellsystem, eigenem Backend oder Automatisierung (Zapier, Make, Webhooks). Braucht den Scope tickets:write. Rate Limit: 30 Requests / Minute (siehe Rate Limits).
Für neue Integrationen nicht Legacy POST https://api.armin.cx/public/tickets nutzen. v1 bevorzugen; Abschaltdatum siehe Migration von Legacy (2026-10-31).

Voraussetzungen

  1. API-Schlüssel mit tickets:read und tickets:write — unter Einstellungen → API anlegen oder erweitern.
  2. Verbundener Kanal — der Wert channel muss zu einem in eurem Workspace verbundenen Kanaltyp passen (z. B. email oder widget). Bei mehreren Kanälen desselben Typs: channel_identifier für eine konkrete Posteingangs-Adresse setzen.
  3. HTTP-Clientcurl, Postman oder ein Server mit JSON-POST.

Request

Nur die unten aufgeführten Felder senden. Zusätzliche Felder im JSON-Body führen zu einem Fehler.

Request-Body

Pflichtfeld

Optional — Ticket

Optional — Kontakt

Optional — Nachrichten

Statt (oder zusätzlich zu) note bis zu 10 Nachrichten in messages[]:
Für typische Integrationen reichen note + contact + metadata. messages nutzen, wenn beim Anlegen eine sichtbare Kundennachricht im Thread stehen soll.

Anhänge

Eine Datei in drei Aufrufen an eine Nachricht anhängen: Upload-URL anfordern, Datei hochladen, dann bestätigen — erst danach beim Ticket referenzierbar.
  1. POST /public/v1/attachments/upload-url mit Dateiname, MIME-Type und Größe. Liefert id und eine signierte upload_url (30 Minuten gültig).
  2. Die rohen Dateibytes per PUT an upload_url senden — direkt an den Speicher, nicht über diese API.
  3. POST /public/v1/attachments/{id}/confirm. Prüft die Datei gegen das Größenlimit und den tatsächlichen Inhalt — nicht nur den in Schritt 1 angegebenen MIME-Type.
  4. Die bestätigte id beim Ticket-Anlegen in messages[].attachment_ids übergeben.

Minimales Beispiel

Nur interne Notiz — kein Kontakt nötig:

Vollständiges Beispiel

Kontakt, Tags und externe Referenz in metadata:
metadata-Keys an euer System anpassen — die API speichert sie als Integrationsfelder.

Automatisierung und Webhooks

Viele Teams rufen den Endpoint aus HTTP-Request-Aktionen auf (eigene Skripte, Zapier, Make, n8n, E-Commerce-Workflows):
  1. Trigger, wenn eure Geschäftsregel greift (Tag gesetzt, Feld fehlt, Statuswechsel).
  2. POST auf https://api.armin.cx/public/v1/tickets mit Variablen eurer Plattform in subject, note, contact, metadata.
  3. Externe Bestell- oder Fall-ID in metadata mappen, damit Agenten die Quelle sehen.
Trigger so bauen, dass sie nur bei der Bedingung feuern, nicht bei jedem Update.
Jeder erfolgreiche Request erstellt ein neues Ticket. Automatisierung nur auslösen, wenn wirklich ein Ticket entstehen soll (z. B. wenn ein Tag gesetzt wird), nicht bei jedem Update desselben Datensatzes.

Antwort

201 Created — v1-Erfolgs-Envelope:
data.id (UUID) oder data.ticket_number (Posteingangsnummer) für spätere GET-Requests speichern.

Fehler

Vollständige Liste: Fehler.

Zuerst testen

  1. Unter Einstellungen → API einen Schlüssel mit tickets:write anlegen.
  2. Einen Test-Request mit den Beispielen oben senden. Test-subject oder Tag setzen (z. B. api-test), damit euer Team das Ticket im Posteingang erkennt.
  3. Prüfen, ob das Ticket mit dem erwarteten Kanal, Kontakt, Tags und metadata ankommt.
Test-Schlüssel danach widerrufen.

Weiterführend

OpenAPI-Referenz

Interaktives Schema und Try it für POST /tickets.

Authentifizierung

Scopes, Rotation, Least Privilege.

Rate Limits

Write-Stufe (30/min) und Backoff bei 429.

Migration von Legacy

Legacy POST /public/tickets auf v1 mappen.