curl --request GET \
--url https://{issuer}/step-up/{step_up_id}/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://{issuer}/step-up/{step_up_id}/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{issuer}/step-up/{step_up_id}/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{issuer}/step-up/{step_up_id}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{issuer}/step-up/{step_up_id}/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{issuer}/step-up/{step_up_id}/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{issuer}/step-up/{step_up_id}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "94efc2c3-ca84-42fe-900b-6fb61669a7a1",
"rule": "payout",
"method": "selfie",
"status": "approved",
"level": "liveness_face_match",
"amount": "900.00",
"currency": "USD",
"created_at": "2026-10-17T10:41:14.894632Z",
"completed_at": "2026-10-17T10:43:02.118204Z",
"expires_at": "2026-10-17T11:11:14.894581Z"
}Statut d'un step-up | API d'authentification Didit
GET /step-up// renvoie le statut, la méthode et le niveau d’un step-up Didit. N’exécutez l’action sensible que si le statut est approuvé.
curl --request GET \
--url https://{issuer}/step-up/{step_up_id}/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://{issuer}/step-up/{step_up_id}/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{issuer}/step-up/{step_up_id}/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{issuer}/step-up/{step_up_id}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{issuer}/step-up/{step_up_id}/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{issuer}/step-up/{step_up_id}/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{issuer}/step-up/{step_up_id}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "94efc2c3-ca84-42fe-900b-6fb61669a7a1",
"rule": "payout",
"method": "selfie",
"status": "approved",
"level": "liveness_face_match",
"amount": "900.00",
"currency": "USD",
"created_at": "2026-10-17T10:41:14.894632Z",
"completed_at": "2026-10-17T10:43:02.118204Z",
"expires_at": "2026-10-17T11:11:14.894581Z"
}https://<name>.auth.didit.me, et n’acceptent jamais votre clé API Didit.404. Un step-up pending affiche expired une fois ses 30 minutes écoulées.Autorisations
Le token d'accès de la personne issu de POST /token/ : un JWT ES256 avec l'en-tête typ: at+jwt, valide pendant au plus 5 minutes. Il ne s'agit pas de votre clé API Didit.
Paramètres de chemin
L'id provenant de POST /step-up/, également le paramètre de requête step_up sur votre return_to. Une valeur qui n'est pas un UUID renvoie une page 404, et non du JSON.
Réponse
Le step-up.
Une vérification que la personne doit réussir avant l'action.
"94efc2c3-ca84-42fe-900b-6fb61669a7a1"
La règle qui l'a demandée. Lorsque plusieurs s'appliquent, celle avec la méthode la plus forte.
payout, device, bank, contact "payout"
Ce que la personne effectue : liveness, selfie (détection du vivant mise en correspondance avec le visage que Didit possède déjà) ou full_id (document et selfie). Lorsque Didit ne détient pas encore de visage pour la personne, selfie devient full_id dès qu'elle ouvre l'adresse verification_url.
liveness, selfie, full_id "selfie"
N'agissez que sur approved. review attend l'examen de votre équipe. declined n'est pas définitif tant que verification_url fonctionne : la personne peut réessayer, et la vérification renforcée repasse à pending. superseded signifie qu'une autre vérification a pris le relais, ou que le résultat ne concernait pas cette vérification renforcée : créez-en une nouvelle.
pending, review, approved, declined, expired, superseded "pending"
Le niveau atteint par la vérification, une fois approuvée.
liveness, liveness_face_match, full_id, null null
Le montant du paiement, deux décimales.
"900.00"
"USD"
"2026-10-17T10:41:14.894632Z"
null
30 minutes après la création. La lecture d'un step-up collecte d'abord tout résultat atteint par sa vérification, de sorte qu'il peut toujours afficher approved, review ou declined après ce délai ; un step-up encore pending affiche expired.
"2026-10-17T11:11:14.894581Z"