ID Mobile — Verificación silenciosa del número de teléfono

Support DQE
Support DQE
  • Actualización
Number Verify - API ID Mobile

Utiliza este endpoint para verificar si el número de teléfono enviado en la solicitud coincide con el número que inicia la solicitud. El proceso consta de dos pasos: iniciar la solicitud de verificación y luego recuperar el resultado.

Related ID Mobile documentation:

Paso 1: Solicitar la verificación

Solicitud

Se admiten tanto GET como POST. Esto abre una página de consentimiento que el usuario final debe aceptar antes de poder recuperar el resultado en el paso 2.

{SERVER_ADDRESS} y {LICENCE_CODE} son proporcionados por DQE al crear la cuenta. {TOKEN} es el token de acceso obtenido del endpoint ID Mobile Access Token. Ponte en contacto con tu gestor de cuenta DQE para obtener la dirección del servidor y el código de licencia.
GEThttps://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&scope=numVerify&redirect_uri={URL_REDIRECT}

Ejemplos de código

Solicitar un enlace de consentimiento de Number Verify

curl "https://{SERVER_ADDRESS}/IDMOBILE/?number=33612345678&token={TOKEN}&mode=2&name=MYCOMPANY&licence={LICENCE_CODE}&scope=numVerify"
fetch("https://{SERVER_ADDRESS}/IDMOBILE/?" + new URLSearchParams({ number: "33612345678", token: "{TOKEN}", mode: "2", name: "MYCOMPANY", licence: "{LICENCE_CODE}", scope: "numVerify" })) .then(r => r.json()) .then(data => console.log(data));
import requests response = requests.get( "https://{SERVER_ADDRESS}/IDMOBILE/", params={ "number": "33612345678", "token": "{TOKEN}", "mode": "2", "name": "MYCOMPANY", "licence": "{LICENCE_CODE}", "scope": "numVerify", }, ) print(response.json())
<?php $params = http_build_query([ 'number' => '33612345678', 'token' => '{TOKEN}', 'mode' => '2', 'name' => 'MYCOMPANY', 'licence' => '{LICENCE_CODE}', 'scope' => 'numVerify', ]); $ch = curl_init("https://{SERVER_ADDRESS}/IDMOBILE/?{$params}"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true);
const axios = require('axios'); axios.get('https://{SERVER_ADDRESS}/IDMOBILE/', { params: { number: '33612345678', token: '{TOKEN}', mode: '2', name: 'MYCOMPANY', licence: '{LICENCE_CODE}', scope: 'numVerify' } }) .then(response => console.log(response.data));
HttpClient client = HttpClient.newHttpClient(); String url = "https://{SERVER_ADDRESS}/IDMOBILE/" + "?number=33612345678&token={TOKEN}&mode=2&name=MYCOMPANY&licence={LICENCE_CODE}&scope=numVerify"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(url)) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body());
using var client = new HttpClient(); var url = "https://{SERVER_ADDRESS}/IDMOBILE/" + "?number=33612345678&token={TOKEN}&mode=2&name=MYCOMPANY&licence={LICENCE_CODE}&scope=numVerify"; var response = await client.GetAsync(url); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);
package main import ( "fmt" "io" "net/http" ) func main() { url := "https://{SERVER_ADDRESS}/IDMOBILE/" + "?number=33612345678&token={TOKEN}&mode=2&name=MYCOMPANY&licence={LICENCE_CODE}&scope=numVerify" resp, err := http.Get(url) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) }
POSThttps://{SERVER_ADDRESS}/IDMOBILE/

Añade los siguientes parámetros en el cuerpo de la solicitud usando Content-Type: application/x-www-form-urlencoded:

Ejemplos de código

Solicitar un enlace de consentimiento de Number Verify

curl -X POST "https://{SERVER_ADDRESS}/IDMOBILE/" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "licence={LICENCE_CODE}" \ -d "number=33612345678" \ -d "token={TOKEN}" \ -d "mode=2" \ -d "name=MYCOMPANY" \ -d "scope=numVerify"
fetch("https://{SERVER_ADDRESS}/IDMOBILE/", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ licence: "{LICENCE_CODE}", number: "33612345678", token: "{TOKEN}", mode: "2", name: "MYCOMPANY", scope: "numVerify" }) }) .then(r => r.json()) .then(data => console.log(data));
import requests response = requests.post( "https://{SERVER_ADDRESS}/IDMOBILE/", data={ "licence": "{LICENCE_CODE}", "number": "33612345678", "token": "{TOKEN}", "mode": "2", "name": "MYCOMPANY", "scope": "numVerify", }, ) print(response.json())
<?php $ch = curl_init("https://{SERVER_ADDRESS}/IDMOBILE/"); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([ 'licence' => '{LICENCE_CODE}', 'number' => '33612345678', 'token' => '{TOKEN}', 'mode' => '2', 'name' => 'MYCOMPANY', 'scope' => 'numVerify', ])); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true);
const axios = require('axios'); const qs = require('querystring'); axios.post('https://{SERVER_ADDRESS}/IDMOBILE/', qs.stringify({ licence: '{LICENCE_CODE}', number: '33612345678', token: '{TOKEN}', mode: '2', name: 'MYCOMPANY', scope: 'numVerify' })) .then(response => console.log(response.data));
HttpClient client = HttpClient.newHttpClient(); String form = "licence={LICENCE_CODE}&number=33612345678&token={TOKEN}&mode=2&name=MYCOMPANY&scope=numVerify"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://{SERVER_ADDRESS}/IDMOBILE/")) .header("Content-Type", "application/x-www-form-urlencoded") .POST(HttpRequest.BodyPublishers.ofString(form)) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body());
using var client = new HttpClient(); var form = new Dictionary<string, string> { ["licence"] = "{LICENCE_CODE}", ["number"] = "33612345678", ["token"] = "{TOKEN}", ["mode"] = "2", ["name"] = "MYCOMPANY", ["scope"] = "numVerify" }; var response = await client.PostAsync( "https://{SERVER_ADDRESS}/IDMOBILE/", new FormUrlEncodedContent(form)); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);
package main import ( "fmt" "io" "net/http" "net/url" ) func main() { form := url.Values{} form.Set("licence", "{LICENCE_CODE}") form.Set("number", "33612345678") form.Set("token", "{TOKEN}") form.Set("mode", "2") form.Set("name", "MYCOMPANY") form.Set("scope", "numVerify") resp, err := http.PostForm("https://{SERVER_ADDRESS}/IDMOBILE/", form) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) }

Parámetros

Parámetro Descripción Obl / Opc
SERVER_ADDRESS Dirección del servidor DQE que procesará los datos. Mandatory
licence Número que se te asigna como código de licencia. Mandatory
number Número de teléfono. Mandatory
token Token obtenido mediante la autenticación. Mandatory
mode Valor estático. Debe ser 2. Mandatory
name Nombre del partner en la base de datos de DQE, normalmente el nombre de tu empresa. Mandatory
scope Valor estático. Debe ser numVerify para este scope. Mandatory
redirect_uri URL de redirección. DQE añade el token de sesión y el estado a la redirección. Optional
Combinación de scopes — numVerify se puede combinar con info (información del número de teléfono) en una sola solicitud, por ejemplo scope=numVerify,info. Consulta los campos de info más abajo.

Campos adicionales de info — se devuelven además de los campos propios de este endpoint cuando se incluye info en scope:

Campo Descripción Ejemplo
telorigine Número de teléfono de la solicitud. 0600000000
tel Número de teléfono formateado. +33600000000
geolocation Situación geográfica del número de teléfono. FRANCE
operator Operador actual del número de teléfono, si está suscrito. ORANGE
oldoperator Operador anterior del número de teléfono. SFR
ported Indica si el número de teléfono está portado, si está suscrito. Y
type Tipo de número de teléfono. MOBILE
iderror Código de error de la comprobación (0 o 1). 1

Respuesta

En caso de éxito, la API devuelve un objeto JSON que contiene la URL de la página de consentimiento que debe presentarse al usuario final.

Clave Descripción Tipo
status success String
operator Operador. String
url URL de la API del operador. String

Ejemplo de respuesta

Ejemplo de respuesta correcta
{ "status": "success", "operator": "SFR", "url": "htt***fr.fr/api/a**l8ET6UMbsaG0AOm5FsakgyKu*" }

Errores

Nota sobre los códigos de error 05-07 — estos tres códigos forman parte de la lista de validación compartida del paso 1 utilizada en todos los scopes de ID Mobile. Hacen referencia al parámetro user_infos y a su clave phone, que pertenecen a otros scopes (como Matching without OTP) — la propia solicitud de Number Verify no tiene esos campos, por lo que no se espera que estos códigos se activen en una llamada estándar de Number Verify.
ID de error Tipo de error Ejemplo de solicitud Respuesta
01 invalid request https://{SERVER_ADDRESS}/IDMOBILE/?token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&scope=numVerify
Ejemplo: falta el parámetro number.
{"status": "error", "error_id": "01", "error_type": "invalid request"}
02 invalid licence key https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={INCORRECT_LICENCE_CODE}&scope=numVerify
{"status": "error", "error_id": "02", "error_type": "invalid licence key"}
04 invalid scope https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&scope=wrongScope
{"status": "error", "error_id": "04", "error_type": "invalid scope"}
05 missing or empty parameter (user_infos) for this scope No se activa con los parámetros propios de Number Verify
Este código proviene de una capa de validación compartida entre los scopes de ID Mobile y hace referencia a los campos user_infos/phone utilizados por otros scopes (como Matching without OTP). Number Verify no tiene ese parámetro.
{"status": "error", "error_id": "05", "error_type": "missing or empty parameter (user_infos) for this scope"}
06 bad parameter format (user_infos) is not a valid JSON No se activa con los parámetros propios de Number Verify
Este código proviene de una capa de validación compartida entre los scopes de ID Mobile y hace referencia a los campos user_infos/phone utilizados por otros scopes (como Matching without OTP). Number Verify no tiene ese parámetro.
{"status": "error", "error_id": "06", "error_type": "bad parameter format (user_infos) is not a valid JSON"}
07 missing mandatory key in user informations (phone) No se activa con los parámetros propios de Number Verify
Este código proviene de una capa de validación compartida entre los scopes de ID Mobile y hace referencia a los campos user_infos/phone utilizados por otros scopes (como Matching without OTP). Number Verify no tiene ese parámetro.
{"status": "error", "error_id": "07", "error_type": "missing mandatory key in user informations (phone)"}
09 ineligible phone number https://{SERVER_ADDRESS}/IDMOBILE/?number={INELIGIBLE_NUMBER}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&scope=numVerify
{"status": "error", "error_id": "09", "error_type": "ineligible phone number"}
10 invalid phone number https://{SERVER_ADDRESS}/IDMOBILE/?number={INVALID_NUMBER}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&scope=numVerify
{"status": "error", "error_id": "10", "error_type": "invalid phone number"}
11 phone number is empty https://{SERVER_ADDRESS}/IDMOBILE/?number=&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&scope=numVerify
{"status": "error", "error_id": "11", "error_type": "phone number is empty"}
12 phone check failed https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&scope=numVerify
Condición del lado del operador — una solicitud sintácticamente válida puede fallar aquí.
{"status": "error", "error_id": "12", "error_type": "phone check failed"}
13 operator [Operator Name] not found https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&scope=numVerify
Condición del lado del operador.
{"status": "error", "error_id": "13", "error_type": "operator [Operator Name] not found"}
14 operator [Operator Name] not authorized for this licence https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&scope=numVerify
Condición del lado del operador — tu licencia no está autorizada para este operador.
{"status": "error", "error_id": "14", "error_type": "operator [Operator Name] not authorized for this licence"}
15 operator [Operator Name] not supported yet https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&scope=numVerify
Condición del lado del operador.
{"status": "error", "error_id": "15", "error_type": "operator [Operator Name] not supported yet"}
16 operator [Operator Name] unreachable https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&scope=numVerify
Condición del lado del operador.
{"status": "error", "error_id": "16", "error_type": "operator [Operator Name] unreachable"}
17 scope not supported by this operator [Operator Name] yet https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&scope=numVerify
Condición del lado del operador.
{"status": "error", "error_id": "17", "error_type": "scope not supported by this operator [Operator Name] yet"}
30 invalid or expired token https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={EXPIRED_TOKEN}&mode=2&name={NAME}&licence={LICENCE_CODE}&scope=numVerify
{"status": "error", "error_id": "30", "error_type": "invalid or expired token"}

Probar la API

Haz clic en el botón de abajo para probar este endpoint en directo en tu navegador.

Abrir consola
Paso 2 — Recuperar el resultado

Una vez que el usuario final haya aceptado (o rechazado) la página de consentimiento del paso 1, llama a este endpoint para recuperar el resultado de la verificación.

Paso 2: Recuperar el resultado

Solicitud

Se admiten tanto GET como POST.

{SERVER_ADDRESS} y {LICENCE_CODE} son proporcionados por DQE al crear la cuenta. {TOKEN} es el mismo token de acceso utilizado en el paso 1.
GEThttps://{SERVER_ADDRESS}/GET/?token={TOKEN}&Licence={LICENCE_CODE}&scope=numVerify

Ejemplos de código

Recuperar el resultado de Number Verify

curl "https://{SERVER_ADDRESS}/GET/?token={TOKEN}&Licence={LICENCE_CODE}&scope=numVerify"
fetch("https://{SERVER_ADDRESS}/GET/?" + new URLSearchParams({ token: "{TOKEN}", Licence: "{LICENCE_CODE}", scope: "numVerify" })) .then(r => r.json()) .then(data => console.log(data));
import requests response = requests.get( "https://{SERVER_ADDRESS}/GET/", params={ "token": "{TOKEN}", "Licence": "{LICENCE_CODE}", "scope": "numVerify", }, ) print(response.json())
<?php $params = http_build_query([ 'token' => '{TOKEN}', 'Licence' => '{LICENCE_CODE}', 'scope' => 'numVerify', ]); $ch = curl_init("https://{SERVER_ADDRESS}/GET/?{$params}"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true);
const axios = require('axios'); axios.get('https://{SERVER_ADDRESS}/GET/', { params: { token: '{TOKEN}', Licence: '{LICENCE_CODE}', scope: 'numVerify' } }) .then(response => console.log(response.data));
HttpClient client = HttpClient.newHttpClient(); String url = "https://{SERVER_ADDRESS}/GET/" + "?token={TOKEN}&Licence={LICENCE_CODE}&scope=numVerify"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(url)) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body());
using var client = new HttpClient(); var url = "https://{SERVER_ADDRESS}/GET/" + "?token={TOKEN}&Licence={LICENCE_CODE}&scope=numVerify"; var response = await client.GetAsync(url); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);
package main import ( "fmt" "io" "net/http" ) func main() { url := "https://{SERVER_ADDRESS}/GET/" + "?token={TOKEN}&Licence={LICENCE_CODE}&scope=numVerify" resp, err := http.Get(url) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) }
POSThttps://{SERVER_ADDRESS}/GET/

Añade los siguientes parámetros en el cuerpo de la solicitud usando Content-Type: application/x-www-form-urlencoded:

Ejemplos de código

Recuperar el resultado de Number Verify

curl -X POST "https://{SERVER_ADDRESS}/GET/" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "Licence={LICENCE_CODE}" \ -d "token={TOKEN}" \ -d "scope=numVerify"
fetch("https://{SERVER_ADDRESS}/GET/", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ Licence: "{LICENCE_CODE}", token: "{TOKEN}", scope: "numVerify" }) }) .then(r => r.json()) .then(data => console.log(data));
import requests response = requests.post( "https://{SERVER_ADDRESS}/GET/", data={ "Licence": "{LICENCE_CODE}", "token": "{TOKEN}", "scope": "numVerify", }, ) print(response.json())
<?php $ch = curl_init("https://{SERVER_ADDRESS}/GET/"); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([ 'Licence' => '{LICENCE_CODE}', 'token' => '{TOKEN}', 'scope' => 'numVerify', ])); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true);
const axios = require('axios'); const qs = require('querystring'); axios.post('https://{SERVER_ADDRESS}/GET/', qs.stringify({ Licence: '{LICENCE_CODE}', token: '{TOKEN}', scope: 'numVerify' })) .then(response => console.log(response.data));
HttpClient client = HttpClient.newHttpClient(); String form = "Licence={LICENCE_CODE}&token={TOKEN}&scope=numVerify"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://{SERVER_ADDRESS}/GET/")) .header("Content-Type", "application/x-www-form-urlencoded") .POST(HttpRequest.BodyPublishers.ofString(form)) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body());
using var client = new HttpClient(); var form = new Dictionary<string, string> { ["Licence"] = "{LICENCE_CODE}", ["token"] = "{TOKEN}", ["scope"] = "numVerify" }; var response = await client.PostAsync( "https://{SERVER_ADDRESS}/GET/", new FormUrlEncodedContent(form)); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);
package main import ( "fmt" "io" "net/http" "net/url" ) func main() { form := url.Values{} form.Set("Licence", "{LICENCE_CODE}") form.Set("token", "{TOKEN}") form.Set("scope", "numVerify") resp, err := http.PostForm("https://{SERVER_ADDRESS}/GET/", form) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) }

Parámetros

Parámetro Descripción Obl / Opc
SERVER_ADDRESS Dirección del servidor DQE que procesará los datos. Mandatory
Licence Número que se te asigna como código de licencia. Mandatory
token Token obtenido mediante la autenticación. Mandatory
scope Valor estático. Debe ser numVerify para este scope. Mandatory

Respuesta

Éxito

Clave Descripción Tipo
status success: information was successfully retrieved. String
scope Contiene el scope enviado previamente. String
numVerify Siempre es true cuando esta clave está presente — confirma que el número de teléfono coincide. Un número de teléfono que no coincide nunca se devuelve como numVerify: false en una respuesta correcta; en su lugar, se devuelve como el error 20 (consulta Errores más abajo). Boolean

Pendiente

Se devuelve mientras DQE sigue esperando la respuesta del operador — vuelve a consultar el paso 2 tras una breve espera.

Clave Descripción Tipo
status pending: DQE is waiting for the operator response. String
scope Contiene numVerify. String

Ejemplo de respuesta

Ejemplo de respuesta correcta
{ "status": "success", "scope": "numVerify", "numVerify": true }
Ejemplo de respuesta pendiente
{ "status": "pending", "scope": "numVerify" }

Errores

ID de error Tipo de error Ejemplo de solicitud Respuesta
01 invalid request https://{SERVER_ADDRESS}/GET/?Licence={LICENCE_CODE}&scope=numVerify
Example: missing token parameter.
{"status": "error", "error_id": "01", "error_type": "invalid request"}
02 invalid licence key https://{SERVER_ADDRESS}/GET/?token={TOKEN}&Licence={INCORRECT_LICENCE_CODE}&scope=numVerify
{"status": "error", "error_id": "02", "error_type": "invalid licence key"}
04 invalid scope https://{SERVER_ADDRESS}/GET/?token={TOKEN}&Licence={LICENCE_CODE}&scope=wrongScope
{"status": "error", "error_id": "04", "error_type": "invalid scope"}
18 failed to retrieve data from operator https://{SERVER_ADDRESS}/GET/?token={TOKEN}&Licence={LICENCE_CODE}&scope=numVerify
No se recibieron datos tras la validación OTP.
{"status": "error", "error_id": "18", "error_type": "failed to retrieve data from operator"}
20 Not the same phone number between the phone in the request https://{SERVER_ADDRESS}/GET/?token={TOKEN}&Licence={LICENCE_CODE}&scope=numVerify
El número de teléfono enviado en la solicitud no coincide con el que inicia la solicitud — esto equivale a un resultado numVerify: false, devuelto como error en lugar de como respuesta correcta.
{"status": "error", "error_id": "20", "error_type": "Not the same phone number between the phone in the request"}
21 access denied https://{SERVER_ADDRESS}/GET/?token={TOKEN}&Licence={LICENCE_CODE}&scope=numVerify
La validación OTP fue rechazada.
{"status": "error", "error_id": "21", "error_type": "access denied"}
30 invalid or expired token https://{SERVER_ADDRESS}/GET/?token={EXPIRED_TOKEN}&Licence={LICENCE_CODE}&scope=numVerify
{"status": "error", "error_id": "30", "error_type": "invalid or expired token"}
99 internal server error https://{SERVER_ADDRESS}/GET/?token={TOKEN}&Licence={LICENCE_CODE}&scope=numVerify
Error del servidor.
{"status": "error", "error_id": "99", "error_type": "internal server error"}
Example error response
{ "status": "error", "error_id": "20", "error_type": "OTP process failed" }

Probar la API

Haz clic en el botón de abajo para probar este endpoint en directo en tu navegador.

Abrir consola

Ver también

¿Fue útil este artículo?

Usuarios a los que les pareció útil: 0 de 0