Authentifizierung und erste Anfrage
Die Basis-URL der API lautet https://api.weprofit.com/v1/dev. Erstelle auf der Seite „Entwickler“ in der Karte „API-Tokens“ ein persönliches Zugriffstoken. Sende es im Authorization-Header als Bearer-Token. Bewahre das Token in deiner Serverumgebung auf, nicht im JavaScript deines Onlineshops oder in einem öffentlichen Repository.
Das Token übernimmt die Shop-Berechtigungen seines Inhabers. Mitarbeiter brauchen Entwicklerzugriff und die passende Berechtigung für Analysen oder Events. Widerrufene oder abgelaufene Tokens werden abgelehnt.
curl https://api.weprofit.com/v1/dev/stores \
-H "Authorization: Bearer $WEPROFIT_API_TOKEN"Wähle einen Shop aus der Antwort
Nutze für weitere Anfragen eine ID, die der Endpunkt /stores zurückgibt. Die folgenden Werte sind Beispiele und enthalten keine Kundendaten.
{
"items": [{
"id": "STORE_ID",
"name": "Example store",
"platform": "shopify",
"currency": "USD",
"timezone": "America/New_York",
"role": "owner"
}]
}Reporting-Endpunkte
Alle folgenden Pfade sind relativ zur API-Basis und erfordern eine Bearer-Authentifizierung. Ersetze :storeId durch die ID eines zugänglichen, aktiven Shops. Die Tabelle umfasst die Lesezugriffe für das Reporting. Die REST-API unterstützt außerdem Aktualisierungen der Werbeausgaben und die Verwaltung von Webhook-Abonnements; sie ist also keine reine Lese-API.
| Methode und Pfad | Zweck | Optionale Query-Parameter |
|---|---|---|
| GET /me | Nutzeridentität und nicht geheime Token-Metadaten | Keine |
| GET /stores | Zugängliche aktive Shops und ihre IDs | Keine |
| GET /stores/:storeId/summary | Übersicht zu Besuchern, Sitzungen, Käufen, Umsatz, Abdeckung und Gewinn | from, to |
| GET /stores/:storeId/orders | Bestellungen, Attribution und Übermittlungsstatus pro Netzwerk | from, to, limit, cursor und Bestellfilter |
| GET /stores/:storeId/events | Normalisierte Events, Quelle, Kanal, Einwilligungsstatus und Wert | from, to, limit, cursor und Event-Filter |
| GET /stores/:storeId/profit | Umsatz, Rückerstattungen, Produktkosten, Gebühren, Versand, Werbeausgaben und Nettogewinn | from, to |
| GET /stores/:storeId/profit/timeseries | Tägliche Zeitreihe zu Gewinn und Kosten | from, to |
| GET /stores/:storeId/profit/ad-spend | Werbeausgaben nach Tag, Netzwerk und Kampagne | month, im Format YYYY-MM |
Datumsangaben, Filter und Paginierung
Gib from und to als inklusive UTC-Datumswerte im Format YYYY-MM-DD an. Fehlen sie, umfasst der Berichtszeitraum standardmäßig heute und die sechs Tage davor. Setze für wiederholbare Vergleiche beide Datumswerte explizit. Der Endpunkt /profit/ad-spend nutzt stattdessen month und verwendet standardmäßig den aktuellen UTC-Monat.
Bestell- und Event-Listen liefern standardmäßig 50 Zeilen und höchstens 200. Die neuesten Ergebnisse kommen zuerst. Übergib den zurückgegebenen nextCursor unverändert, um eine weitere Seite abzurufen. Die Daten können sich während der Paginierung ändern; du erhältst also keine eingefrorene Momentaufnahme.
- Zu den Bestellfiltern gehören order_id, status, financial_status, tracked, link_method, link_confidence, channel, currency, min_total, max_total und sent_to.
- Zu den Event-Filtern gehören event_name, event_id, source, channel, country, url_contains, consent_state, currency, min_value und max_value.
- Beide Listen unterstützen visitor_id und session_id. Event-Filter unterstützen außerdem checkout_token und cart_token.
curl "https://api.weprofit.com/v1/dev/stores/STORE_ID/profit?from=2026-09-01&to=2026-09-07" \
-H "Authorization: Bearer $WEPROFIT_API_TOKEN"Mehrere Shops in einer Anfrage abrufen
GET /summary, /orders, /events, /profit und /profit/timeseries erwarten den Query-Parameter stores mit bis zu 50 kommagetrennten Shop-IDs. Gib dieselben Datums- und Filteroptionen an wie bei der entsprechenden Anfrage für einen einzelnen Shop.
Batch-Antworten enthalten results mit unabhängigen Erfolgs- oder Fehlereinträgen für jeden Shop. Ein abgelehnter Shop macht die anderen nicht ungültig. Erfolgreiche Ergebnisse für Summary, Bestellungen und Events liefern ihre Payload unter data; erfolgreiche Profit-Ergebnisse geben ihre Gewinnfelder neben storeId und ok aus. Das Bestell- oder Event-Ergebnis jedes Shops hat seinen eigenen nextCursor.
Gewinnfelder richtig interpretieren
Gewinnberichte nutzen erfasste und geschätzte Kostenwerte. Stornierte Bestellungen sind aus der Gewinnberechnung ausgeschlossen und werden separat ausgewiesen. Das Feld margin ist null, wenn der Nettoumsatz 0 beträgt.
Der Endpunkt /profit/timeseries liefert Tage mit Bestellungen oder Werbeausgaben, keinen mit Nullwerten aufgefüllten Kalender. Das Feld netProfit berücksichtigt Rückerstattungen, obwohl die einzelnen Einträge der Zeitreihe kein eigenes Feld für Rückerstattungen enthalten. Nutze den aggregierten Profit-Endpunkt, wenn du die Summe der Rückerstattungen explizit brauchst.
Rate Limits und häufige Fehler
Die aktuellen Limits liegen bei 240 Anfragen pro Minute und 20.000 Anfragen pro Tag und Token. Reduziere bei einem Rate Limit die Anfragefrequenz und nutze eine begrenzte Zahl von Wiederholungsversuchen. Wiederhole Anfragen mit ungültigen Zugangsdaten oder fehlenden Berechtigungen nicht, ohne die Ursache zu beheben.
| HTTP-Status | Bedeutung | Nächster Schritt |
|---|---|---|
| 400 validation_error | Ungültige Datumsangaben, Filter oder andere Eingaben in der Query | Korrigiere die Parameter der Anfrage. |
| 401 unauthorized | Fehlendes, widerrufenes oder abgelaufenes Token | Nutze ein aktives Token und den Bearer-Header. |
| 402 plan_required | Der Shop hat nicht die erforderliche Tarifberechtigung | Prüfe die Abrechnung des Shops und eventuelle Einschränkungen wegen Überschreitung des Limits. |
| 403 forbidden | Unzureichende Berechtigung | Bitte den Inhaber, den Zugriff des Token-Nutzers zu prüfen. |
| 404 store_not_found | Shop für diese Anfrage nicht verfügbar | Nutze eine zugängliche aktive ID aus GET /stores. |
| 429 rate_limited | Anfragelimit des Tokens erreicht | Warte ab und reduziere das Anfragevolumen. |