Acceso con API Key vía Teléfono
Endpoint
https://api.verifik.co/v2/projects/phone-login
Métodos usados para iniciar sesión con una cuenta ya generada en Verifik. Este procedimiento es importante porque todas las consultas requieren un Access Token, que solo se genera al iniciar sesión.
Estos servicios crean una solicitud de OTP (One Time Password) necesaria para validar que el teléfono o email pertenece a un cliente de Verifik.
Encabezados
| Nombre | Valor |
|---|---|
| Content-Type | application/json |
Parámetros
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
countryCode | string | Sí | Código de país para el número de teléfono |
phone | number | Sí | Número de teléfono |
type | string | Sí | Tipo de solicitud. Usar "login" para autenticación |
Solicitud
- JavaScript
- Python
- Swift
- PHP
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://api.verifik.co/v2/projects/phone-login',
headers: {
'Content-Type': 'application/json'
},
data: {
countryCode: '+1',
phone: 1234566663,
type: 'login'
}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
import http.client
import json
conn = http.client.HTTPSConnection("api.verifik.co")
payload = json.dumps({
"countryCode": "+1",
"phone": 1234566663,
"type": "login"
})
headers = {
'Content-Type': 'application/json'
}
conn.request("POST", "/v2/projects/phone-login", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
import Foundation
let headers = [
"Content-Type": "application/json"
]
let parameters = [
"countryCode": "+1",
"phone": 1234566663,
"type": "login"
] as [String : Any]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api.verifik.co/v2/projects/phone-login")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.verifik.co/v2/projects/phone-login', [
'headers' => [
'Content-Type' => 'application/json',
],
'json' => [
'countryCode' => '+1',
'phone' => 1234566663,
'type' => 'login'
]
]);
echo $response->getBody();
Respuesta
- 200
- 400
- 409
{
"data": {
"client": "613375a1eab2fe08527f81e2",
"project": "6266193db77ccc8111730c90",
"projectFlow": "658ed28b0990f300134d7b78",
"status": "sent",
"countryCode": "+1",
"phone": "1234566663",
"phoneGateway": "whatsapp",
"otp": "$2a$10$fdoxDgtv6J7E4nnZoCORSOiUbpCGOOE5JWghrvAUNZIoX5h81zJLq",
"expiresAt": "2024-05-29T03:51:26.000Z",
"phoneData": {
"title": "Verifik Client"
},
"type": "login",
"redirectUrl": "https://verifik.co",
"requires2FA": false,
"language": "es",
"_id": "6656a3e6eb43abfd7146abb6",
"updatedAt": "2024-05-29T03:41:27.009Z",
"createdAt": "2024-05-29T03:41:27.009Z",
"__v": 0,
"new": true,
"providerConfirmation": {}
},
"signature": {
"dateTime": "May 29, 2024 3:41 AM",
"message": "Certified by Verifik.co"
},
"id": "Y0628"
}
{
"code": "BadRequest",
"message": "Formato de número de teléfono inválido.",
"signature": {
"dateTime": "August 31, 2022 3:24 PM",
"message": "Certified by Verifik.co"
}
}
{
"code": "MissingParameter",
"message": "missing countryCode\n. missing phone\n. missing type\n"
}
Confirmación OTP
Endpoint
https://api.verifik.co/v2/projects/phone-login/confirm
Los servicios de confirmación de OTP generan un "login" validando que el OTP enviado coincida con el recibido en el teléfono. Como respuesta se obtiene el access token, que el usuario puede usar para consultas.
Parámetros
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
countryCode | string | Sí | Código de país para el número de teléfono |
phone | number | Sí | Número de teléfono |
otp | string | Sí | Contraseña de un solo uso recibida vía teléfono |
Solicitud
- JavaScript
- Python
- Swift
- PHP
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://api.verifik.co/v2/projects/phone-login/confirm',
headers: {
'Content-Type': 'application/json'
},
data: {
countryCode: '+1',
phone: 1234566663,
otp: '123456'
}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
import http.client
import json
conn = http.client.HTTPSConnection("api.verifik.co")
payload = json.dumps({
"countryCode": "+1",
"phone": 1234566663,
"otp": "123456"
})
headers = {
'Content-Type': 'application/json'
}
conn.request("POST", "/v2/projects/phone-login/confirm", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
import Foundation
let headers = [
"Content-Type": "application/json"
]
let parameters = [
"countryCode": "+1",
"phone": 1234566663,
"otp": "123456"
] as [String : Any]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api.verifik.co/v2/projects/phone-login/confirm")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.verifik.co/v2/projects/phone-login/confirm', [
'headers' => [
'Content-Type' => 'application/json',
],
'json' => [
'countryCode' => '+1',
'phone' => 1234566663,
'otp' => '123456'
]
]);
echo $response->getBody();
Respuesta
- 200
- 400
- 409
{
"data": {
"accessToken": "eyJhbGcpXVCJ9.eyJjbGllbnR...JZCIYiUzNjEaIWxYShWeBaRs",
"tokenType": "bearer"
}
}
{
"code": "BadRequest",
"message": "Código OTP inválido.",
"signature": {
"dateTime": "August 31, 2022 3:24 PM",
"message": "Certified by Verifik.co"
}
}
{
"code": "MissingParameter",
"message": "missing countryCode\n. missing phone\n. missing otp\n"
}
Características
- Autenticación por Teléfono: Inicio de sesión usando número de teléfono con verificación OTP
- Generación OTP: Contraseña de un solo uso segura enviada vía WhatsApp/SMS
- Generación de Token: Token de acceso válido por 30 días tras autenticación exitosa
- Respuesta Estructurada: Formato de datos organizado para fácil integración
- Múltiples Lenguajes de Programación: Soporte para JavaScript, Python, PHP y Swift
- Manejo de Errores: Respuestas de error comprensivas para varios escenarios
Nota: Un token generado por este medio será válido por 30 días desde la respuesta exitosa. Verifik no es responsable de la gestión del Access Token.