ÉTABLISSEMENTS AVEC ADAPTATION

Vos partenariats. Votre intégration.

Obtenez des annonceurs et des campagnes, créez des liens de suivi et enregistrez les achats de votre propre intégration.

Gérer les clés de l'API
HTTP · JSON · API v1
URL de base https://adtrade.io
01 / Commencer

Authentification

Créez une clé API sous les clés API dans le portail. Sélectionnez uniquement les permissions dont vous avez besoin pour l'intégration. La clé est affichée une fois et appartient au compte où elle a été créée.

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

Gardez la clé sur votre serveur. Envoyez-le dans l'en-tête Autorisation sur HTTPS, jamais dans un lien ou un JavaScript public. Les exemples lisent la variable d'environnement ADTRADE_API_KEY.

Des exemples utilisent cet environnement. Utilisez les clés, les codes de canaux et les codes annonceurs du même environnement. Toutes les valeurs d'exemple sont fictives; soumettre un achat peut créer une transaction réelle.

Cette référence couvre les intégrations externes. L'API du portail interne utilise une connexion séparée. Une autorisation répertoriée dans la gestion des clés n'a pas nécessairement un paramètre externe correspondant.

GET/api/v1/advertisersÉditeur et annonceur

Obtenez des annonceurs

Lisez les profils et les marchés des annonceurs. Les éditeurs peuvent récupérer des liens pour leur propre canal avec un partenariat approuvé.

Autorisation advertisers:read

Paramètres

Dans la chaîne de requêtes URL

Paramètre/typeDescription
pageintegerFacultatif / conditionnelPage 1–1 000 000. Par défaut : 1.
per_pageintegerFacultatif / conditionnel1–100 rangées. Par défaut : 50. Demander les pages suivantes jusqu'à ce que toutes les lignes totales aient été lues.
marketstringFacultatif / conditionnelCode du marché à deux lettres, tel que SE. Préciser le marché des partenariats couvrant plusieurs marchés.
searchstringFacultatif / conditionnelRechercher des noms d'annonceurs. Maximum 100 caractères.
channel_codestringFacultatif / conditionnelVotre chaîne est un code public. Retourne les liens par marché lorsque le partenariat permet le suivi.
Exemple · 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 · Exemple de réponse · extrait
{
    "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
}

La réponse contient des lignes, le total, la page et par_page. Vérifier le statut et approbation_status; la liste peut inclure des annonceurs inactifs ou non approuvés. channel_code nécessite une clé d'éditeur et un canal propriétaire. Utilisez le code public, pas le canal_id interne.

Utilisez tracking_url lorsque tracking_available est vrai dans les liens. Autrement, l'url peut être une adresse de magasin ordinaire sans attribution. Chaque marché a son propre lien. Un marché unique peut également peupler tracking_url sur la ligne de l'annonceur.

GET/api/v1/campaignsÉditeur et annonceur

Campagnes de collecte

Récupérer les offres actuelles et les codes de rabais, avec des liens de suivi pour les canaux d'éditeurs admissibles.

Autorisation campaigns:read

Paramètres

Dans la chaîne de requêtes URL

Paramètre/typeDescription
pageintegerFacultatif / conditionnelPage 1–1 000 000. Par défaut : 1.
per_pageintegerFacultatif / conditionnel1–100 rangées. Par défaut : 50. Demander les pages suivantes jusqu'à ce que toutes les lignes totales aient été lues.
marketstringFacultatif / conditionnelCode du marché à deux lettres, tel que SE. Préciser le marché des partenariats couvrant plusieurs marchés.
Exemple · 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 · Exemple de réponse · extrait
{
    "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
}

Seules les campagnes actives pendant leur période de validité sont indiquées; les dates suivent l'heure suédoise. Les campagnes exclusives dépendent de l'accès au compte. Les réponses de l'éditeur incluent tracking_links, qui peut être vide. Les réponses de l'annonceur n'incluent pas ce champ. Réutiliser les liens retournés et leurs paramètres de campagne.

POST/tAnnonceur

Inscrivez les achats et les événements

Envoyer un événement depuis le serveur de l'annonceur en utilisant une clé d'annonceur. La clé doit appartenir à l'annonceur spécifié dans la demande.

Autorisation transactions:write

Paramètres

Corps de la requête JSON

Paramètre/typeDescription
eventstringRequisNom de l'événement du programme, comme Purchase. Maximum 100 caractères.
advertiserCodestringRequisCode de l'annonceur public (3 à 8 chiffres pour les événements), et non l'ID de la base de données interne.
channelCodestringRequisCode du canal de l'éditeur public (6 à 8 chiffres pour les événements), et non l'ID de la base de données interne.
orderReferencestringFacultatif / conditionnelRequis pour Purchase. Une référence de commande stable et unique par annonceur, maximum 150 caractères. Réutiliser les relevés.
amountstringFacultatif / conditionnelRequis pour Purchase. Chaîne décimal non-négative avec un point et au plus deux décimales, comme 200,00. Suivez les règles de valeur de commande du programme.
currencystringFacultatif / conditionnelRequis pour Purchase. Trois lettres, comme SEK. Doit correspondre à la règle de la commission.
marketstringFacultatif / conditionnelCode du marché à deux lettres, tel que SE. Préciser le marché des partenariats couvrant plusieurs marchés.
clickIdstringFacultatif / conditionnelclickId depuis l'URL d'atterrissage, maximum 100 caractères. Doit appartenir à la même chaîne et annonceur.
clickRefstringFacultatif / conditionnelRéférence de clic personnalisée optionnelle, maximum 255 caractères. N'envoyez pas de données personnelles.
occurredAtintegerFacultatif / conditionnelHorodatage Unix en quelques secondes. Par défaut : heure de réception. Au plus 7 jours dans le passé ou 5 minutes dans le futur.
voucherstringFacultatif / conditionnelCode de réduction en option, maximum 2 000 caractères.
Exemple · 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 · Exemple de réponse · extrait
{
    "status": "accepted",
    "queued": true,
    "receiptId": "00000000-0000-4000-8000-000000000001",
    "event": "Purchase"
}
200 · Exemple de réponse · extrait
{
    "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 nécessite orderReference, le montant et la monnaie. Le canal, le marché, le programme, l'attribution et les règles de commission déterminent si une transaction est créée. D'autres noms d'événements doivent correspondre à la configuration du programme. clickId est optionnel dans le protocole; envoyer la valeur de l'URL d'atterrissage pour lier l'achat à un clic enregistré.

200 signifie que le traitement est terminé ; vérifiez recognized, conversion et duplicate. 202 confirme uniquement la réception dans une file durable. receiptId est un identifiant de reçu, pas un identifiant de transaction ni une promesse de commission. Aucun point d’accès public ne permet de rechercher cet identifiant ; consultez les journaux des événements et transactions dans le portail.

Après un résultat de réseau incertain ou 503, réessayez avec les mêmes données d'achat et orderReference. La même référence de commande pour un annonceur protège contre les transactions financières dupliquées, mais des enregistrements d'événements supplémentaires peuvent être enregistrés. Traitez le 202 tel qu'il a été reçu; ne renvoyez pas simplement parce que la transaction n'est pas encore visible.

POST/api/v1/tracking/voucher-purchaseAnnonceur

Achat de bons exclusifs

Serveur optionnel pour les achats sans attribution de clic. La clé API identifie l'annonceur; une campagne exclusive explicitement activée détermine le canal et le programme.

Autorisation transactions:write

Paramètres

Corps de la requête JSON

Paramètre/typeDescription
voucherstringRequisCode de réduction en option, maximum 2 000 caractères.
orderReferencestringRequisRequis pour Purchase. Une référence de commande stable et unique par annonceur, maximum 150 caractères. Réutiliser les relevés.
amountstringRequisRequis pour Purchase. Chaîne décimal non-négative avec un point et au plus deux décimales, comme 200,00. Suivez les règles de valeur de commande du programme.
currencystringRequisRequis pour Purchase. Trois lettres, comme SEK. Doit correspondre à la règle de la commission.
marketstringRequisCode du marché à deux lettres, tel que SE. Préciser le marché des partenariats couvrant plusieurs marchés.
occurredAtintegerFacultatif / conditionnelHorodatage Unix en quelques secondes. Par défaut : heure de réception. Au plus 7 jours dans le passé ou 5 minutes dans le futur.
Exemple · cURL
curl --request POST "https://adtrade.io/api/v1/tracking/voucher-purchase" \
  --header "Authorization: Bearer $ADTRADE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{"voucher":"EXAMPLE10","orderReference":"EXAMPLE-1001","amount":"200.00","currency":"SEK","market":"SE"}'
200 · Exemple de réponse · extrait
{
    "success": true,
    "conversion": true,
    "duplicate": false,
    "attributionMethod": "exclusive_voucher",
    "transaction": {
        "id": 1001,
        "status": "pending",
        "orderReference": "EXAMPLE-1001",
        "amount": "200.00",
        "commissionAmount": "16.00",
        "currency": "SEK"
    }
}

Désactivé par défaut ; renvoie 404 tant qu’il n’est pas activé. Le code doit correspondre exactement, être sans ambiguïté et être valide pour le marché et la date d’achat. N’envoyez jamais clickId ou channelCode ici : les achats avec clic continuent d’utiliser /t. Réutilisez exactement le même orderReference lors des nouvelles tentatives et entre les intégrations ; les commandes existantes ne sont jamais réattribuées. Ce point d’accès traite l’achat directement dans PostgreSQL et renvoie 200 après traitement, même en mode Kafka. Vérifiez conversion, conversionBlocked et duplicate.

Après un résultat de réseau incertain ou 503, réessayez avec les mêmes données d'achat et orderReference. La même référence de commande pour un annonceur protège contre les transactions financières dupliquées, mais des enregistrements d'événements supplémentaires peuvent être enregistrés. Traitez le 202 tel qu'il a été reçu; ne renvoyez pas simplement parce que la transaction n'est pas encore visible.

GET/tÉditeur

Lien de suivi & redirection

Envoyez les visiteurs à l'annonceur via Adtrade. Préférez le tracking_url retourné par l'API ou le portail.

Aucune clé API · lien de suivi public

Paramètres

Dans la chaîne de requêtes URL

Paramètre/typeDescription
astringRequisCode de l'annonceur public (3 à 8 chiffres pour les événements), et non l'ID de la base de données interne.
cstringRequisCode du canal de l'éditeur public (6 à 8 chiffres pour les événements), et non l'ID de la base de données interne.
mstringFacultatif / conditionnelCode du marché à deux lettres, tel que SE. Préciser le marché des partenariats couvrant plusieurs marchés.
rstringFacultatif / conditionnelRéférence de clic personnalisée optionnelle, maximum 255 caractères. N'envoyez pas de données personnelles.
Exemple · URL
https://adtrade.io/t?a=100&c=1234567&m=SE&r=article-123
302 · Exemple de réponse · extrait
HTTP/1.1 302 Found
Location: https://shop.example.com/?advertiserCode=100&channelCode=1234567&market=SE&clickId=...

Ouvert par le navigateur visitators sans clé API. Une société de personnes valide renvoie normalement 302 à la page d'atterrissage de l'annonceur avec clickId et des informations de suivi. Un lien non valide peut afficher une page de repli à la place. Une visite n'est pas un achat et ne garantit pas la commission. Suivez les termes du programme et les paramètres de consentement.

HTTP / JSON

Réponses & erreurs

Les réponses JSON sont retournées directement sans enveloppe de données. Traiter les montants comme des chaînes décimales. Lire les champs de réponse; un statut HTTP réussi ne signifie pas toujours que la commission a été créée.

200
Traitement. Pour les achats, vérifiez également la conversion et le duplicata.
202
Reçu dans une file d'attente. La validation des activités est en cours.
302
Visiteur redirigé vers l'annonceur.
400
Paramètre ou JSON non valide.
401
Clé API manquante, invalide ou expirée.
403
Autorisation insuffisante, mauvais type de compte ou compte indisponible.
404
La ressource n'est pas trouvée dans l'accès au compte.
413
Demander un corps trop grand. /t permet au plus 64 KiB.
422
Les règles commerciales empêchent le traitement.
429
Trop de demandes. Suivez Retry-Après.
503
Indisponible temporairement ou livraison en file d'attente non confirmée.
429 · JSON
HTTP/1.1 429 Too Many Requests
Retry-After: 5
Content-Type: application/json

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

Les limites s'appliquent aux clés de l'API et aux adresses IP et peuvent être ajustées par les opérations. Sur 429 ou 503, suivez Retry-Après lorsqu'il est présent, utilisez des retards croissants et évitez les retraits parallèles. Conservez la même référence de commande lors de la remise d'un achat.