Doku
Partner-API
Für freigegebene Partner: Erstellen Sie Chart-Premium-Aktivierungscodes für Ihre Kunden aus Ihren eigenen Systemen (CRM, Kundenbereich, Onboarding) und sehen Sie, welche verwendet wurden. Über das Partnerprogramm.
Authentifizierung
Erstellen Sie einen Schlüssel auf Ihrer Partnerseite und senden Sie ihn im Authorization-Header. Schlüssel sehen aus wie mdp_pk_3f9a1c07de_…; wir speichern nur einen Fingerabdruck, ein verlorener Schlüssel kann also nicht erneut angezeigt werden: Erstellen Sie einen neuen.
curl https://app.marketapi.app/partner/v1/account \
-H "Authorization: Bearer mdp_pk_YOUR_KEY"
Rotation ohne Ausfallzeit: Rotieren erstellt einen neuen Schlüssel und lässt den alten 24 Stunden weiterlaufen. Tragen Sie den neuen Schlüssel in Ihren Systemen ein, dann läuft der alte von selbst ab (oder widerrufen Sie ihn sofort). Legen Sie nie einen Schlüssel in eine Webseite oder mobile App: Rufen Sie die API von Ihrem Server auf.
Limits: 120 Anfragen pro Minute und Partner; zu viele fehlgeschlagene Schlüssel von einer Adresse werden für 10 Minuten gesperrt. Fehler sind JSON: {"error": "…", "code": "invalid"} mit HTTP 400, 401, 405 oder 429.
Ihre Plätze
GET /partner/v1/account
{"partner_id": "MP-7KQ3TA", "name": "Example Broker", "status": "active",
"seats": [{"plan": "pro", "name": "Pro", "days": 30, "left": 48, "trial": false, "expires_at": null}]}
Jeder Platz ist ein Aktivierungscode für einen Tarif und eine Laufzeit (30, 91, 182 oder 365 Tage). Kaufen Sie Platzpakete auf Ihrer Partnerseite (30 % unter dem Normalpreis, Pakete zu 10, 50, 250).
Codes erstellen
POST /partner/v1/codes mit einem JSON-Body:
| Feld | Bedeutung |
|---|---|
plan | pro oder proplus |
months | 1, 3, 6 oder 12 (die Laufzeit des Platzes) oder days |
count | wie viele Codes (1–5000); kann weggelassen werden, wenn Sie Referenzen angeben |
customer_refs | optional: Ihre eigene Referenz für jeden Code (z. B. die Kontonummer des Kunden), bis zu 120 Zeichen je Code. Wir speichern sie maskiert (45•••68) mit einem verschlüsselten Fingerabdruck, sodass Sie einen Code anhand der vollständigen Referenz finden können, wir sie aber nie aufbewahren. |
expires_days | wie lange ein unbenutzter Code gültig bleibt (Standard 365; Testplätze enden früher). Ein unbenutzter Code, der abläuft, gibt seinen Platz zurück. |
batch | optionaler Name, um den Stapel wiederzuerkennen |
Senden Sie einen Idempotency-Key-Header (beliebiger eindeutiger Text): Wird Ihre Anfrage wiederholt, erhalten Sie dieselben Codes statt neuer zurück (24 Stunden lang).
curl -X POST https://app.marketapi.app/partner/v1/codes \
-H "Authorization: Bearer mdp_pk_YOUR_KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: onboarding-45123468" \
-d '{"plan": "pro", "months": 1, "customer_refs": ["45123468"]}'
201 {"count": 1, "codes": [{"code": "K7QM-3XTP-9RWA-FD2H", "hint": "FD2H", "customer_ref": "45•••68",
"plan": "pro", "days": 30, "expires_at": "2027-10-17T08:00:00+00:00"}]}
Die Codes stehen nur einmal in der Antwort. Geben Sie jedem Kunden seinen Code; er gibt ihn auf https://app.marketapi.app/premium ein (angemeldet), und der Tarif beginnt sofort oder nach dem Tarif, den er bereits hat.
Große Stapel: Mehr als 100 Codes werden von unserer Aufgabenwarteschlange erstellt. Die Antwort lautet 202 {"job": 812, "url": "/partner/v1/jobs/812"}; fragen Sie diese URL ab, bis status done ist; die Codes stehen nur beim ersten Mal in dieser Antwort.
GET /partner/v1/jobs/812
{"status": "queued", "position": 2, "eta_s": 4.0} → {"status": "done", "count": 2000, "codes": [ … ]}
Codes finden
GET /partner/v1/codes?customer_ref=45123468&status=unused&limit=100&offset=0 — Status: unused, redeemed oder cancelled.
{"codes": [{"id": 9134, "hint": "FD2H", "customer_ref": "45•••68", "plan": "pro", "days": 30, "status": "redeemed",
"created_at": "…", "expires_at": "…", "redeemed_at": "…"}]}
Einen Code stornieren
POST /partner/v1/codes/9134/cancel — nur unbenutzte Codes; der Platz ist sofort wieder frei.
Sicherheit
- Jeder Aufruf erfolgt über HTTPS; Schlüssel werden in konstanter Zeit verglichen, und nur ihr verschlüsselter Fingerabdruck wird gespeichert.
- Wir schreiben an Ihre Kontaktadresse, wann immer ein Schlüssel erstellt oder rotiert wird.
- Codes bestehen aus 16 Zeichen aus 32 Symbolen (80 Bit), werden einmal angezeigt, nur als Fingerabdruck gespeichert und bei der Eingabe auf 10 Versuche pro Stunde und Konto begrenzt.