MIT ADTRADE ENTWICKELN

Ihre Partnerschaften. Ihre Integration.

Advertiser und Kampagnen abrufen, Tracking-Links erstellen und Käufe aus Ihrer eigenen Integration registrieren.

API-Schlüssel verwalten
HTTP · JSON · API v1
Basis-URL https://adtrade.io
01 / Erste Schritte

Authentifizierung

Erstellen Sie im Portal unter API-Schlüssel einen Schlüssel. Wählen Sie nur die erforderlichen Berechtigungen. Der Schlüssel wird einmal angezeigt und gehört zu dem Konto, in dem er erstellt wurde.

HTTP headers
Authorization: Bearer $ADTRADE_API_KEY
Accept: application/json

Bewahren Sie den Schlüssel auf Ihrem Server auf. Senden Sie ihn im Authorization-Header über HTTPS, niemals in einem Link oder öffentlichem JavaScript. Die Beispiele lesen die Umgebungsvariable ADTRADE_API_KEY.

Die Beispiele verwenden diese Umgebung. Schlüssel, Kanal- und Advertiser-Codes müssen aus derselben Umgebung stammen. Alle Beispielwerte sind fiktiv; das Senden eines Kaufs kann eine echte Transaktion erzeugen.

Diese Referenz beschreibt externe Integrationen. Die interne Portal-API verwendet eine separate Anmeldung. Eine Berechtigung in der Schlüsselverwaltung bedeutet nicht automatisch, dass ein entsprechender externer Endpunkt existiert.

GET/api/v1/advertisersPublisher & Advertiser

Advertiser abrufen

Profile und Märkte der Advertiser abrufen. Publisher können Links für eigene Kanäle mit genehmigter Partnerschaft erhalten.

Berechtigung advertisers:read

Parameter

Im Query-String der URL

Parameter / TypBeschreibung
pageintegerOptional / bedingtSeite 1–1.000.000. Standard: 1.
per_pageintegerOptional / bedingt1–100 Einträge. Standard: 50. Weitere Seiten abrufen, bis alle total Einträge gelesen wurden.
marketstringOptional / bedingtMarktcode mit zwei Buchstaben, z. B. SE. Bei Partnerschaften in mehreren Märkten den Markt angeben.
searchstringOptional / bedingtAdvertiser-Namen durchsuchen. Höchstens 100 Zeichen.
channel_codestringOptional / bedingtÖffentlicher Code Ihres Kanals. Liefert Links je Markt, wenn die Partnerschaft Tracking erlaubt.
Beispiel · cURL
curl --get "https://adtrade.io/api/v1/advertisers?market=SE&page=1&per_page=50" \
  --header "Authorization: Bearer $ADTRADE_API_KEY" \
  --header "Accept: application/json"
200 · Beispielantwort · Auszug
{
    "rows": [
        {
            "id": 4,
            "advertiser_code": "100",
            "name": "Example Store",
            "status": "active",
            "approval_status": "approved",
            "website_url": "https://shop.example.com",
            "tracking_url": null,
            "links": []
        }
    ],
    "total": 1,
    "page": 1,
    "per_page": 50
}

Die Antwort enthält rows, total, page und per_page. Prüfen Sie status und approval_status; auch inaktive oder nicht genehmigte Advertiser können enthalten sein. channel_code erfordert einen Publisher-Schlüssel und einen eigenen Kanal. Verwenden Sie den öffentlichen Code, nicht die interne channel_id.

Verwenden Sie tracking_url, wenn tracking_available in links true ist. Andernfalls kann url eine normale Shop-Adresse ohne Attribution sein. Märkte haben getrennte Links. Bei einem einzelnen Markt kann tracking_url auch direkt im Advertiser-Eintrag stehen.

GET/api/v1/campaignsPublisher & Advertiser

Kampagnen abrufen

Aktuelle Angebote und Rabattcodes abrufen, mit Tracking-Links für berechtigte Publisher-Kanäle.

Berechtigung campaigns:read

Parameter

Im Query-String der URL

Parameter / TypBeschreibung
pageintegerOptional / bedingtSeite 1–1.000.000. Standard: 1.
per_pageintegerOptional / bedingt1–100 Einträge. Standard: 50. Weitere Seiten abrufen, bis alle total Einträge gelesen wurden.
marketstringOptional / bedingtMarktcode mit zwei Buchstaben, z. B. SE. Bei Partnerschaften in mehreren Märkten den Markt angeben.
Beispiel · cURL
curl --get "https://adtrade.io/api/v1/campaigns?market=SE&page=1&per_page=50" \
  --header "Authorization: Bearer $ADTRADE_API_KEY" \
  --header "Accept: application/json"
200 · Beispielantwort · Auszug
{
    "rows": [
        {
            "id": "12",
            "advertiser_id": "4",
            "advertiser_name": "Example Store",
            "description": "10% discount",
            "discount_code": "EXAMPLE10",
            "markets": [
                "SE"
            ],
            "tracking_links": [
                {
                    "channel_code": "1234567",
                    "channel_name": "Example Channel",
                    "market": "SE",
                    "url": "https://adtrade.io/t?a=100&c=1234567&m=SE&campaign=12&voucher=EXAMPLE10"
                }
            ]
        }
    ],
    "total": 1,
    "page": 1,
    "per_page": 50
}

Nur aktive Kampagnen innerhalb ihrer Gültigkeitsdauer werden angezeigt; Datumsangaben folgen schwedischer Zeit. Exklusive Kampagnen hängen vom Kontozugriff ab. Publisher-Antworten enthalten tracking_links, das leer sein kann. Advertiser-Antworten enthalten dieses Feld nicht. Verwenden Sie die gelieferten Links samt Kampagnenparametern.

POST/tAdvertiser

Käufe und Ereignisse registrieren

Ereignisse vom Server des Advertisers mit einem Advertiser-Schlüssel senden. Der Schlüssel muss zum angegebenen Advertiser gehören.

Berechtigung transactions:write

Parameter

JSON im Request-Body

Parameter / TypBeschreibung
eventstringErforderlichEreignisname des Programms, z. B. Purchase. Höchstens 100 Zeichen.
advertiserCodestringErforderlichÖffentlicher Advertiser-Code (3–8 Ziffern für Ereignisse), nicht die interne Datenbank-ID.
channelCodestringErforderlichÖffentlicher Publisher-Kanalcode (6–8 Ziffern für Ereignisse), nicht die interne Datenbank-ID.
orderReferencestringOptional / bedingtFür Purchase erforderlich. Stabile, eindeutige Bestellreferenz je Advertiser, höchstens 150 Zeichen. Bei Wiederholungen beibehalten.
amountstringOptional / bedingtFür Purchase erforderlich. Nichtnegative Dezimalzeichenfolge mit Punkt und höchstens zwei Nachkommastellen, z. B. 200.00. Regeln des Programms zum Bestellwert beachten.
currencystringOptional / bedingtFür Purchase erforderlich. Drei Buchstaben, z. B. SEK. Muss zur Provisionsregel passen.
marketstringOptional / bedingtMarktcode mit zwei Buchstaben, z. B. SE. Bei Partnerschaften in mehreren Märkten den Markt angeben.
clickIdstringOptional / bedingtclickId aus der Landing-URL, höchstens 100 Zeichen. Muss zum selben Kanal und Advertiser gehören.
clickRefstringOptional / bedingtOptionale eigene Klickreferenz, höchstens 255 Zeichen. Keine personenbezogenen Daten senden.
occurredAtintegerOptional / bedingtUnix-Zeit in Sekunden. Standard: Empfangszeit. Höchstens 7 Tage zurück oder 5 Minuten voraus.
voucherstringOptional / bedingtOptionaler Rabattcode, höchstens 2.000 Zeichen.
Beispiel · cURL
curl --request POST "https://adtrade.io/t" \
  --header "Authorization: Bearer $ADTRADE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "event": "Purchase", "advertiserCode": "100",
    "channelCode": "1234567", "market": "SE",
    "clickId": "CLICK_ID_FROM_LANDING_URL",
    "orderReference": "EXAMPLE-1001",
    "amount": "200.00", "currency": "SEK"
  }'
202 · Beispielantwort · Auszug
{
    "status": "accepted",
    "queued": true,
    "receiptId": "00000000-0000-4000-8000-000000000001",
    "event": "Purchase"
}
200 · Beispielantwort · Auszug
{
    "success": true,
    "eventId": 101,
    "event": "Purchase",
    "recognized": true,
    "conversion": true,
    "duplicate": false,
    "transaction": {
        "id": 1001,
        "status": "pending",
        "orderReference": "EXAMPLE-1001",
        "amount": "200.00",
        "commissionAmount": "16.00",
        "currency": "SEK"
    }
}

Purchase erfordert orderReference, amount und currency. Kanal, Markt, Programm, Attribution und Provisionsregeln bestimmen, ob eine Transaktion entsteht. Andere Ereignisnamen müssen zur Programmkonfiguration passen. clickId ist im Protokoll optional; senden Sie den Wert aus der Landing-URL, um den Kauf einem registrierten Klick zuzuordnen.

200 bedeutet abgeschlossen; prüfen Sie recognized, conversion und duplicate. 202 bestätigt nur den Eingang in einer dauerhaften Warteschlange. receiptId ist eine Empfangs-ID, keine Transaktions-ID oder Provisionszusage. Dafür gibt es keinen öffentlichen Abfrage-Endpunkt; prüfen Sie die Ereignis- und Transaktionsprotokolle im Portal.

Bei unklarem Netzwerkergebnis oder 503 mit denselben Kaufdaten und derselben orderReference erneut versuchen. Die gleiche Bestellreferenz je Advertiser schützt vor doppelten Finanztransaktionen; zusätzliche Ereignisse können protokolliert werden. 202 als empfangen behandeln und nicht nur wegen einer noch unsichtbaren Transaktion erneut senden.

GET/tPublisher

Tracking-Link & Weiterleitung

Besucher über Adtrade zum Advertiser leiten. Verwenden Sie bevorzugt die tracking_url aus API oder Portal.

Kein API-Schlüssel · öffentlicher Tracking-Link

Parameter

Im Query-String der URL

Parameter / TypBeschreibung
astringErforderlichÖffentlicher Advertiser-Code (3–8 Ziffern für Ereignisse), nicht die interne Datenbank-ID.
cstringErforderlichÖffentlicher Publisher-Kanalcode (6–8 Ziffern für Ereignisse), nicht die interne Datenbank-ID.
mstringOptional / bedingtMarktcode mit zwei Buchstaben, z. B. SE. Bei Partnerschaften in mehreren Märkten den Markt angeben.
rstringOptional / bedingtOptionale eigene Klickreferenz, höchstens 255 Zeichen. Keine personenbezogenen Daten senden.
Beispiel · URL
https://adtrade.io/t?a=100&c=1234567&m=SE&r=article-123
302 · Beispielantwort · Auszug
HTTP/1.1 302 Found
Location: https://shop.example.com/?advertiserCode=100&channelCode=1234567&market=SE&clickId=...

Wird ohne API-Schlüssel im Browser des Besuchers geöffnet. Eine gültige Partnerschaft liefert normalerweise 302 zur Landingpage mit clickId und Tracking-Daten. Ein ungültiger Link kann stattdessen eine Fallback-Seite anzeigen. Ein Besuch ist kein Kauf und garantiert keine Provision. Beachten Sie Programmbedingungen und Einwilligungseinstellungen.

HTTP / JSON

Antworten & Fehler

JSON-Antworten werden direkt ohne data-Hülle geliefert. Beträge als Dezimalzeichenfolgen behandeln. Prüfen Sie die Antwortfelder; ein erfolgreicher HTTP-Status bedeutet nicht immer eine erzeugte Provision.

200
Verarbeitet. Bei Käufen auch conversion und duplicate prüfen.
202
In Warteschlange empfangen. Fachliche Validierung steht aus.
302
Besucher wird zum Advertiser weitergeleitet.
400
Ungültiger Parameter oder ungültiges JSON.
401
API-Schlüssel fehlt, ist ungültig oder abgelaufen.
403
Berechtigung fehlt, falscher Kontotyp oder Konto nicht verfügbar.
404
Ressource im Zugriff des Kontos nicht gefunden.
413
Request-Body zu groß. /t erlaubt höchstens 64 KiB.
422
Geschäftsregeln verhindern die Verarbeitung.
429
Zu viele Anfragen. Retry-After beachten.
503
Vorübergehend nicht verfügbar oder Warteschlangenzustellung unbestätigt.
429 · JSON
HTTP/1.1 429 Too Many Requests
Retry-After: 5
Content-Type: application/json

{
  "error": "rate_limit_exceeded",
  "retry_after": 5
}

Limits gelten für API-Schlüssel und IP-Adressen und können betrieblich angepasst werden. Bei 429 oder 503 Retry-After beachten, falls vorhanden, Wartezeiten erhöhen und parallele Wiederholungen vermeiden. Beim erneuten Senden eines Kaufs die Bestellreferenz beibehalten.