Démarrage rapide
Cette interface API est destinée aux partenaires d'intégration construisant sur le réseau Rokt. Les partenaires e-commerce de Rokt intégrant des emplacements sur leur propre page de paiement devraient utiliser plutôt la documentation développeur Rokt Ecommerce.
Ce guide vous emmène de zéro à un marchand enregistré avec des contrôles vérifiés et un partenariat actif, en utilisant dry_run=true afin que rien ne persiste. Supprimez le drapeau de simulation lorsque vous êtes prêt à passer en production.
Vous aurez besoin d'un jeton API et d'un terminal.
Avant de commencerLien direct vers Avant de commencer
Rassemblez les éléments suivants avant d'exécuter les appels ci-dessous. Chacun sera référencé par son nom dans les étapes qui suivent.
- Identifiants API (
client_id+client_secret) : délivrés une fois par Rokt lors de l'intégration, puis réutilisés chaque fois que vous les échangez contre le jeton d'accès à courte durée utilisé dans les appels ci-dessous. Voir Authentification si vous ne les avez pas encore. - ID de compte parent Rokt de la plateforme partenaire : le compte de niveau supérieur de votre plateforme dans la hiérarchie de Rokt. Votre contact d'intégration Rokt vous le fournit.
- Un mappage vertical initialisé : Rokt mappe vos catégories à sa propre taxonomie avant que vous puissiez enregistrer quoi que ce soit, une fois par plateforme. Envoyez par email votre liste complète de catégories à smb-partnerships@rokt.com, puis vérifiez qu'elle est arrivée à l'étape 2. Ignorer cela est la raison la plus courante pour laquelle une nouvelle intégration ne peut rien enregistrer. Voir Vérifier ce qui est mappé.
vertical_id+sub_vertical_idpour le marchand : les IDs de catégorie de votre propre taxonomie, pas ceux de Rokt. Le serveur les traduit via le mappage vertical initialisé pour votre compte parent. Voir Taxonomie verticale.- URL de la boutique avec schéma : par exemple
https://acme.myshopify.com. Les hôtes nus (acme.myshopify.com) sont rejetés avec un 400. - Un
external_account_idstable : l'identifiant propre de votre plateforme pour ce marchand. L'enregistrement est idempotent sur cette valeur, elle doit donc être stable lors des réessais. uuidgen(ou tout générateur UUID) : pour produire de nouvelles valeursIdempotency-Keylors des écritures.
Deux contrats que chaque appel suit.
- Chaque réponse est enveloppée dans
{ "status", "error", "message", "request_id", "data": { ... } }. Les charges utiles spécifiques aux points de terminaison se trouvent à l'intérieur dedata. Les exemples ci-dessous montrent l'enveloppe complète. - Chaque écriture nécessite
X-Platform-Parent-Account-Iddéfini sur l'ID de compte parent Rokt de votre plateforme partenaire. Son absence renvoie422lors des écritures. Les lectures l'acceptent comme optionnel mais recommandé.
Exportez les deux :
# Replace with YOUR partner platform's Rokt parent account ID (obtained from your Rokt onboarding contact).
export PARENT="<your-platform-parent-account-id>"
- Get your API token
Échangez vos identifiants API accordés par Rokt contre un jeton d'accès ; voir Authentification. Pour le reste de ce guide, exportez-le :
- bash
export TOKEN="eyJhbGc..." - Confirm your taxonomy is mapped
GET /v1/partnership/vertical-mappingsrenvoie les mappages de catégories que Rokt a initialisés pour votre compte parent. Exécutez-le une fois avant votre premier appel d'enregistrement. L'enregistrement résout lesvertical_idetsub_vertical_idque vous envoyez via ce mappage, donc un compte parent non initialisé échoue à chaque tentative d'enregistrement avec un400.- curl
curl "https://accounts.rokt.com/v1/partnership/vertical-mappings?parent_account_id=$PARENT" \
-H "Authorization: Bearer $TOKEN"Réponse :
{
"status": 200,
"error": null,
"message": "ok",
"request_id": "0e3a1b9c-...",
"data": {
"vertical_mappings": [
{
"partner_vertical_id": 1500,
"partner_vertical_name": "Apparel",
"partner_sub_vertical_id": 1610,
"partner_sub_vertical_name": "Womenswear",
"vertical_name": "Retail",
"created_at": "2026-07-01T00:00:00Z"
}
]
}
}Les
vertical_idetsub_vertical_idque vous envoyez à l'étape suivante doivent apparaître ici en tant que pairepartner_vertical_id/partner_sub_vertical_id.vertical_namemontre à quelle catégorie Rokt la paire se résout, utile pour repérer un mappage qui a abouti à un endroit inattendu.attentionUn tableau
vertical_mappingsvide signifie que votre taxonomie n'est pas initialisée. Arrêtez ici ; chaque appel d'enregistrement renvoie un400jusqu'à ce que Rokt l'initialise. Envoyez votre liste complète de catégories à smb-partnerships@rokt.com et attendez la confirmation. Voir Vérifiez ce qui est mappé. - Register a merchant
POST /v1/accounts/register/partnershipcrée (ou correspond à) un compte Rokt pour un marchand intégré via votre plateforme. L'appel est idempotent surexternal_account_id: votre identifiant stable pour le marchand dans votre propre système.store_identifierdoit être une URL valide (3–400 caractères) incluant le schéma.https://acme.myshopify.comfonctionne ;acme.myshopify.comrenvoie 400.Capturez
data.account_idde la réponse. Vous l'utiliserez dans chaque appel ultérieur. Si vous avez également passépages, capturezpage_identifierde chaque entrée ; vous passerez cette chaîne dans l'appelselectPlacementsdu SDK Web pour cibler chaque surface. Voir Pages et Dispositions.remarqueregisterest la seule écriture qui ne nécessite pas d'en-têteIdempotency-Key; elle est idempotente surexternal_account_idà la place. Toutes les écritures ultérieures (contrôles, statut, configuration de paiement, etc.) nécessitentIdempotency-Key.- curl
# pages[].surface: confirmation | tracking | returns
# pages[].layout_type: Overlay | Embedded
# Every integration ships a default; omit `pages` to use it, or pass an array to override. See pages-and-layouts.
curl -X POST https://accounts.rokt.com/v1/accounts/register/partnership \
-H "Authorization: Bearer $TOKEN" \
-H "X-Platform-Parent-Account-Id: $PARENT" \
-H "Content-Type: application/json" \
-d '{
"brand": "Acme Apparel",
"vertical_id": 1500,
"sub_vertical_id": 1610,
"country_code": "US",
"platform_parent_account_id": "<your-platform-parent-account-id>",
"store_identifier": "https://acme-apparel.example.com",
"external_account_id": "partner-merchant-abc123",
"pages": [
{ "surface": "confirmation", "layout_type": "Overlay" },
{ "surface": "tracking", "layout_type": "Embedded" },
{ "surface": "returns", "layout_type": "Embedded" }
]
}'Réponse :
{
"status": 200,
"error": null,
"message": "ok",
"request_id": "0e3a1b9c-1234-4abc-9def-aaaabbbbcccc",
"data": {
"account_id": "<your-account-id>",
"pages": [
{ "surface": "confirmation", "page_id": "bfb5b9be-...", "layout_id": "9d11d8aa-...", "page_identifier": "confirmation_page" },
{ "surface": "tracking", "page_id": "2b9d8a5e-...", "layout_id": "f8700369-...", "page_identifier": "tracking_page" },
{ "surface": "returns", "page_id": "7a31963a-...", "layout_id": "4865f1ab-...", "page_identifier": "returns_page" }
]
}
}astuceExportez-le :
export ACCOUNT_ID="<your-account-id>".Course à la propagation de l'authentificationL'authentification par jeton pour les comptes marchands nouvellement créés se propage de manière asynchrone. Les appels immédiats aux points de terminaison de contrôles, de statut ou de configuration de paiement sur le nouveau
account_idpeuvent renvoyer401ou403pendant 1 à 2 minutes. Ne considérez pas le premier échec d'authentification sur un compte frais comme définitif ; réessayez toutes les 15 à 30 secondes pendant jusqu'à deux minutes avant d'enquêter. - Read current marketplace controls
GET /v1/partnership/accounts/{account_id}/marketplacecontrolslistsrenvoie la configuration actuelle de contrôle du marché du marchand. Sur un compte frais, cela reflète la liste de blocage verticale par défaut héritée de votre préréglage de partenariat.- curl
curl https://accounts.rokt.com/v1/partnership/accounts/$ACCOUNT_ID/marketplacecontrolslists \
-H "Authorization: Bearer $TOKEN" \
-H "X-Platform-Parent-Account-Id: $PARENT"Regardez
data.translated_verticalsetdata.marketplace_controls_list.content_hash.translated_verticalsmontre la politique effective par sous-verticale exprimée dans votre taxonomie de partenaire (vertical_idest votre ID de sous-verticale), utile pour le retour à votre interface utilisateur. Les ID de taxonomie brute de Rokt ne sont pas exposés dans la réponse. - Update marketplace controls (dry-run)
PUTest état souhaité : envoyez la liste complète à chaque fois, tout ce que vous omettez devient débloqué. Voir Sémantique SET.X-Platform-Parent-Account-Idest requis pour toutes les écritures ; son absence renvoie 422.Idempotency-Keyest requis pour toutes les écritures. Générez un UUID frais par groupe de réessai logique. La fenêtre de déduplication de 24 heures regroupe les réessais avec la même clé en une seule exécution.dry_run=trueexécute la validation complète sans persister l'état, parfait pour valider une charge utile. L'enveloppe de réponse ajoutedry_run: trueà côté dedata.
- curl
curl -X PUT "https://accounts.rokt.com/v1/partnership/accounts/$ACCOUNT_ID/marketplacecontrolslists?dry_run=true" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Platform-Parent-Account-Id: $PARENT" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"name": "Acme Network Controls",
"blockedVerticals": [
{
"partnerVerticalId": 1500,
"partnerSubVerticalId": 1610,
"policy": "Block",
"position1Policy": "Block"
},
{
"partnerVerticalId": 1500,
"partnerSubVerticalId": 1611,
"policy": "Block",
"position1Policy": "Block"
}
],
"domains": [
{ "domain": "competitor.example.com", "policy": "Block" }
],
"contentHash": null
}'remarquecontentHashest un jeton de concurrence optimiste. Passeznulllors de la première écriture sur un nouveau compte ; lors des écritures suivantes, renvoyez la valeurcontent_hashretournée par la réponse GET ou PUT précédente pour éviter d'écraser les modifications concurrentes.La charge utile de la réponse (à l'intérieur de
data) correspond àGET: mêmetranslated_verticalsetmarketplace_controls_list(avecdomainset un nouveaucontent_hash). En mode simulation, la réponse décrit ce qui serait écrit. - Activate the partnership (dry-run)
PUT /v1/partnership/accounts/{account_id}/statuscascade actif/en pause sur chaque variante de page non archivée sur le compte.- curl
curl -X PUT "https://accounts.rokt.com/v1/partnership/accounts/$ACCOUNT_ID/status?dry_run=true" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Platform-Parent-Account-Id: $PARENT" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{ "status": "active" }'La réponse
data.variants[]liste la répartition par variante :{
"status": 200,
"error": null,
"message": "ok",
"request_id": "0e3a1b9c-...",
"data": {
"account_id": "<your-account-id>",
"status": "active",
"variants": [
{ "page_id": "9d11...", "name": "Thanks", "status": "active" }
]
}
} - Verify status
GET /v1/partnership/accounts/{account_id}/statusrenvoie le statut global plus le détail par variante.- curl
curl https://accounts.rokt.com/v1/partnership/accounts/$ACCOUNT_ID/status \
-H "Authorization: Bearer $TOKEN" \
-H "X-Platform-Parent-Account-Id: $PARENT"En production (supprimez
dry_run=true),data.statusdoit correspondre à ce que vous venez dePUT. Si vous voyez"mixed"après unPUT status=active, certaines variantes n'ont pas réussi à se mettre à jour ; capturez lerequest_idet déposez un ticket de support.La règle d'agrégation :
"active": chaque variante non archivée est activée."paused": chaque variante non archivée est désactivée (ou aucune n'existe)."mixed": certaines sont activées, d'autres désactivées.
Prochaines étapesLien direct vers Prochaines étapes
Commencez ici :
Ensuite :