BYGG MED ADTRADE

Dina samarbeten. Din integration.

Hämta annonsörer och kampanjer, skapa spårningslänkar och registrera köp från din egen integration.

Hantera API-nycklar
HTTP · JSON · API v1
Basadress https://adtrade.io
01 / Kom igång

Autentisering

Skapa en API-nyckel i portalen under API-nycklar. Välj bara behörigheterna integrationen behöver. Nyckeln visas en gång och hör till det konto där den skapades.

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

Förvara nyckeln på din server. Skicka den i Authorization-headern över HTTPS, aldrig i en länk eller i offentlig JavaScript-kod. Exemplen läser miljövariabeln ADTRADE_API_KEY.

Exemplen följer den här miljön. Använd nycklar, kanal- och annonsörskoder från samma miljö. Alla värden i exemplen är exempeldata; att skicka ett köp kan skapa en riktig transaktion.

Referensen beskriver externa integrationsmetoder. Portalens interna API använder en separat inloggning. En behörighet i nyckelhanteringen innebär inte att det finns en motsvarande extern metod.

GET/api/v1/advertisersPublicist & annonsör

Hämta annonsörer

Läs annonsörernas profiler och marknader. Publicister kan få länkar för en egen kanal med ett godkänt samarbete.

Behörighet advertisers:read

Parametrar

I URL:ens query-sträng

Parameter / typBeskrivning
pageintegerValfri / villkoradSida 1–1 000 000. Standard: 1.
per_pageintegerValfri / villkorad1–100 rader. Standard: 50. Hämta nästa sida tills alla total rader har lästs.
marketstringValfri / villkoradTvåställig marknadskod, t.ex. SE. Ange marknaden när samarbetet omfattar flera marknader.
searchstringValfri / villkoradSök i annonsörsnamn. Högst 100 tecken.
channel_codestringValfri / villkoradDen egna kanalens publika kod. Ger marknadsvisa spårningslänkar när samarbetet tillåter det.
Exempel · 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 · Exempel på svar · utdrag
{
    "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
}

Svaret innehåller rows, total, page och per_page. Kontrollera status och approval_status; listan kan även innehålla annonsörer som inte är aktiva eller godkända. channel_code kan bara användas med en publicistnyckel för en egen kanal. Använd kanalens kod, inte dess interna channel_id.

Använd tracking_url när tracking_available är true i links. url kan annars vara en vanlig butiksadress utan attribuering. Flera marknader ger separata länkar. En ensam marknad kan också ge tracking_url på annonsörsraden.

GET/api/v1/campaignsPublicist & annonsör

Hämta kampanjer

Hämta aktuella erbjudanden och rabattkoder, med färdiga spårningslänkar för publicistens behöriga kanaler.

Behörighet campaigns:read

Parametrar

I URL:ens query-sträng

Parameter / typBeskrivning
pageintegerValfri / villkoradSida 1–1 000 000. Standard: 1.
per_pageintegerValfri / villkorad1–100 rader. Standard: 50. Hämta nästa sida tills alla total rader har lästs.
marketstringValfri / villkoradTvåställig marknadskod, t.ex. SE. Ange marknaden när samarbetet omfattar flera marknader.
Exempel · 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 · Exempel på svar · utdrag
{
    "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
}

Endast aktiva kampanjer inom giltighetsperioden visas; datumen följer svensk tid. Exklusiva kampanjer begränsas av kontots åtkomst. Publicistens svar får tracking_links, som kan vara tom. Annonsörens svar har inte detta fält. Återanvänd returnerade länkar och deras kampanjparametrar.

POST/tAnnonsör

Registrera köp och händelser

Skicka en händelse från annonsörens server med en annonsörsnyckel. Nyckeln måste tillhöra annonsören som anges i anropet.

Behörighet transactions:write

Parametrar

JSON i request body

Parameter / typBeskrivning
eventstringObligatoriskProgrammets händelsenamn, t.ex. Purchase. Högst 100 tecken.
advertiserCodestringObligatoriskAnnonsörens publika kod (3–8 siffror för händelser), inte dess interna databas-ID.
channelCodestringObligatoriskPublicistkanalens publika kod (6–8 siffror för händelser), inte dess interna databas-ID.
orderReferencestringValfri / villkoradObligatorisk för Purchase. En stabil, unik orderreferens per annonsör, högst 150 tecken. Återanvänd vid omförsök.
amountstringValfri / villkoradObligatorisk för Purchase. Icke-negativ decimalsträng med punkt, högst två decimaler. T.ex. 200.00; följ programmets regler för ordervärde.
currencystringValfri / villkoradObligatorisk för Purchase. Tre bokstäver, t.ex. SEK. Måste stämma med provisionsregeln.
marketstringValfri / villkoradTvåställig marknadskod, t.ex. SE. Ange marknaden när samarbetet omfattar flera marknader.
clickIdstringValfri / villkoradclickId från landningssidans URL, högst 100 tecken. Måste höra till samma kanal och annonsör.
clickRefstringValfri / villkoradValfri egen klickreferens, högst 255 tecken. Skicka inte personuppgifter.
occurredAtintegerValfri / villkoradUnix-tid i sekunder. Standard: mottagningstid. Högst 7 dagar bakåt eller 5 minuter framåt.
voucherstringValfri / villkoradValfri rabattkod, högst 2 000 tecken.
Exempel · 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 · Exempel på svar · utdrag
{
    "status": "accepted",
    "queued": true,
    "receiptId": "00000000-0000-4000-8000-000000000001",
    "event": "Purchase"
}
200 · Exempel på svar · utdrag
{
    "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 kräver orderReference, amount och currency. Kanal, marknad, program, attribuering och provisionsregler avgör om en transaktion skapas. Andra händelsenamn måste motsvara programmets konfiguration. clickId är valfritt i protokollet; skicka det från landningslänken för att knyta köpet till ett registrerat klick.

200 betyder att händelsen har behandlats; kontrollera recognized, conversion och duplicate. 202 betyder endast att den har tagits emot i en beständig kö. receiptId är ett mottagnings-ID, inte ett transaktions-ID eller ett löfte om provision. Det finns ingen publik metod för att slå upp detta ID; följ utfallet i portalens händelse- och transaktionslogg.

Vid osäkert nätverksutfall eller 503: försök igen med samma köpdata och samma orderReference. Samma orderreferens för en annonsör skyddar mot dubbla finansiella transaktioner, men fler händelseposter kan loggas. Behandla 202 som mottaget och skicka inte om bara för att transaktionen ännu inte syns.

GET/tPublicist

Spårningslänk & redirect

Länka besökaren till annonsören via Adtrade. Använd i första hand den färdiga tracking_url som API:t eller portalen ger dig.

Ingen API-nyckel · publik spårningslänk

Parametrar

I URL:ens query-sträng

Parameter / typBeskrivning
astringObligatoriskAnnonsörens publika kod (3–8 siffror för händelser), inte dess interna databas-ID.
cstringObligatoriskPublicistkanalens publika kod (6–8 siffror för händelser), inte dess interna databas-ID.
mstringValfri / villkoradTvåställig marknadskod, t.ex. SE. Ange marknaden när samarbetet omfattar flera marknader.
rstringValfri / villkoradValfri egen klickreferens, högst 255 tecken. Skicka inte personuppgifter.
Exempel · URL
https://adtrade.io/t?a=100&c=1234567&m=SE&r=article-123
302 · Exempel på svar · utdrag
HTTP/1.1 302 Found
Location: https://shop.example.com/?advertiserCode=100&channelCode=1234567&market=SE&clickId=...

Öppnas av besökarens webbläsare utan API-nyckel. Ett giltigt samarbete ger normalt 302 till annonsörens landningssida med clickId och spårningsinformation. En ogiltig länk kan i stället visa en fallback-sida. Ett besök är inte ett köp och skapar ingen garanterad provision. Följ programmets villkor och samtyckesinställningar.

HTTP / JSON

Svar & felhantering

JSON-svar returneras direkt, utan ett data-omslag. Belopp bör hanteras som decimalsträngar. Läs fälten i svaret; en lyckad HTTP-status betyder inte alltid att provision har skapats.

200
Behandlat. För köp: läs även conversion och duplicate.
202
Mottaget i kö. Affärsvalidering återstår.
302
Besökaren skickas vidare till annonsören.
400
Ogiltig parameter eller JSON.
401
API-nyckeln saknas, är ogiltig eller har löpt ut.
403
Fel behörighet, kontotyp eller otillgängligt konto.
404
Resursen kunde inte hittas inom kontots åtkomst.
413
För stor request body. /t tillåter högst 64 KiB.
422
Affärsregler hindrar behandlingen.
429
För många anrop. Följ Retry-After.
503
Tillfälligt otillgängligt eller obekräftad köleverans.
429 · JSON
HTTP/1.1 429 Too Many Requests
Retry-After: 5
Content-Type: application/json

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

Begränsningar gäller både API-nyckel och IP och kan ändras av driften. Vid 429 eller 503: följ Retry-After om headern finns, använd gradvis längre väntetid och undvik parallella omförsök. Ändra inte orderreferensen när ett köp skickas igen.