🔌 Schnittstelle (API) v1.0

Mit der Schnittstelle (API) kannst du deinen Shop automatisch verwalten: Artikel anlegen und pflegen, Bestellungen abrufen und bearbeiten, Rechnungen erstellen – zum Beispiel aus deiner Warenwirtschaft, einem eigenen Programm oder einem Automatisierungs-Tool wie Zapier oder Make.

📄 Doku als PDF herunterladen

Das PDF baut sich immer aus dieser Seite auf – du kannst es also jederzeit herunterladen und mitschicken, es ist automatisch auf dem neuesten Stand.

🔑 Anmeldung & Schlüssel

Jede Anfrage braucht deinen persönlichen API-Schlüssel im Kopf (Header) der Anfrage: X-API-Key: dein-schluessel Deinen Schlüssel erzeugst und verwaltest du in der Plattform unter Menü → Konto → Meine Daten → API-Zugang. Behandle ihn wie ein Passwort: Wer den Schlüssel hat, kann in deinem Namen arbeiten. Bei Verdacht auf Missbrauch einfach einen neuen erzeugen – der alte wird damit sofort ungültig. Du siehst und bearbeitest über die API ausschließlich deine eigenen Websites und Daten. Erlaubt sind bis zu 1000 Anfragen pro Stunde.

⚠️ Fehler & Status-Codes

Fehler kommen immer als JSON mit einer verständlichen Meldung: {"ok": false, "fehler": "Artikel 123 nicht gefunden"} Die wichtigsten Status-Codes: 200 (alles gut), 201 (angelegt), 400 (Eingabe fehlerhaft), 401 (Schlüssel fehlt oder ist falsch), 403 (gehört dir nicht), 404 (gibt es nicht), 429 (zu viele Anfragen – kurz warten).

📦 Die Objekte und ihre Felder

Artikel

FeldTypBedeutung
idZahlEindeutige Nummer (vergibt das System)
website_idZahlZu welcher Website der Artikel gehört
nameTextArtikelname (Pflicht beim Anlegen)
beschreibungTextKurzer Text unter dem Namen
preisZahlPreis in Euro, z. B. 19.9 – 0 bedeutet „auf Anfrage“
einheitTextZusatz vor dem Preis, z. B. „ab“ oder „pro Std.“
kategorieTextFreie Kategorie (alt) – gruppiert Artikel ohne Katalog
katalogTextName des zugeordneten Katalogs (Warengruppe; nur lesbar – Zuordnung über die Oberfläche)
streichpreisZahl„Vorher“-Preis (UVP) – ist er höher als der Preis, zeigt der Shop einen Sale an
skuTextArtikelnummer
markeTextMarke / Hersteller
tagsTextSchlagworte, durch Komma getrennt – werden von der Shop-Suche gefunden
lagerbestandZahlStück auf Lager; leer/null = Bestand wird nicht verfolgt. Bei 0 zeigt der Shop „ausverkauft“, Bestellungen buchen automatisch ab
bild_urlTextBild-Adresse des Hauptbilds (https://…)
bilderListeWeitere Bild-Adressen für die Galerie auf der Artikel-Seite
ust_satzZahlUmsatzsteuersatz in Prozent (19, 7 oder 0) – steuert den USt-Ausweis auf Rechnungen
aktivJa/Neinfalse = im Shop unsichtbar
sortierungZahlKleinere Zahlen stehen weiter oben

Bestellung

FeldTypBedeutung
idZahlBestellnummer
website_idZahlWebsite, auf der bestellt wurde
nameTextName des Käufers
firmaTextFirma des Käufers (optional)
kaeufer_idZahlKundenkonto des Käufers auf der Website (leer bei Gast-Bestellung)
emailTextE-Mail des Käufers
telefonTextTelefon des Käufers
lieferartTextabholung oder lieferung
adresseTextLieferadresse (bei Lieferung)
wunschterminTextWunschtermin des Käufers
nachrichtTextNachricht des Käufers
positionenListeBestellte Artikel: id, name, preis, menge, ust (Steuersatz in %)
summeZahlGesamtsumme in Euro (inklusive Versand, abzüglich Gutschein)
versandZahlBerechnete Versandkosten in Euro
rabattZahlAbgezogener Gutschein-Betrag in Euro
gutschein_codeTextEingelöster Gutschein-Code (leer = keiner)
sendungsnummerTextSendungsnummer – beim Setzen in der Verwaltung geht automatisch die Versand-E-Mail raus
zahlungsartTextabholung, ueberweisung, paypal oder absprache
statusTextneu, in_arbeit, erledigt oder storniert
bezahltJa/NeinZahlungseingang markiert?
interne_notizTextEure interne Notiz – sieht der Käufer nie
erstellt_amTextZeitpunkt der Bestellung (ISO-Format)

Rechnung

FeldTypBedeutung
idZahlInterne Nummer
nummerTextRechnungsnummer, z. B. S9-0001
website_idZahlZugehörige Website
bestellung_idZahlZugehörige Bestellung (falls vorhanden)
kunde_nameTextRechnungsempfänger
summeZahlRechnungsbetrag in Euro
statusTextoffen, bezahlt oder storniert
sevdesk_idTextID des sevDesk-Entwurfs (falls übergeben)
erstellt_amTextRechnungsdatum (ISO-Format)

Clearing Center

POST /api/v1/clearing/nachrichten

EDI-Datei einliefern

Liefert eine EDI-Datei ins Clearing Center ein (Kanal „api“). Die Nachrichtenart wird automatisch erkannt – bei EDIFACT verbindlich aus dem UNH-Segment. Nur für Konten, die als Clearing-Teilnehmer freigeschaltet sind.

Feld / ParameterBedeutung
dateiPflicht Die Datei als multipart-Feld (XML, CSV, JSON, TXT oder EDIFACT)
typoptional Nachrichtenart vorgeben (PRICAT, DESADV, INVOIC, SLSRPT, INVRPT …)
empfaenger_glnoptional GLN des Empfängers; leer = global (bei PRICAT)
curl -X POST https://DEINE-PLATTFORM/api/v1/clearing/nachrichten \
  -H "X-API-Key: dein-schluessel" -F "datei=@katalog.edi"
Antwort: {"ok": true, "daten": {"id": 12, "typ": "PRICAT", "format": "edifact", "status": "verarbeitet"}}

Websites

GET /api/v1/websites

Eigene Websites auflisten

Liefert alle deine Websites mit Shop-Status. Die id brauchst du für alle weiteren Aufrufe.

Antwort: {"ok": true, "daten": [{"id": 9, "titel": "B&W Haarliebhaber", "slug": "b-w-haarliebhaber-f57612", "domain": "", "shop_aktiv": true, "shop_modus": "shop"}]}

Artikel

GET /api/v1/websites/{website_id}/artikel

Artikel einer Website auflisten

Alle Artikel, auch unsichtbare.

Antwort: {"ok": true, "daten": [{"id": 12, "name": "Herrenhaarschnitt", "preis": 24.9, "kategorie": "Herren", "aktiv": true, …}]}

POST /api/v1/websites/{website_id}/artikel

Artikel anlegen

Legt einen neuen Artikel an. Nur name ist Pflicht.

Feld / ParameterBedeutung
namePflicht Artikelname
preisoptional Zahl in Euro, z. B. 19.9
beschreibung / einheit / kategorie / bild_urloptional wie im Objekt Artikel
streichpreis / sku / marke / tags / lagerbestandoptional wie im Objekt Artikel
ust_satz / bilder / aktiv / sortierungoptional wie im Objekt Artikel; bilder als Liste von Adressen
aktivoptional true/false, Standard true
sortierungoptional Zahl, Standard 0
curl -X POST https://DEINE-PLATTFORM/api/v1/websites/9/artikel \
  -H "X-API-Key: dein-schluessel" -H "Content-Type: application/json" \
  -d '{"name": "Haarwachs", "preis": 12.9, "kategorie": "Produkte"}'
Antwort: {"ok": true, "daten": {"id": 31, "name": "Haarwachs", …}}

PATCH /api/v1/artikel/{artikel_id}

Artikel ändern

Ändert nur die Felder, die du mitschickst – alles andere bleibt.

Feld / ParameterBedeutung
beliebige Artikel-Felderoptional z. B. nur {"preis": 14.5}
Antwort: {"ok": true, "daten": {"id": 31, "preis": 14.5, …}}

DELETE /api/v1/artikel/{artikel_id}

Artikel löschen

Endgültig – zum bloßen Verstecken lieber PATCH mit {"aktiv": false}.

Antwort: {"ok": true}

Bestellungen

GET /api/v1/websites/{website_id}/bestellungen

Bestellungen auflisten

Neueste zuerst. Mit ?status=neu (oder in_arbeit, erledigt, storniert) filterst du.

Feld / ParameterBedeutung
statusoptional Filter auf einen Status
curl https://DEINE-PLATTFORM/api/v1/websites/9/bestellungen?status=neu \
  -H "X-API-Key: dein-schluessel"
Antwort: {"ok": true, "daten": [{"id": 4, "name": "Max Käufer", "summe": 49.8, "status": "neu", "bezahlt": false, …}]}

GET /api/v1/bestellungen/{bestellung_id}

Eine Bestellung abrufen

Alle Details inklusive Positionen.

Antwort: {"ok": true, "daten": {"id": 4, "positionen": [{"name": "Herrenhaarschnitt", "preis": 24.9, "menge": 2}], …}}

PATCH /api/v1/bestellungen/{bestellung_id}

Bestellung bearbeiten

Status setzen, Zahlungseingang markieren oder die interne Notiz schreiben.

Feld / ParameterBedeutung
statusoptional neu, in_arbeit, erledigt oder storniert
bezahltoptional true/false
interne_notizoptional Text, sieht nur ihr
curl -X PATCH https://DEINE-PLATTFORM/api/v1/bestellungen/4 \
  -H "X-API-Key: dein-schluessel" -H "Content-Type: application/json" \
  -d '{"status": "erledigt", "bezahlt": true}'
Antwort: {"ok": true, "daten": {"id": 4, "status": "erledigt", "bezahlt": true, …}}

Rechnungen

POST /api/v1/bestellungen/{bestellung_id}/rechnung

Rechnung aus Bestellung erstellen

Erstellt die Rechnung an deinen Käufer. Gibt es schon eine, bekommst du die vorhandene zurück (es entsteht nie eine doppelte). Mit hinterlegtem sevDesk-Token wird sie automatisch als Entwurf an dein sevDesk übergeben.

Antwort: {"ok": true, "daten": {"id": 2, "nummer": "S9-0002", "summe": 49.8, "status": "offen", …}}

GET /api/v1/websites/{website_id}/rechnungen

Rechnungen auflisten

Alle Rechnungen dieser Website, neueste zuerst.

Antwort: {"ok": true, "daten": [{"id": 2, "nummer": "S9-0002", "status": "offen", …}]}