miegroup API

Alle offenen Schnittstellen der Plattform. Antworten sind JSON und immer in ein Feld "data" gehüllt; Fehler kommen als {"error":"…"} mit passendem HTTP-Status.

Version v1
in Entwicklung

Version v1 ist in Entwicklung: Es gibt noch keine parallelen Versionsstände, und Änderungen kündigen wir vorab an. Sobald der erste Fremdclient produktiv anbindet, wird v1 auf „stabil“ gesetzt — ab dann gibt es keine brechenden Änderungen mehr ohne Abkündigung mit Frist.

Wird ein Endpunkt abgekündigt, sehen Sie es zuerst an der Antwort selbst: Sie trägt dann den Header „Deprecation“ mit dem Tag der Ankündigung und „Sunset“ mit dem Abschalttermin (RFC 8594), dazu einen Link auf diese Seite. Jede Antwort trägt ohnehin „X-API-Version“ und „X-API-Lifecycle“. Ein abgekündigter Aufruf funktioniert bis zum Abschalttermin unverändert weiter — die Frist ist zum Umstellen da, nicht zur Warnung vor dem Ausfall.

Versionierter Einstieg: https://madeineurope.group/api/v1/… — identical in content to the path without a version marker.

Handelsvertreter — Lead-API

Für Vertriebspartner, die ihre Interessenten aus dem eigenen CRM pflegen: Firmen anmelden, den 30-tägigen Kundenschutz starten, den Bestand abfragen und Excel-Listen importieren. Jede Antwort enthält den Empfehlungs-Link, den Sie in Ihr Anschreiben setzen — registriert sich die Firma darüber, ist die Zuordnung eindeutig.

Basis-URL https://madeineurope.group/api/agent-api
Authentifizierung Header X-Agent-Key

Schlüssel erzeugen Sie in Ihrem Partner-Bereich unter „Auszahlungsdaten“ → „API-Zugang“ (oder Ihr Ansprechpartner stellt einen aus). Vergeben Sie je angebundenem System einen eigenen, benannten Schlüssel mit Laufzeit (höchstens 24 Monate). Der Klartext wird genau einmal angezeigt. Ein gelöschter Schlüssel ist sofort unbrauchbar; die übrigen bleiben gültig.

Beispiele in
GET
/me

Eigene Stammdaten und Empfehlungs-Link

Selbstauskunft: Partner-Code, Status, Basis-Empfehlungs-Link und die Sperrfrist in Tagen. Guter erster Aufruf, um den Schlüssel zu prüfen.

Anfrage
curl -X GET "https://madeineurope.group/api/agent-api/me" \
  -H "X-Agent-Key: $MIEGROUP_KEY"
Antwort
{"data":{"agent":{"id":8,"name":"Muster Vertrieb","code":"HV-7GAMBR","status":"active"},
  "ref_link":"https://madeineurope.group/?ref=HV-7GAMBR","reservation_days":30,
  "stats":{"companies":12,"open_cents":48230,"settled_cents":121500,"unpaid_cents":0,"lifetime_cents":169730}}}
GET
/leads

Eigene Interessenten auflisten

Alle angemeldeten Interessenten mit Status und Restlaufzeit der Reservierung.

ParameterCityTypeBedeutung
statusquerystringFilter: reserved (laufende Sperre), draft (vorgemerkt), expired, converted, released
Anfrage
curl -X GET "https://madeineurope.group/api/agent-api/leads?status=reserved" \
  -H "X-Agent-Key: $MIEGROUP_KEY"
Antwort
{"data":{"leads":[{"id":17,"company_name":"Alpha Werke GmbH","email":"info@alpha-werke.de",
    "match_key":"alpha-werke.de","status":"reserved","days_left":27,
    "reserved_until":"2026-09-10T08:12:00Z","address":"Werkstr. 1, 24103 Kiel, DE",
    "ref_link":"https://madeineurope.group/?ref=HV-7GAMBR&lead=17"}],
  "reservation_days":30,"reserved":1,"drafted":0,"converted":0}}
GET
/leads/check

Vorab prüfen, ob ein Interessent frei ist

Prüft anhand der eindeutigen Website-Hauptdomain, ob die Firma bereits von einem anderen Partner reserviert ist — ohne zu verraten, von wem. Vor dem Anschreiben aufrufen.

ParameterCityTypeBedeutung
website*querystringWebsite; Protokoll, www, Subdomain und Pfad werden auf domain.tld vereinheitlicht
Anfrage
curl -X GET "https://madeineurope.group/api/agent-api/leads/check?website=https%3A%2F%2Fwww.alpha-werke.de%2Fkontakt" \
  -H "X-Agent-Key: $MIEGROUP_KEY"
Antwort
{"data":{"available":false,"blocked_until":"2026-09-10T08:12:00Z","match_key":"alpha-werke.de","website":"alpha-werke.de"}}
POST
/leads

Interessenten anlegen (einzeln oder als Liste)

Ohne "leads" gilt der Rumpf als ein Interessent, mit "leads" werden bis zu 2000 auf einmal angelegt. Das Flag "block" entscheidet über die Sperre: true (Standard) reserviert sofort 30 Tage, false legt nur einen Entwurf an — den sperren Sie später gezielt im Moment des Anschreibens.

  • Pflicht sind company_name und website. Die registrierbare Website-Hauptdomain ist der eindeutige Sperr-Schlüssel; die E-Mail ist optionales Kontaktdatum.
  • Die Postleitzahl ist ein Textfeld (NL „1234 AB“, GB „SW1A 1AA“), das Land nimmt Kürzel oder Namen entgegen.
  • Status je Zeile: reserved · draft · blocked_by_other · already_customer · invalid.
Anfrage
curl -X POST "https://madeineurope.group/api/agent-api/leads" \
  -H "X-Agent-Key: $MIEGROUP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "block": false,
  "leads": [
    {
      "company_name": "Alpha Werke GmbH",
      "website": "alpha-werke.de",
      "email": "info@alpha-werke.de",
      "contact_name": "A. Alpha",
      "phone": "0431 12345",
      "street": "Werkstr. 1",
      "zipcode": "24103",
      "city": "Kiel",
      "country": "Deutschland",
      "note": "Messe Hamburg"
    },
    {
      "company_name": "Beta Tools B.V.",
      "website": "beta-tools.nl",
      "email": "sales@beta-tools.nl",
      "country": "Niederlande"
    }
  ]
}'
Antwort
{"data":{"total":2,"reserved":0,"drafted":2,"blocked_by_other":0,
  "already_customer":0,"invalid":0,"reservation_days":30,
  "results":[
    {"index":0,"company_name":"Alpha Werke GmbH","email":"info@alpha-werke.de","status":"draft",
     "lead_id":17,"match_key":"alpha-werke.de","ref_link":"https://madeineurope.group/?ref=HV-7GAMBR&lead=17"},
    {"index":1,"company_name":"Beta Tools B.V.","email":"sales@beta-tools.nl","status":"draft",
     "lead_id":18,"match_key":"beta-tools.nl","ref_link":"https://madeineurope.group/?ref=HV-7GAMBR&lead=18"}]}}
POST
/leads/block

Sperre jetzt starten (30 Tage ab diesem Moment)

Für den Ablauf „Liste vorbereiten, später anschreiben“: die Firma wird über ihre Lead-ID ODER ihre E-Mail referenziert, einzeln oder als Liste. Die Antwort enthält den Empfehlungs-Link für das Anschreiben.

  • Einzelform ({"id":17} oder {"email":"…"}) liefert die Zeile flach zurück, ohne results-Liste.
Anfrage
curl -X POST "https://madeineurope.group/api/agent-api/leads/block" \
  -H "X-Agent-Key: $MIEGROUP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "leads": [
    {
      "id": 17
    },
    {
      "email": "sales@beta-tools.nl"
    }
  ]
}'
Antwort
{"data":{"blocked":2,"total":2,"reservation_days":30,
  "results":[{"id":17,"status":"reserved","company_name":"Alpha Werke GmbH",
    "reserved_until":"2026-09-10T08:12:00Z","days_left":30,
    "ref_link":"https://madeineurope.group/?ref=HV-7GAMBR&lead=17"}]}}
DELETE
/leads/{id}

Reservierung vorzeitig freigeben

Der Interessent ist danach sofort wieder für alle Partner offen.

ParameterCityTypeBedeutung
id*pathintegerLead-ID aus dem Anlegen
Anfrage
curl -X DELETE "https://madeineurope.group/api/agent-api/leads/17" \
  -H "X-Agent-Key: $MIEGROUP_KEY"
Antwort
{"data":{"released":17}}
POST
/leads/import

Excel-/CSV-Liste hochladen (Schritt 1 von 2)

multipart/form-data mit dem Feld "file" (XLSX oder CSV, max. 2000 Zeilen). Kopfzeile und erste Datenzeile gehen an die automatische Spaltenzuordnung; es entstehen NOCH KEINE Reservierungen. Die Antwort enthält import_id, die erkannte Zuordnung und eine Vorschau.

Anfrage
curl -X POST "https://madeineurope.group/api/agent-api/leads/import" \
  -H "X-Agent-Key: $MIEGROUP_KEY"
Antwort
{"data":{"import_id":4,"filename":"adressen.xlsx","sheet":"Tabelle1","row_count":128,
  "ai_used":true,"headers":["Betrieb","Website","Mailadresse","Ort"],
  "mapping":{"company_name":0,"website":1,"email":2,"city":3,"contact_name":-1,"phone":-1,
    "street":-1,"zipcode":-1,"country":-1,"note":-1},
  "preview":[["Alpha Werke GmbH","alpha-werke.de","info@alpha-werke.de","Kiel"]]}}
GET
/follow-ups

Fällige Wiedervorlagen und auslaufende Reservierungen

Was ansteht: Wiedervorlagen bis zum gewählten Horizont (überfällige zuerst) und getrennt davon die Reservierungen, die demnächst ablaufen.

ParameterCityTypeBedeutung
daysqueryintegerVorausschau in Tagen, Standard 7, max. 90
Anfrage
curl -X GET "https://madeineurope.group/api/agent-api/follow-ups?days=14" \
  -H "X-Agent-Key: $MIEGROUP_KEY"
Antwort
{"data":{"days":14,"overdue_count":2,"expiring_count":1,
  "due":[{"id":17,"company_name":"Alpha Werke GmbH","follow_up_at":"2026-09-02T09:00:00Z",
    "follow_up_note":"Nachfassen — angeschrieben am 26.08.2026","status":"reserved"}],
  "expiring":[{"id":21,"company_name":"Gamma AG","reserved_until":"2026-09-05T00:00:00Z"}]}}
PUT
/leads/{id}/follow-up

Wiedervorlage setzen, ändern oder entfernen

Termin und Notiz zu einem Interessenten. Ein leeres Datum entfernt die Wiedervorlage; ein neuer Termin setzt eine bereits abgehakte wieder auf offen.

ParameterCityTypeBedeutung
id*pathintegerLead-ID
Anfrage
curl -X PUT "https://madeineurope.group/api/agent-api/leads/17/follow-up" \
  -H "X-Agent-Key: $MIEGROUP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "date": "2026-09-02",
  "note": "Nach der Messe erneut anrufen"
}'
Antwort
{"data":{"id":17,"company_name":"Alpha Werke GmbH","follow_up_at":"2026-09-02T09:00:00Z","follow_up_note":"Nach der Messe erneut anrufen"}}
POST
/leads/{id}/follow-up/done

Wiedervorlage abhaken

Der Termin bleibt als Verlauf stehen — so ist später nachvollziehbar, wann zuletzt nachgefasst wurde.

ParameterCityTypeBedeutung
id*pathintegerLead-ID
Anfrage
curl -X POST "https://madeineurope.group/api/agent-api/leads/17/follow-up/done" \
  -H "X-Agent-Key: $MIEGROUP_KEY"
Antwort
{"data":{"id":17,"follow_up_at":"2026-09-02T09:00:00Z","follow_up_done_at":"2026-09-02T11:14:00Z"}}
GET
/outreach

Bausteine für das Anschreiben

Erlaubte Platzhalter, Obergrenze je Sendung, Ihre Antwortadresse und ein Textvorschlag.

Anfrage
curl -X GET "https://madeineurope.group/api/agent-api/outreach" \
  -H "X-Agent-Key: $MIEGROUP_KEY"
Antwort
{"data":{"max":200,"reply_to":"vertrieb@muster.de",
  "ref_link":"https://madeineurope.group/?ref=HV-7GAMBR",
  "placeholders":[{"key":"{{Link}}","desc":"Ihr Empfehlungs-Link für genau diesen Interessenten"}],
  "suggest_subject":"Ihre Produkte auf dem europäischen B2B-Marktplatz","suggest_body":"{{Anrede}} …"}}
POST
/outreach

Interessenten anschreiben (mit Empfehlungs-Link je Empfänger)

Versendet Ihren Text an die gewählten Interessenten. Platzhalter werden je Empfänger ersetzt, die Antwort geht an Ihre Adresse (Reply-To). "block" startet den 30-tägigen Kundenschutz mit dem Anschreiben, "follow_up_days" legt automatisch eine Wiedervorlage an.

  • Der Platzhalter {{Link}} ist Pflicht — ohne ihn ist die Zuordnung der Firma zu Ihnen nicht gesichert.
  • Es werden ausschließlich Interessenten aus Ihrem eigenen Bestand angeschrieben.
  • Höchstens 200 Empfänger je Aufruf.
Anfrage
curl -X POST "https://madeineurope.group/api/agent-api/outreach" \
  -H "X-Agent-Key: $MIEGROUP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "lead_ids": [
    17,
    18
  ],
  "subject": "Ihre Produkte auf dem europäischen B2B-Marktplatz",
  "body": "{{Anrede}}\n\n… hier ist Ihr Zugang:\n{{Link}}\n\nMit freundlichen Grüßen\n{{MeinName}}",
  "block": true,
  "follow_up_days": 7
}'
Antwort
{"data":{"sent":1,"blocked":true,"follow_up_days":7,
  "skipped":[{"lead_id":18,"company_name":"Beta Tools B.V.","reason":"keine E-Mail-Adresse hinterlegt"}]}}
POST
/leads/import/{id}/confirm

Zuordnung bestätigen und übernehmen (Schritt 2 von 2)

Erst hier entstehen Interessenten. Die Zuordnung kann vorher korrigiert werden; -1 bedeutet „Spalte nicht übernehmen“.

ParameterCityTypeBedeutung
id*pathintegerimport_id aus Schritt 1
Anfrage
curl -X POST "https://madeineurope.group/api/agent-api/leads/import/4/confirm" \
  -H "X-Agent-Key: $MIEGROUP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "block": true,
  "mapping": {
    "company_name": 0,
    "website": 1,
    "email": 2,
    "city": 3,
    "contact_name": -1,
    "phone": -1,
    "street": -1,
    "zipcode": -1,
    "country": -1,
    "note": -1
  }
}'
Antwort
{"data":{"created":118,"blocked":6,"skipped":4,"already_customer":0,"row_count":128,
	  "blocked_rows":[{"company_name":"Gamma AG","website":"gamma.de","email":"info@gamma.de","blocked_until":"2026-09-02T00:00:00Z"}]}}

Questions about the integration? Support kontaktieren.