Le groupe de méthodes Users est conçu pour gérer l’authentification et la sécurité des utilisateurs. Il permet au client de se connecter à l’aide d’identifiants locaux, d’initier ou de terminer la procédure de récupération de mot de passe, ainsi que de renouveler un jeton d’accès à l’aide d’un jeton de rafraîchissement.
Ces méthodes constituent le niveau de base de l’interaction utilisateur avec l’API et sont utilisées pour obtenir et maintenir une session autorisée.
Documentation
/api/v1/users/local/authenticate
POST
Authentifie un utilisateur à l’aide de ses identifiants locaux (email + mot de passe) et établit une session serveur.
En cas de connexion réussie, le serveur renvoie le texte OK et définit des cookies
(session_id, access_token, refresh_token) utilisés pour les requêtes autorisées suivantes.
URL
https://quickex.io/api/v1/users/local/authenticate
Autorisation requise
Non (connexion publique avec identifiants locaux).
En-têtes
Accept: application/jsonContent-Type: application/json
Corps de la requête (JSON)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
email |
string | oui | Adresse email de l’utilisateur. |
password |
string | oui | Mot de passe de l’utilisateur. |
browserFingerprint |
string | oui | Empreinte unique du navigateur pour la protection de la session. |
{
"browserFingerprint": "1231231231231231212312312",
"email": "test@test.com",
"password": "testtest"
}
Exemple de requête (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"
}'
Réponses
| Code | Corps | Description |
|---|---|---|
201 Created |
OK |
Authentification réussie. Le serveur définit des cookies contenant les identifiants de session et les tokens (session_id, access_token, refresh_token). |
400 |
Erreur JSON | Format de requête invalide ou champs obligatoires manquants. |
401 |
Erreur JSON | Identifiants incorrects. |
5xx |
— | Erreur serveur. Réessayez plus tard. |
Une réponse réussie inclut les en-têtes Set-Cookie et session-id qui établissent la session utilisateur.
Notes
- Stockez les tokens et les cookies uniquement dans des emplacements sécurisés (cookies HttpOnly/Secure, variables d’environnement, coffres-forts).
browserFingerprintdoit rester constant pour un appareil/navigateur spécifique.- Après la connexion, utilisez les cookies reçus pour appeler les méthodes protégées de l’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
Lance le processus de réinitialisation du mot de passe. Un code de récupération sera envoyé à l’adresse e-mail spécifiée.
Ce code doit être conservé pour une utilisation ultérieure avec la méthode /api/v1/users/local/reset-password.
URL
https://quickex.io/api/v1/users/local/request-password-reset
Autorisation requise
Non (demande publique de réinitialisation du mot de passe).
En-têtes
Accept: application/jsonContent-Type: application/json
Corps de la requête (JSON)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
email |
string | oui | Adresse e-mail de l’utilisateur pour lequel la réinitialisation du mot de passe est demandée. |
{
"email": "user@example.com"
}
Exemple de requête (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"
}'
Réponses
| Status | Corps | Description |
|---|---|---|
200 OK |
{"status": "OK"} |
La requête a été effectuée avec succès. Un code de récupération a été envoyé à l’adresse e-mail. |
400 |
Erreur JSON | Erreur de validation (par ex. adresse email invalide). |
5xx |
— | Erreur serveur. Veuillez réessayer plus tard. |
{
"status": "ERR_VALIDATION",
"message": "Validation Exception",
"data": {
"email": {
"isEmail": "email must be an email"
}
}
}
Notes
- Après l’appel de cette méthode, l’e-mail spécifié recevra un code de récupération.
- Conservez ce code — il est nécessaire pour l’étape suivante avec la méthode
/api/v1/users/local/reset-password.- Si l’e-mail n’existe pas ou est invalide, le serveur renverra une erreur de validation (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
Finalise le processus de réinitialisation du mot de passe.
L’utilisateur doit fournir le code de récupération reçu par e-mail suite à l’appel de
/api/v1/users/local/request-password-reset, ainsi que le nouveau mot de passe.
En cas de succès, le mot de passe sera mis à jour et l’utilisateur pourra se connecter avec ses nouvelles informations d’identification.
URL
https://quickex.io/api/v1/users/local/reset-password
Autorisation requise
Non (le code de récupération est utilisé).
En-têtes
Accept: application/jsonContent-Type: application/json
Corps de la requête (JSON)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
email |
string | oui | Adresse e-mail pour laquelle la réinitialisation du mot de passe est effectuée. |
resetCode |
string | oui | Code de récupération reçu par e-mail après l’appel à request-password-reset. |
password |
string | oui | Nouveau mot de passe. |
{
"resetCode": "1231231231231231212312312",
"password": "testtest",
"email": "test@example.com"
}
Exemple de requête (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"
}'
Réponses
| Status | Corps | Description |
|---|---|---|
200 OK |
{"status":"OK","message":"Password has been reset"} |
Mot de passe réinitialisé avec succès. |
401 |
{"status":"ERR_INVALID_PASSWORD_RESET_CODE","message":"Unauthorized"} |
Le code de récupération fourni est invalide ou expiré. |
400 |
{"statusCode":400,"error":"Bad Request","message":["email must be an email"]} |
Erreur de validation (par ex. format d’e-mail incorrect). |
5xx |
— | Erreur serveur. Veuillez réessayer plus tard. |
Notes
- Cette méthode n’est utilisée qu’après l’appel de
/api/v1/users/local/request-password-reset.- Le code de récupération possède une durée de validité limitée.
- Après une réinitialisation réussie, utilisez les nouvelles informations d’identification pour vous connecter via
/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
Rafraîchit le access_token à l’aide d’un refresh_token.
Cette méthode est utilisée lorsque le access_token actuel a expiré.
Elle renvoie un nouveau access_token, qui doit être utilisé pour les requêtes suivantes vers les endpoints protégés.
URL
https://quickex.io/api/v1/users/authentication/refresh
Autorisation requise
Oui (un refresh_token valide transmis dans les cookies est requis).
En-têtes
Accept: application/jsonContent-Type: application/jsonCookie: refresh_token={REFRESH_TOKEN}
Corps de la requête (JSON)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
browserFingerprint |
string | oui | Empreinte unique du navigateur correspondant à celle fournie lors de l’authentification. |
{
"browserFingerprint": "1231231231231231212312312"
}
Exemple de requête (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"
}'
Réponses
| Status | Corps | Description |
|---|---|---|
200 OK |
{"access_token":"<NEW_JWT>"} |
Un nouveau access_token a été émis avec succès. |
401 Unauthorized |
{"status":"ERR_INVALID_REFRESH_TOKEN","message":"Unauthorized"} |
Le refresh_token fourni est invalide ou expiré. |
400 Bad Request |
{"statusCode":400,"error":"Bad Request","message":["browserFingerprint must be a string"]} |
Erreur de validation (par ex. browserFingerprint incorrect). |
5xx |
— | Erreur serveur. Veuillez réessayer plus tard. |
Notes
- Cette méthode sert uniquement à rafraîchir le
access_token. Un nouveaurefresh_tokenn’est pas émis.browserFingerprintdoit correspondre à celui fourni lors de la connexion via/api/v1/users/local/authenticate.- Stockez et transmettez toujours le
refresh_tokenuniquement dans des cookies sécurisés (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
Renvoie les données du compte d’un utilisateur authentifié : ID, e-mail et ensemble d’autorisations.
Utilisé par le client après la connexion pour déterminer les sections/actions disponibles dans l’interface.
URL
https://quickex.io/api/v1/users/account-data
Autorisation requise
Oui — un cookie de session valide émis par la méthode /api/v1/users/local/authenticate.
En-têtes
Accept: application/json- Cookie (ex.
session_id=...)
Paramètres
Aucun
Exemple de requête (cURL)
curl -X GET \
'https://quickex.io/api/v1/users/account-data' \
-H 'Accept: application/json' \
--cookie "session_id=YOUR_SESSION_ID"
Exemple de réponse (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 }
}
}
Réponses
| Code | Corps | Description |
|---|---|---|
200 OK |
JSON (voir exemple) | Les données du compte ont été renvoyées avec succès. |
401 Unauthorized |
{"status":"ERR_UNAUTHORIZED","message":"Unauthorized"} |
La session est absente ou expirée ; une nouvelle authentification est requise. |
5xx |
— | Erreur interne du serveur. |
Notes
adminPermissionsScopedécrit les droits par sous-système (lecture/mise à jour/traitement, etc.).- Si le frontend n’a pas besoin des droits administratifs, seuls les champs
userId,permissionspeuvent être utilisés.- Pour rafraîchir la session, utilisez la méthode
/api/v1/users/authentication/refresh(si applicable dans votre flux).
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
Met fin à la session utilisateur en cours.
Utilisé pour se déconnecter et invalider les jetons d’autorisation actifs (ou cookies).
URL
https://quickex.io/api/v1/users/authentication/logout
Autorisation requise
Oui — l’utilisateur doit être authentifié.
En-têtes
Accept: application/json
Corps de la requête
Non requis (un corps vide est envoyé).
Exemple de requête (cURL)
curl -X POST \
'https://quickex.io/api/v1/users/authentication/logout' \
-H 'Accept: application/json' \
--cookie "session_id=YOUR_SESSION_ID" \
-d ''
Exemple de réponse (201)
OK
Réponses
| Code | Description |
|---|---|
201 Created |
Déconnexion effectuée avec succès, la session en cours a été terminée. |
200 OK |
Le serveur peut également renvoyer une réponse 200 réussie (au format JSON). |
401 Unauthorized |
Tentative de déconnexion sans session active ou avec des jetons invalides. |
Notes
- Cette méthode ne met fin qu’à la session actuelle. Si l’utilisateur est connecté sur plusieurs appareils, les autres sessions resteront actives.
- Après avoir appelé cette méthode, l’utilisateur doit se réauthentifier pour accéder aux méthodes privées.
- Si le cookie ou le jeton a expiré avant l’appel, le serveur renverra une erreur
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
Génère une nouvelle clé API pour l’utilisateur authentifié.
La clé se compose d’une paire : publicKey et secretKey, utilisées pour les méthodes de l’API v2.
Il est également possible de spécifier une liste d’adresses IP de confiance (whitelist) ainsi que l’état actif de la clé.
URL
https://quickex.io/api/v1/users/generate-api-key
Autorisation requise
Oui — la méthode est disponible uniquement pour les utilisateurs connectés.
En-têtes
Accept: application/jsonContent-Type: application/json- Cookie de session (
session_id=...)
Corps de la requête (JSON)
{
"name": "Api name / App name",
"whiteListIp": [
"127.0.0.1",
"127.0.0.2"
],
"isActive": true
}
Exemple de requête (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
}'
Exemple de réponse (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"
}
Réponses
| Code | Description |
|---|---|
200 OK |
Clé créée avec succès. La réponse renvoie un objet contenant publicKey et secretKey. |
401 Unauthorized |
L’utilisateur n’est pas authentifié ou la session a expiré. |
400 Bad Request |
Erreur de validation des données d’entrée. |
Notes
- Public Key est utilisée pour identifier le client.
- Secret Key est conservée uniquement par l’utilisateur et sert à signer les requêtes dans l’API v2.
- Il est recommandé de restreindre l’utilisation de la clé API par IP (
whiteListIp) pour renforcer la sécurité.- En cas de perte de la
secretKey, elle ne peut pas être récupérée — une nouvelle clé doit être générée.
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
Renvoie la liste de toutes les clés API créées par l’utilisateur.
La méthode permet d’afficher les clés actives et inactives, leurs paramètres (nom, liste blanche d’adresses IP, statut), ainsi que la date de création.
Elle est utilisée pour gérer les clés dans le compte personnel de l’utilisateur.
URL
https://quickex.io/api/v1/users/list-api-key
Autorisation requise
Oui — l’utilisateur doit être authentifié (cookie de session ou jeton d’accès).
Paramètres
Aucun
Exemple de requête (cURL)
curl -X GET \
'https://quickex.io/api/v1/users/list-api-key' \
-H 'Accept: application/json' \
--cookie "session_id=YOUR_SESSION_ID"
Exemple de réponse (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"
}
]
Réponses
| Code | Description |
|---|---|
200 OK |
Liste des clés récupérée avec succès. |
401 Unauthorized |
L’utilisateur n’est pas authentifié ou la session a expiré. |
400 Bad Request |
Erreur de validation des données d’entrée (rare pour cette requête). |
Notes
publicKeyest utilisée dans les en-têtes de requêtes de l’API v2.secretKeyn’est affichée que lors de la création d’une clé via/generate-api-keyet n’apparaît plus ensuite.whiteListIplimite l’utilisation de la clé aux adresses IP spécifiées uniquement.- Pour désactiver ou supprimer une clé, il faut utiliser des méthodes de gestion des clés API distinctes (si 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
Supprime une clé API précédemment générée.
Après la suppression, la clé devient invalide et ne peut plus être utilisée pour authentifier des requêtes dans l’API v2.
URL
https://quickex.io/api/v1/users/delete-api-key
Autorisation requise
Oui — la méthode est disponible uniquement pour les utilisateurs authentifiés.
En-têtes
Accept: application/jsonContent-Type: application/json- Cookie de session (
session_id=...)
Corps de la requête (JSON)
{
"apiId": 1
}
Exemple de requête (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
}'
Exemple de réponse (200)
true
Réponses
| Code | Description |
|---|---|
200 OK |
Clé supprimée avec succès, true est renvoyé. |
401 Unauthorized |
L’utilisateur n’est pas authentifié ou la session a expiré. |
400 Bad Request |
Erreur de validation des données (par exemple, apiId invalide). |
Notes
- Après suppression, la clé ne peut pas être restaurée. Pour accéder à l’API v2, une nouvelle clé doit être générée.
- La méthode n’accepte que l’identifiant de la clé (
apiId) obtenu dans la liste des clés (/api/v1/users/list-api-key).- La suppression est recommandée en cas de compromission de la clé ou lorsque l’intégration n’est plus nécessaire.
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
Renvoie le statut KYC (Know Your Customer) actuel de l’utilisateur authentifié.
Cette méthode permet de vérifier si l’utilisateur a passé la vérification d’identité, ainsi que d’obtenir la raison du refus en cas d’échec.
URL
https://quickex.io/api/v1/users/kyc/status
Autorisation requise
Oui — une session utilisateur valide est requise.
En-têtes
Accept: application/json- Cookie de session (
access_token=...)
Paramètres
Aucun
Exemple de requête (cURL)
curl -X GET \
'https://quickex.io/api/v1/users/kyc/status' \
-H 'Accept: application/json' \
--cookie "access_token=YOUR_TOKEN"
Exemple de réponse (200)
{
"status": "PASS",
"rejectReason": "ID_INFO_INVALID"
}
Valeurs possibles pour status
PENDING— vérification des documents en cours.PASS— vérification réussie.REJECTED— vérification refusée.
Réponses
| Statut | Description |
|---|---|
200 OK |
Renvoie le statut KYC ainsi que la raison du refus (si applicable). |
401 Unauthorized |
L’utilisateur n’est pas autorisé ou la session a expiré. |
400 Bad Request |
Erreur de validation (par ex. données de session invalides). |
Notes
- Cette méthode renvoie uniquement le statut — le téléversement des documents KYC est géré par d’autres méthodes.
- Le champ
rejectReasonn’est présent que lorsque le statut estREJECTEDou que la vérification a été refusée.- Les valeurs de statut peuvent être utilisées pour afficher la progression dans le tableau de bord utilisateur.
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