Aller au contenu principal

Spécification de l'API des Offres de Session (S2S)

Ce document décrit le point de terminaison nécessaire pour récupérer le contenu Offre de Rokt en utilisant l'API de Session (v2).

Travaillez avec votre équipe de compte Rokt pour obtenir les identifiants nécessaires. Pour un aperçu de l'intégration de bout en bout, voir Intégration de l'API de Session (S2S).

Point de terminaisonLien direct vers Point de terminaison

EnvironnementActionURL
ProductionPOSThttps://api.rokt.com/v2/sessions/offers
remarque

Il n'y a pas d'URL de bac à sable séparée. Pour valider avant de passer en production, envoyez l'en-tête rokt-test-session: true sur le même point de terminaison. Les sessions de test sont étiquetées et filtrées des métriques de production. L'en-tête marque uniquement le rapport — il ne force pas une offre à être servie. Pour des tests déterministes de bout en bout, votre équipe de compte peut configurer une page de mise en scène avec des campagnes de test dédiées. Retirez l'en-tête pour passer en production.

RequêteLien direct vers Requête

En-têtes d'autorisationLien direct vers En-têtes d'autorisation

En-têteDescriptionTypeRemarque
AuthorizationIdentifiants d'authentification de basechaîneBasic base64(rpub:rsec) — utilisez les clés API publiques et secrètes fournies par votre équipe de compte.
rokt-account-idVotre ID de compte RoktchaîneRequis à chaque appel. C'est la source de l'identité du compte sur l'API de Session.

En-têtes requisLien direct vers En-têtes requis

En-têteDescriptionTypeExemple
Content-TypeType de médiachaîneapplication/json
rokt-platform-typePlateforme pour laquelle les offres sont demandéeschaîneiOS, Android, Web, WebDesktop, ou WebMobile (insensible à la casse). Par défaut à Web.
remarque

Le trafic serveur-à-serveur est classé par défaut comme Web. Si vos pages Rokt sont configurées pour une plateforme native (iOS ou Android), définissez l'en-tête rokt-platform-type sur cette plateforme — sinon la détection de la page ne correspondra pas à vos pages configurées nativement et ne renverra aucune offre. Les pages configurées pour le Web n'ont pas besoin d'en-tête.

Racine/CorpsLien direct vers Racine/Corps

PropriétéRequisTypeDescription
channelOuiobjetDoit contenir "type": "s2s".
pageOuiobjetVoir Page.
customerNonobjetVoir Client.
transactionNonobjetVoir Transaction.
paymentNonobjetVoir Paiement.
deviceNonobjetVoir Appareil.
attributesNonobjetCarte string → string libre pour tout signal spécifique au partenaire qui ne correspond pas à un objet typé.
remarque

Envoyez uniquement les valeurs que vous possédez. Les attributs dérivés de Rokt — géo, âge et autres données démographiques, type d'appareil/OS/version, méthode de paiement, et signaux ML — sont calculés côté serveur et écrasés si envoyés ; ne les incluez pas.

PageLien direct vers Page

PropriétéRequisTypeDescription
page_identifierOuichaîne de caractèresTexte utilisé pour différencier les vues/pages.
page_variation_codeNonchaîne de caractèresCode de variation optionnel pour la page.

ClientLien direct vers Client

PropriétéRequisTypeDescription
emailNonchaîne de caractèresAdresse email du client.
first_nameNonchaîne de caractèresPrénom du client.
last_nameNonchaîne de caractèresNom de famille du client.
genderNonchaîne de caractèresGenre du client.
postal_codeNonchaîne de caractèresCode postal/zip du client.
languageNonchaîne de caractèresCode de langue du client (par ex. en).

TransactionLien direct vers Transaction

PropriétéRequisTypeDescription
transaction_valueNonnombreValeur de la transaction.
currencyNonchaîne de caractèresCode de devise ISO 4217 (par ex. USD).
confirmation_refNonchaîne de caractèresRéférence de commande ou de confirmation côté partenaire.

PaiementLien direct vers Paiement

PropriétéRequisTypeDescription
typeNonchaîne de caractèresType de méthode de paiement (par ex. card).

AppareilLien direct vers Appareil

PropriétéRequisTypeDescription
user_agentNonchaîne de caractèresChaîne de l'agent utilisateur de l'appareil ou de l'application client.

Exemple de requêteLien direct vers Exemple de requête

POST https://api.rokt.com/v2/sessions/offers
Authorization: Basic base64(rpub:rsec)
rokt-account-id: <your Rokt account ID>
rokt-platform-type: Web
Content-Type: application/json
{
"channel": { "type": "s2s" },
"page": { "page_identifier": "checkout" },
"customer": {
"email": "jane.doe@example.com",
"first_name": "Jane",
"last_name": "Doe",
"gender": "F",
"postal_code": "10001",
"language": "en"
},
"transaction": {
"transaction_value": 19.99,
"currency": "USD",
"confirmation_ref": "ORDER-000123"
},
"payment": { "type": "card" },
"device": {
"user_agent": "YourApp/1.0 (mobile)"
},
"attributes": {
"your_custom_attribute": "value"
}
}

RéponseLien direct vers Réponse

Réponse de succès (2xx)Lien direct vers Réponse de succès (2xx)

Une réponse 2xx retourne directement l'offre — il n'y a pas d'enveloppe success/errors. plugins peut être vide, ce qui est un scénario valide de non-remplissage représentant une part réelle du trafic de production : ne rien rendre et continuer la page.

Champs clésLien direct vers Champs clés

Ce dont vous avez besoinChemin dans la réponse
Offreplugins[].plugin.config.slots[].offer
Titre / texte…offer.creative.copy["creative.title"]
Image…offer.creative.copy["creative.image.src"]
Avertissement…offer.creative.copy["creative.disclaimer"]
Lien des Termes & Conditions…offer.creative.copy["creative.termsAndConditions.link"]
Lien de la Politique de Confidentialité…offer.creative.copy["creative.privacyPolicy.link"]
Annonceur…offer.creative.advertiser
Action positive + URL…offer.creative.response_options_map.positive.url
Action de refus…offer.creative.response_options_map.negative
ID d'instance d'élément (utiliser comme événement parent_id)…slots[].instance_guid, …offer.creative.instance_guid, …response_options_map[key].instance_guid
Instance de page (utiliser comme événement page_instance_guid)page_instance_guid
ID de session (utiliser comme événement session_id)session_id
Jeton de session (référence de session actualisée)session_token.token

AnnonceurLien direct vers Annonceur

PropriétéTypeDescription
namestringLe nom de l'entité légale de l'annonceur.
brandstringLe nom de marque de l'annonceur.

Exemple de réponse réussie (2xx)Lien direct vers Exemple de réponse réussie (2xx)

Un compte configuré par mise en page renvoie des champs outer_layout_schema remplis et par emplacement layout_variant; un compte d'intégration de données renvoie le même contenu offer/creative avec ces schémas de mise en page vides. Toutes les valeurs ci-dessous sont des exemples synthétiques — lisez les champs dont vous avez besoin en utilisant les chemins Champs clés ci-dessus.

{
"session_id": "b1fb003c-e904-4083-b7b9-03cde555a7a1",
"page_instance_guid": "018f2a1b-0000-7abc-8def-page00000001",
"session_token": {
"token": "<session_token>"
},
"plugins": [
{
"plugin": {
"id": "3353172846080032866",
"name": "dcui",
"config": {
"instance_guid": "ce5158a9-dc59-4a97-9006-a299901e4587",
"outer_layout_schema": "<JSON-encoded layout schema>",
"layout_schema_version": "2.0",
"slots": [
{
"instance_guid": "8f492d28-83fb-4813-877e-26e752ea9474",
"offer": {
"campaign_id": "2749386944931233793",
"account_id": "<your Rokt account ID>",
"creative": {
"referral_creative_id": "2760914349384466797",
"instance_guid": "c9f37d78-731d-4a0e-b8bc-712bd8c46cc1",
"advertiser": {
"name": "Example Advertiser Inc.",
"brand": "Example Brand"
},
"copy": {
"creative.title": "Get 20% off your next order",
"creative.image.src": "https://example.com/creative/hero.png",
"creative.disclaimer": "New customers only. Terms apply.",
"creative.termsAndConditions.link": "https://example.com/terms",
"creative.privacyPolicy.link": "https://example.com/privacy"
},
"response_options_map": {
"positive": {
"id": "2760914349384466794",
"action": "Url",
"instance_guid": "1d47ded1-b483-44e6-abf8-1d1d5faa82bc",
"signal_type": "SignalResponse",
"short_label": "Yes",
"long_label": "Yes please",
"is_positive": true,
"url": "https://example.com/redeem",
"url_behavior": "newTab",
"token": "<event-token>"
},
"negative": {
"id": "2760914349384466796",
"action": "CaptureOnly",
"instance_guid": "24de5c75-ff04-41c5-b3f7-7d2ee129ecc6",
"signal_type": "SignalResponse",
"short_label": "No thanks",
"long_label": "No thanks",
"is_positive": false,
"token": "<event-token>"
}
},
"token": "<event-token>"
}
},
"layout_variant": {
"layout_variant_id": "3353172846080032865",
"module_name": "standard-marketing",
"format_type": "Text",
"layout_variant_schema": "<JSON-encoded layout schema>"
},
"token": "<event-token>"
}
]
}
},
"fonts": []
}
]
}

Réponse sans remplissage (2xx)Lien direct vers Réponse sans remplissage (2xx)

Lorsqu'il n'y a pas d'offres pertinentes pour un utilisateur particulier, Rokt renvoie un 2xx avec un tableau plugins vide. Ne rien afficher et continuer votre page.

{
"plugins": [],
"page_instance_guid": "018f2a1b-0000-7abc-8def-page00000001",
"session_token": {
"token": "<session_token>"
}
}

Réponses d'erreur (4xx / 5xx)Lien direct vers Réponses d'erreur (4xx / 5xx)

Les erreurs renvoient un statut HTTP sémantique avec un corps structuré :

{
"error": "<code>",
"message": "<detail>"
}

Les échecs de validation incluent un tableau details[] supplémentaire.

Codes d'erreur courantsLien direct vers Codes d'erreur courants

Statut HTTPSignification
400Corps de requête mal formé.
401En-tête Authorization manquant ou invalide.
422Échec de la validation de la requête (voir details[]).
429Limité par le taux. Ne pas réessayer automatiquement — faites une pause et contactez votre représentant Rokt si les 429 persistent.
5xxErreur serveur inattendue. Réessayez après un bref délai (1–2 secondes). Si le problème persiste, contactez support@rokt.com.

Mise en cache des offresLien direct vers Mise en cache des offres

Pour maximiser les opportunités de revenus, récupérez le contenu de l'offre de /v2/sessions/offers plus tôt dans le parcours de transaction de l'utilisateur — avant que l'offre ne soit censée être affichée — puis mettez-le en cache pour une récupération rapide par le client au sein de la même transaction.

Nous recommandons de mettre en cache en fonction d'une combinaison d'ID de transaction unique, d'ID utilisateur et de type d'appareil utilisateur. Si le contexte utilisateur change (par exemple, changement d'appareil), récupérez à nouveau avec des attributs mis à jour pour garantir la pertinence de l'offre.

Cet article vous a-t-il été utile ?