curl -X POST 'https://verification.didit.me/v3/events/sdk-token/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"vendor_data": "user-42",
"allowed_event_categories": ["auth", "session", "gameplay"],
"ttl_seconds": 900,
"max_uses": 1000,
"bind_to_origin": "https://app.example.com"
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.monitoring_events.create_sdk_token(
vendor_data="user-42",
allowed_event_categories=["auth", "session", "gameplay"],
ttl_seconds=900,
max_uses=1000,
bind_to_origin="https://app.example.com",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.monitoringEvents.createSdkToken({
vendor_data: "user-42",
allowed_event_categories: ["auth", "session", "gameplay"],
ttl_seconds: 900,
max_uses: 1000,
bind_to_origin: "https://app.example.com",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.MonitoringEvents.CreateSDKToken(ctx, didit.MonitoringEventsCreateSDKTokenParams{
VendorData: "user-42",
AllowedEventCategories: didit.Some([]didit.MonitoringEventsCreateSDKTokenParamsAllowedEventCategories{"auth", "session", "gameplay"}),
TTLSeconds: didit.Int(900),
MaxUses: didit.Int(1000),
BindToOrigin: didit.String("https://app.example.com"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import java.util.List;
import me.didit.Didit;
import me.didit.types.MonitoringEventsCreateSdkTokenParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.monitoringEvents().createSdkToken(MonitoringEventsCreateSdkTokenParams.builder()
.vendorData("user-42")
.allowedEventCategories(List.of(MonitoringEventsCreateSdkTokenParams.AllowedEventCategories.of("auth"), MonitoringEventsCreateSdkTokenParams.AllowedEventCategories.of("session"), MonitoringEventsCreateSdkTokenParams.AllowedEventCategories.of("gameplay")))
.ttlSeconds(900L)
.maxUses(1000L)
.bindToOrigin("https://app.example.com")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->monitoringEvents->createSdkToken([
'vendor_data' => 'user-42',
'allowed_event_categories' => ['auth', 'session', 'gameplay'],
'ttl_seconds' => 900,
'max_uses' => 1000,
'bind_to_origin' => 'https://app.example.com',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.monitoring_events.create_sdk_token(
vendor_data: "user-42",
allowed_event_categories: ["auth", "session", "gameplay"],
ttl_seconds: 900,
max_uses: 1000,
bind_to_origin: "https://app.example.com"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.MonitoringEvents.CreateSdkTokenAsync(new MonitoringEventsCreateSdkTokenParams
{
VendorData = "user-42",
AllowedEventCategories = new MonitoringEventsCreateSdkTokenParamsAllowedEventCategories[] { "auth", "session", "gameplay" },
TtlSeconds = 900,
MaxUses = 1000,
BindToOrigin = "https://app.example.com",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"monitoring_token": "q7ZtR2xKp9VbN4mWc8LdH1sYfJ3gT6uEaQ0oPiXzBkC",
"expires_at": "2026-10-17T09:30:02.481000Z",
"allowed_event_categories": [
"auth",
"session",
"gameplay"
],
"max_uses": 1000,
"bind_to_origin": "https://app.example.com"
}Générer un token SDK de surveillance via l'API
Avec Didit, générez un token éphémère lié à un sujet pour envoyer des événements de surveillance depuis votre app sans exposer votre clé API.
curl -X POST 'https://verification.didit.me/v3/events/sdk-token/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"vendor_data": "user-42",
"allowed_event_categories": ["auth", "session", "gameplay"],
"ttl_seconds": 900,
"max_uses": 1000,
"bind_to_origin": "https://app.example.com"
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.monitoring_events.create_sdk_token(
vendor_data="user-42",
allowed_event_categories=["auth", "session", "gameplay"],
ttl_seconds=900,
max_uses=1000,
bind_to_origin="https://app.example.com",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.monitoringEvents.createSdkToken({
vendor_data: "user-42",
allowed_event_categories: ["auth", "session", "gameplay"],
ttl_seconds: 900,
max_uses: 1000,
bind_to_origin: "https://app.example.com",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.MonitoringEvents.CreateSDKToken(ctx, didit.MonitoringEventsCreateSDKTokenParams{
VendorData: "user-42",
AllowedEventCategories: didit.Some([]didit.MonitoringEventsCreateSDKTokenParamsAllowedEventCategories{"auth", "session", "gameplay"}),
TTLSeconds: didit.Int(900),
MaxUses: didit.Int(1000),
BindToOrigin: didit.String("https://app.example.com"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import java.util.List;
import me.didit.Didit;
import me.didit.types.MonitoringEventsCreateSdkTokenParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.monitoringEvents().createSdkToken(MonitoringEventsCreateSdkTokenParams.builder()
.vendorData("user-42")
.allowedEventCategories(List.of(MonitoringEventsCreateSdkTokenParams.AllowedEventCategories.of("auth"), MonitoringEventsCreateSdkTokenParams.AllowedEventCategories.of("session"), MonitoringEventsCreateSdkTokenParams.AllowedEventCategories.of("gameplay")))
.ttlSeconds(900L)
.maxUses(1000L)
.bindToOrigin("https://app.example.com")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->monitoringEvents->createSdkToken([
'vendor_data' => 'user-42',
'allowed_event_categories' => ['auth', 'session', 'gameplay'],
'ttl_seconds' => 900,
'max_uses' => 1000,
'bind_to_origin' => 'https://app.example.com',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.monitoring_events.create_sdk_token(
vendor_data: "user-42",
allowed_event_categories: ["auth", "session", "gameplay"],
ttl_seconds: 900,
max_uses: 1000,
bind_to_origin: "https://app.example.com"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.MonitoringEvents.CreateSdkTokenAsync(new MonitoringEventsCreateSdkTokenParams
{
VendorData = "user-42",
AllowedEventCategories = new MonitoringEventsCreateSdkTokenParamsAllowedEventCategories[] { "auth", "session", "gameplay" },
TtlSeconds = 900,
MaxUses = 1000,
BindToOrigin = "https://app.example.com",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"monitoring_token": "q7ZtR2xKp9VbN4mWc8LdH1sYfJ3gT6uEaQ0oPiXzBkC",
"expires_at": "2026-10-17T09:30:02.481000Z",
"allowed_event_categories": [
"auth",
"session",
"gameplay"
],
"max_uses": 1000,
"bind_to_origin": "https://app.example.com"
}Autorisations
La clé API de votre application, issue de Développeurs -> Clés API dans la Business Console. La clé principale dispose d'un accès complet. Une clé nommée peut être restreinte : aucun, lecture ou écriture par ressource, limitée à certains workflows ou aux sessions approuvées, à une liste d'adresses IP et à une date d'expiration. 401 signifie que la clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a été envoyée, que la clé n'a pas accès à cette ressource ou action, ou que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur une route de session signifie que la session est hors des workflows ou des statuts de la clé. Une clé sans accès aux médias reçoit les URL d'images, de vidéos et de PDF à null, et une clé sans accès en écriture aux sessions reçoit les liens et tokens de session à null. Voir https://docs.didit.me/console/api-keys.
Corps
Les alias en camelCase sont acceptés : vendorData, entityType, allowedEventCategories, ttlSeconds, maxUses, bindToOrigin.
Votre identifiant pour le sujet auquel appartient chaque événement soumis avec cet identifiant d'accès.
1 - 255company associe un sujet de type entreprise ; toute autre valeur (individual par défaut) associe un individu.
32Catégories que l'identifiant peut soumettre. Omettez-le ou envoyez [] pour autoriser toutes les catégories.
auth, session, gameplay, bonus, affiliate, payment, dispute, security, responsible_gambling, custom Durée de vie des informations d'identification en secondes.
60 <= x <= 86400Nombre d'événements que l'identifiant peut soumettre (un lot consomme une utilisation par événement). Envoyez null pour ne pas appliquer de plafond pendant la durée de validité.
x >= 1Lorsqu'il est défini, l'en-tête Origin du navigateur de chaque requête de l'appareil doit correspondre exactement à cette valeur ; une requête sans Origin est refusée.
255Réponse
L'identifiant d'authentification a été créé. Transmettez monitoring_token à l'application et traitez-le comme un secret jusqu'à expires_at.
L'identifiant d'authentification de l'appareil (un token de 43 caractères compatible avec les URL). Envoyez-le dans l'en-tête X-Monitoring-Token.
Date et heure à partir desquelles le justificatif cesse d'être accepté.
Catégories que l'identifiant peut soumettre ; [] signifie toutes les catégories.
auth, session, gameplay, bonus, affiliate, payment, dispute, security, responsible_gambling, custom Budget d'événements de l'identifiant ; null signifie sans plafond.
Origine à laquelle l'élément d'authentification est lié, ou null.