El grupo de métodos de Usuarios está diseñado para gestionar la autenticación y la seguridad del usuario. Permite al cliente iniciar sesión con credenciales locales, iniciar o completar el proceso de recuperación de contraseña y actualizar un token de acceso mediante un token de actualización.
Estos métodos proporcionan el nivel básico de interacción del usuario con la API y se utilizan para obtener y mantener una sesión autorizada.
Documentation
/api/v1/users/local/authenticate
POST
Autentica a un usuario con credenciales locales (email + contraseña) y establece una sesión en el servidor.
Tras un inicio de sesión exitoso, el servidor devuelve el texto OK y establece las cookies (session_id, access_token, refresh_token), que se utilizan para las solicitudes autorizadas posteriores.
URL
https://quickex.io/api/v1/users/local/authenticate
Autorización requerida
No (inicio de sesión público con credenciales locales).
Encabezados
Accept: application/jsonContent-Type: application/json
Cuerpo de la solicitud (JSON)
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
email |
string | sí | Dirección de correo del usuario. |
password |
string | sí | Contraseña del usuario. |
browserFingerprint |
string | sí | Huella digital única del navegador para la protección de la sesión. |
{
"browserFingerprint": "1231231231231231212312312",
"email": "test@test.com",
"password": "testtest"
}
Ejemplo de solicitud (cURL)
curl -X POST \
'https://quickex.io/api/v1/users/local/authenticate' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"browserFingerprint": "1231231231231231212312312",
"email": "test@test.com",
"password": "testtest"
}'
Respuestas
| Código | Cuerpo | Descripción |
|---|---|---|
201 Created |
OK |
Autenticación exitosa. El servidor establece cookies con identificadores y tokens de sesión (session_id, access_token, refresh_token). |
400 |
Error JSON | Formato de solicitud inválido o campos obligatorios faltantes. |
401 |
Error JSON | Credenciales inválidas. |
5xx |
— | Error del servidor. Inténtalo más tarde. |
Una respuesta exitosa incluye los encabezados Set-Cookie y session-id que establecen la sesión del usuario.
Notas
- Guarda los tokens y las cookies solo en lugares seguros (cookies HttpOnly/Secure, variables de entorno, almacenes secretos).
browserFingerprintdebe permanecer constante para un dispositivo/navegador específico.- Después de iniciar sesión, utiliza las cookies emitidas para llamar a los métodos protegidos de la API v1.
Code Sample
curl -X POST \
'https://quickex.io/api/v1/users/local/authenticate' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"browserFingerprint": "1231231231231231212312312",
"email": "test@test.com",
"password": "testtest"
}'Response Example
OkTry it out
Leave empty to use default
Request Body
Headers
Documentation
Inicia el proceso de restablecimiento de contraseña. Se enviará un código de recuperación de contraseña a la dirección de correo especificada.
Este código debe guardarse para utilizarlo posteriormente con el método /api/v1/users/local/reset-password.
URL
https://quickex.io/api/v1/users/local/request-password-reset
Autorización requerida
No (solicitud pública de restablecimiento de contraseña).
Encabezados
Accept: application/jsonContent-Type: application/json
Cuerpo de la solicitud (JSON)
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
email |
string | sí | Dirección de correo del usuario para la cual se solicita el restablecimiento de contraseña. |
{
"email": "user@example.com"
}
Ejemplo de solicitud (cURL)
curl -X POST \
'https://quickex.io/api/v1/users/local/request-password-reset' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"email": "user@example.com"
}'
Respuestas
| Estado | Cuerpo | Descripción |
|---|---|---|
200 OK |
{"status": "OK"} |
La solicitud se realizó correctamente. Se envió un código de recuperación de contraseña al correo electrónico. |
400 |
Error JSON | Error de validación (por ejemplo, se proporcionó un email inválido). |
5xx |
— | Error del servidor. Por favor, inténtelo de nuevo más tarde. |
{
"status": "ERR_VALIDATION",
"message": "Validation Exception",
"data": {
"email": {
"isEmail": "email must be an email"
}
}
}
Notas
- Después de llamar a este método, el correo especificado recibirá un código de recuperación de contraseña.
- Guarda este código — será necesario para el siguiente paso con el método
/api/v1/users/local/reset-password.- Si el correo no existe o es inválido, el servidor devolverá un error de validación (400).
Code Sample
curl -X POST \
'https://quickex.io/api/v1/users/local/request-password-reset' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"email": "user@example.com"
}'Response Example
OkTry it out
Leave empty to use default
Request Body
Headers
Documentation
Completa el proceso de restablecimiento de contraseña. El usuario debe proporcionar el código de recuperación recibido por correo electrónico como resultado de la llamada
/api/v1/users/local/request-password-reset, junto con la nueva contraseña.
Si la operación es exitosa, la contraseña será actualizada y el usuario podrá iniciar sesión con sus nuevas credenciales.
URL
https://quickex.io/api/v1/users/local/reset-password
Autorización requerida
No (se utiliza el código de recuperación).
Encabezados
Accept: application/jsonContent-Type: application/json
Cuerpo de la solicitud (JSON)
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
email |
string | sí | Dirección de correo electrónico para la cual se realiza el restablecimiento de contraseña. |
resetCode |
string | sí | Código de recuperación recibido por correo después de llamar al método request-password-reset. |
password |
string | sí | Nueva contraseña. |
{
"resetCode": "1231231231231231212312312",
"password": "testtest",
"email": "test@example.com"
}
Ejemplo de solicitud (cURL)
curl -X POST \
'https://quickex.io/api/v1/users/local/reset-password' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"resetCode": "1231231231231231212312312",
"password": "testtest",
"email": "test@example.com"
}'
Respuestas
| Estado | Cuerpo | Descripción |
|---|---|---|
200 OK |
{"status":"OK","message":"Password has been reset"} |
La contraseña ha sido restablecida correctamente. |
401 |
{"status":"ERR_INVALID_PASSWORD_RESET_CODE","message":"Unauthorized"} |
El código de recuperación proporcionado es inválido o ha expirado. |
400 |
{"statusCode":400,"error":"Bad Request","message":["email must be an email"]} |
Error de validación (p. ej., el email tiene un formato inválido). |
5xx |
— | Error del servidor. Por favor, inténtalo más tarde. |
Notas
- Este método se utiliza solo después de llamar a
/api/v1/users/local/request-password-reset.- El código de recuperación tiene un período de validez limitado.
- Después de un restablecimiento exitoso, usa las nuevas credenciales para iniciar sesión mediante
/api/v1/users/local/authenticate.
Code Sample
curl -X POST \
'https://quickex.io/api/v1/users/local/reset-password' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"resetCode": "1231231231231231212312312",
"password": "testtest",
"email": "test@example.com"
}'Response Example
OkTry it out
Leave empty to use default
Request Body
Headers
Documentation
Actualiza el access_token utilizando un refresh_token.
Este método se usa cuando el access_token actual ha expirado.
Devuelve un nuevo access_token, que debe utilizarse para las solicitudes posteriores a endpoints protegidos.
URL
https://quickex.io/api/v1/users/authentication/refresh
Autorización requerida
Sí (se requiere un refresh_token válido enviado en las cookies).
Encabezados
Accept: application/jsonContent-Type: application/jsonCookie: refresh_token={REFRESH_TOKEN}
Cuerpo de la solicitud (JSON)
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
browserFingerprint |
string | sí | Huella digital única del navegador, coincidiendo con la proporcionada durante la autenticación. |
{
"browserFingerprint": "1231231231231231212312312"
}
Ejemplo de solicitud (cURL)
curl -X POST \
'https://quickex.io/api/v1/users/authentication/refresh' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--cookie "refresh_token=YOUR_REFRESH_TOKEN" \
-d '{
"browserFingerprint": "1231231231231231212312312"
}'
Respuestas
| Estado | Cuerpo | Descripción |
|---|---|---|
200 OK |
{"access_token":"<NEW_JWT>"} |
Se ha emitido correctamente un nuevo access_token. |
401 Unauthorized |
{"status":"ERR_INVALID_REFRESH_TOKEN","message":"Unauthorized"} |
El refresh_token proporcionado es inválido o ha expirado. |
400 Bad Request |
{"statusCode":400,"error":"Bad Request","message":["browserFingerprint must be a string"]} |
Error de validación (por ejemplo, browserFingerprint incorrecto). |
5xx |
— | Error del servidor. Por favor, inténtalo más tarde. |
Notas
- Este método se utiliza únicamente para actualizar el
access_token. No se emite un nuevorefresh_token.browserFingerprintdebe coincidir con el proporcionado durante el inicio de sesión mediante/api/v1/users/local/authenticate.- Siempre almacena y transmite el
refresh_tokenúnicamente en cookies seguras (HttpOnly,Secure).
Code Sample
curl -X POST \
'https://quickex.io/api/v1/users/authentication/refresh' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--cookie "refresh_token=YOUR_REFRESH_TOKEN" \
-d '{
"browserFingerprint": "1231231231231231212312312"
}'Try it out
Leave empty to use default
Request Body
Headers
Documentation
Devuelve los datos de la cuenta de un usuario autenticado: ID, correo electrónico y un conjunto de permisos.
Es utilizado por el cliente después del inicio de sesión para determinar las secciones/acciones disponibles en la interfaz.
URL
https://quickex.io/api/v1/users/account-data
Autorización requerida
Sí — se requiere una cookie de sesión válida emitida por el método /api/v1/users/local/authenticate.
Encabezados
Accept: application/json- Cookie (p. ej.,
session_id=...)
Parámetros
Ninguno
Ejemplo de solicitud (cURL)
curl -X GET \
'https://quickex.io/api/v1/users/account-data' \
-H 'Accept: application/json' \
--cookie "session_id=YOUR_SESSION_ID"
Ejemplo de respuesta (200)
{
"userId": 42,
"email": "user@example.com",
"permissions": "USER",
"adminPermissionsScope": {
"ORDERS": { "READ": true, "CONFIGURE": false, "PROCESS": true, "CREATE_LARGE_ADDITIONAL_WITHDRAWALS": false, "ENABLE_MANUAL_PROCESSING": false },
"INSTRUMENTS": { "READ": true, "UPDATE": false },
"PAIRS": { "READ": true, "UPDATE": false },
"BESTCHANGE": { "READ": true, "UPDATE": false },
"USERS": { "READ": true, "UPDATE": false },
"API_KEYS": { "READ": true, "UPDATE": false },
"STATS": { "READ": true },
"AFFILIATES": { "READ": true, "UPDATE": false },
"PLATFORM_FEE_COLLECTION": { "READ": true, "UPDATE": false },
"TRANSLATION": { "READ": true, "UPDATE": false }
}
}
Respuestas
| Código | Cuerpo | Descripción |
|---|---|---|
200 OK |
JSON (ver ejemplo) | Los datos de la cuenta se devolvieron correctamente. |
401 Unauthorized |
{"status":"ERR_UNAUTHORIZED","message":"Unauthorized"} |
La sesión falta o ha expirado; se requiere nueva autenticación. |
5xx |
— | Error interno del servidor. |
Notas
adminPermissionsScopedetalla los permisos de los subsistemas (lectura/actualización/procesamiento, etc.).- Si el frontend no requiere permisos administrativos, solo pueden utilizarse los campos
userId,permissions.- Para actualizar la sesión, utiliza el método
/api/v1/users/authentication/refresh(si corresponde a tu flujo).
Code Sample
curl -X 'GET' \
'https://quickex.io/api/v1/users/account-data' \
-H 'accept: application/json'
--cookie "access_token=YOUR_TOKEN"Response Example
{
"userId": 0,
"email": "string",
"permissions": "string",
"adminPermissionsScope": {
"ORDERS": {
"READ": true,
"CONFIGURE": false,
"PROCESS": true,
"CREATE_LARGE_ADDITIONAL_WITHDRAWALS": false,
"ENABLE_MANUAL_PROCESSING": false
},
"INSTRUMENTS": {
"READ": true,
"UPDATE": false
},
"PAIRS": {
"READ": true,
"UPDATE": false
},
"BESTCHANGE": {
"READ": true,
"UPDATE": false
},
"USERS": {
"READ": true,
"UPDATE": false
},
"API_KEYS": {
"READ": true,
"UPDATE": false
},
"STATS": {
"READ": true
},
"AFFILIATES": {
"READ": true,
"UPDATE": false
},
"PLATFORM_FEE_COLLECTION": {
"READ": true,
"UPDATE": false
},
"TRANSLATION": {
"READ": true,
"UPDATE": false
}
}
}Try it out
Leave empty to use default
Headers
Documentation
Finaliza la sesión actual del usuario.
Se utiliza para cerrar sesión e invalidar los tokens de autorización activos (o cookies).
URL
https://quickex.io/api/v1/users/authentication/logout
Autorización requerida
Sí — el usuario debe estar autenticado.
Encabezados
Accept: application/json
Cuerpo de la solicitud
No se requiere (se envía un cuerpo vacío).
Ejemplo de solicitud (cURL)
curl -X POST \
'https://quickex.io/api/v1/users/authentication/logout' \
-H 'Accept: application/json' \
--cookie "session_id=YOUR_SESSION_ID" \
-d ''
Ejemplo de respuesta (201)
OK
Respuestas
| Código | Descripción |
|---|---|
201 Created |
El cierre de sesión se completó correctamente; la sesión actual ha sido finalizada. |
200 OK |
El servidor también puede devolver una respuesta 200 exitosa (en formato JSON). |
401 Unauthorized |
Intento de cerrar sesión sin una sesión activa o con tokens inválidos. |
Notas
- Este método solo finaliza la sesión actual. Si el usuario ha iniciado sesión en varios dispositivos, las sesiones en otros dispositivos permanecerán activas.
- Después de llamar a este método, el usuario debe volver a autenticarse para acceder a los métodos privados.
- Si la cookie o el token expiraron antes de llamar a este método, el servidor devolverá un error
401 Unauthorized.
Code Sample
curl -X 'POST' \
'https://quickex.io/api/v1/users/authentication/logout' \
-H 'accept: application/json' \
--cookie "access_token=YOUR_TOKEN" \
-d ''Response Example
OKTry it out
Leave empty to use default
Request Body
Headers
Documentation
Genera una nueva clave API para el usuario autenticado.
La clave consiste en un par: publicKey y secretKey, que se utilizan al trabajar con los métodos de API v2.
Además, se puede especificar una lista de direcciones IP de confianza (whitelist) y el estado activo de la clave.
URL
https://quickex.io/api/v1/users/generate-api-key
Autorización requerida
Sí — el método está disponible solo para usuarios autenticados.
Encabezados
Accept: application/jsonContent-Type: application/json- Cookie de sesión (
session_id=...)
Cuerpo de la solicitud (JSON)
{
"name": "Api name / App name",
"whiteListIp": [
"127.0.0.1",
"127.0.0.2"
],
"isActive": true
}
Ejemplo de solicitud (cURL)
curl -X POST \
'https://quickex.io/api/v1/users/generate-api-key' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--cookie "session_id=YOUR_SESSION_ID" \
-d '{
"name": "Api name / App name",
"whiteListIp": ["127.0.0.1", "127.0.0.2"],
"isActive": true
}'
Ejemplo de respuesta (200)
{
"apiId": 1,
"name": "Api name / App name",
"publicKey": "pk_123456789",
"secretKey": "sk_987654321",
"whiteListIp": ["127.0.0.1","127.0.0.2"],
"isActive": true,
"createdAt": "2025-08-26 12:16:20"
}
Respuestas
| Código | Descripción |
|---|---|
200 OK |
La clave fue creada correctamente. La respuesta devuelve un objeto con publicKey y secretKey. |
401 Unauthorized |
El usuario no está autenticado o la sesión ha expirado. |
400 Bad Request |
Error de validación en los datos enviados. |
Notas
- Public Key se utiliza para identificar al cliente.
- Secret Key debe ser almacenada solamente por el usuario y se usa para firmar solicitudes en API v2.
- Se recomienda restringir el uso de la clave API por IP (
whiteListIp) para mayor seguridad.- Si se pierde la
secretKey, no puede recuperarse — se debe generar una nueva clave.
Code Sample
curl -X 'POST' \
'https://quickex.io/api/v1/users/generate-api-key' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
--cookie "access_token=YOUR_TOKEN" \
-d '{
"name": "Api name / App name",
"whiteListIp": [
"127.0.0.1",
"127.0.0.2"
],
"isActive": false
}'Try it out
Leave empty to use default
Request Body
Headers
Documentation
Devuelve una lista de todas las claves API creadas por el usuario.
El método permite ver claves activas e inactivas, sus parámetros (nombre, lista de IP permitidas, estado), así como la fecha de creación.
Se utiliza para administrar claves en la cuenta personal del usuario.
URL
https://quickex.io/api/v1/users/list-api-key
Autorización requerida
Sí — el usuario debe estar autenticado (cookie de sesión o access token).
Parámetros
Ninguno
Ejemplo de solicitud (cURL)
curl -X GET \
'https://quickex.io/api/v1/users/list-api-key' \
-H 'Accept: application/json' \
--cookie "session_id=YOUR_SESSION_ID"
Ejemplo de respuesta (200)
[
{
"apiId": 1,
"name": "Api name / App name",
"publicKey": "pk_123456789",
"whiteListIp": [
"127.0.0.1",
"127.0.0.2"
],
"isActive": true,
"createdAt": "2025-08-26 12:16:20"
}
]
Respuestas
| Código | Descripción |
|---|---|
200 OK |
La lista de claves se recuperó correctamente. |
401 Unauthorized |
El usuario no está autenticado o la sesión ha expirado. |
400 Bad Request |
Error de validación en los datos enviados (raro para esta solicitud). |
Notas
publicKeyse utiliza en los encabezados de las solicitudes de API v2.secretKeysolo se devuelve cuando la clave se crea mediante/generate-api-keyy no se muestra en la lista.whiteListIplimita el uso de la clave únicamente a las direcciones IP especificadas.- Para desactivar o eliminar una clave, deben utilizarse métodos separados de gestión de claves API (si están disponibles).
Code Sample
curl -X 'GET' \
'https://quickex.io/api/v1/users/list-api-key' \
-H 'accept: application/json'
--cookie "access_token=YOUR_TOKEN"Response Example
[
{
"apiId": 1,
"name": "Api name / App name",
"publicKey": "gdsfdgdsdsgds",
"whiteListIp": [
"127.0.0.1",
"127.0.0.2"
],
"isActive": false,
"createdAt": "2022-12-14 12:16:20"
}
]Try it out
Leave empty to use default
Headers
Documentation
Elimina una clave API previamente generada.
Después de la eliminación, la clave se vuelve inválida y ya no puede utilizarse para autenticar solicitudes en API v2.
URL
https://quickex.io/api/v1/users/delete-api-key
Autorización requerida
Sí — el método está disponible solo para usuarios autenticados.
Encabezados
Accept: application/jsonContent-Type: application/json- Cookie de sesión (
session_id=...)
Cuerpo de la solicitud (JSON)
{
"apiId": 1
}
Ejemplo de solicitud (cURL)
curl -X POST \
'https://quickex.io/api/v1/users/delete-api-key' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--cookie "session_id=YOUR_SESSION_ID" \
-d '{
"apiId": 1
}'
Ejemplo de respuesta (200)
true
Respuestas
| Código | Descripción |
|---|---|
200 OK |
La clave fue eliminada correctamente; se devuelve true. |
401 Unauthorized |
El usuario no está autenticado o la sesión ha expirado. |
400 Bad Request |
Error de validación en los datos proporcionados (por ejemplo, un apiId inválido). |
Notas
- Después de la eliminación, la clave no puede ser recuperada. Para acceder a API v2, debe generarse una nueva clave.
- El método solo acepta el identificador de la clave (
apiId) obtenido de la lista de claves (/api/v1/users/list-api-key).- Se recomienda eliminar la clave en caso de compromiso o cuando la integración ya no sea necesaria.
Code Sample
curl -X 'POST' \
'https://quickex.io/api/v1/users/delete-api-key' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
--cookie "access_token=YOUR_TOKEN" \
-d '{
"apiId": 1
}'Try it out
Leave empty to use default
Request Body
Headers
Documentation
Devuelve el estado actual de KYC (Know Your Customer) para el usuario autenticado.
Este método se utiliza para comprobar si el usuario ha pasado la verificación de identidad, así como para obtener la razón del rechazo si la verificación no fue exitosa.
URL
https://quickex.io/api/v1/users/kyc/status
Autorización requerida
Sí — se requiere una sesión de usuario válida.
Encabezados
Accept: application/json- Cookie de sesión (
access_token=...)
Parámetros
Ninguno
Ejemplo de solicitud (cURL)
curl -X GET \
'https://quickex.io/api/v1/users/kyc/status' \
-H 'Accept: application/json' \
--cookie "access_token=YOUR_TOKEN"
Ejemplo de respuesta (200)
{
"status": "PASS",
"rejectReason": "ID_INFO_INVALID"
}
Posibles valores de status
PENDING— verificación de documentos en proceso.PASS— verificación completada con éxito.REJECTED— verificación rechazada.
Respuestas
| Estado | Descripción |
|---|---|
200 OK |
Devuelve el estado KYC y la razón del rechazo (si corresponde). |
401 Unauthorized |
El usuario no está autorizado o la sesión ha expirado. |
400 Bad Request |
Error de validación (por ejemplo, datos de sesión inválidos). |
Notas
- Este método solo devuelve el estado — la carga de documentos para KYC se gestiona mediante otros métodos.
- El campo
rejectReasonsolo está presente cuando el estado esREJECTEDo la verificación ha sido denegada.- Los valores del estado pueden utilizarse para mostrar el progreso en el panel del usuario.
Code Sample
curl -X GET \
'https://quickex.io/api/v1/users/kyc/status' \
-H 'Accept: application/json' \
--cookie "access_token=YOUR_TOKEN"Try it out
Leave empty to use default