Deltalytix
  • Support
Se connecter

Documentation API.

Authentifiez-vous avec OAuth ou des personal access tokens, puis lisez et écrivez trades, comptes, connexions, imports et métriques via l’API publique Deltalytix v1.

Sur cette page

  • Ce que vous pouvez faire
  • Authentification
    • Obtenir un jeton
    • OAuth 2.0
  • Trades
  • Comptes
  • Connexions
  • Imports
  • Métriques
  • Erreurs
  • Référence OpenAPI

Ce que vous pouvez faire

Chaque ligne ouvre le guide correspondant. Incluez ce scope sur votre jeton.

Vous pouvezScope
Lire le profil de l’utilisateur authentifiéprofile:read
Lister les tradestrades:read
Créer des tradestrades:write
Lister les comptes et métriques associéesaccounts:read
Lister les connexions brokerconnections:read
Créer des connexions et déclencher une syncconnections:write
Envoyer des fichiers d’importimports:write
Lire les métriques summary, equity et comptesmetrics:read

Authentification

Obtenir un jeton

Vous pouvez générer ou coller un jeton depuis n’importe quel panneau d’essai, au moment où vous en avez besoin.

Deltalytix est son propre serveur d’autorisation OAuth 2.0. Les humains se connectent toujours via Supabase ; les jetons API sont émis et validés par Deltalytix.

Chaque requête /api/v1/* exige un jeton Bearer :

Authorization: Bearer dltx_at_…

Les endpoints REST sont servis depuis https://www.deltalytix.app sous API v1 (/api/v1/*). Les listes acceptent limit (défaut 100, max 500) et cursor. Les timestamps sont en ISO 8601. Découverte machine-readable : /openapi.json, /.well-known/openid-configuration, /.well-known/oauth-protected-resource.

Formats de jetons

Les jetons sont des chaînes opaques. Deltalytix ne stocke que des empreintes SHA-256.

TypePréfixeDurée de vie
Access tokendltx_at_<48 hex chars>3600 secondes
Refresh tokendltx_rt_<48 hex chars>30 jours (rotation à chaque usage)
Personal access token (PAT)dltx_pat_<48 hex chars>Pas d’expiration jusqu’à révocation
Client IDdltx_app_<24 hex chars>—
Client secretdltx_secret_<48 hex chars>Affiché une seule fois à la création

Scopes

Demandez uniquement les scopes dont votre intégration a besoin. Séparez-les par des espaces dans le paramètre OAuth scope. La liste complète est dans ce que vous pouvez faire.

Personal access tokens

Les PAT conviennent aux scripts et outils privés. Créez-les et révoquez-les dans Paramètres → Connexions, en choisissant les scopes nécessaires. La valeur du jeton n’est affichée qu’une fois.

curl https://www.deltalytix.app/api/v1/me \
  -H "Authorization: Bearer dltx_pat_YOUR_TOKEN"

Token démo

Le playground de la documentation peut émettre un token démo de courte durée, en lecture seule, sans connexion. Il authentifie un compte d’exemple partagé (DEMO-001) pour essayer les routes GET. Les scopes d’écriture exigent votre propre token docs ou PAT. Les tokens docs générés une fois connecté expirent au bout de 24 heures.

OAuth 2.0

Enregistrez votre application sur la page Développeurs pour obtenir un client_id et un client_secret.

1. Autoriser

Envoyez l’utilisateur vers la page de consentement (HTML). Les utilisateurs non authentifiés sont redirigés vers /authentication?next=….

GET /oauth/authorize
  ?client_id=dltx_app_…
  &redirect_uri=https%3A%2F%2Fyour-app.example%2Fcallback
  &response_type=code
  &scope=profile%3Aread%20trades%3Aread
  &state=csrf-token
  &code_challenge=BASE64URL_SHA256_OF_VERIFIER
  &code_challenge_method=S256

Essayer cette route

Cet endpoint d’autorisation exige une redirection navigateur et le consentement de l’utilisateur ; il ne peut donc pas être envoyé ici comme une requête API.

QueryRequisNotes
client_idOuiApplication OAuth enregistrée
redirect_uriOuiDoit correspondre exactement à une URI enregistrée
response_typeOuiDoit être code
scopeOuiScopes séparés par des espaces
stateRecommandéProtection CSRF ; renvoyé à la redirection
code_challengeRecommandéChallenge PKCE S256
code_challenge_methodAvec challengeDoit être S256

En cas d’approbation, Deltalytix émet un code d’autorisation à usage unique (TTL de 10 minutes) et redirige. Une nouvelle approbation de la même application pour le même utilisateur révoque les jetons d’accès et de rafraîchissement antérieurs de cette paire et invalide les codes d’autorisation non utilisés, afin que seul le nouvel octroi reste utilisable :

https://your-app.example/callback?code=…&state=…

En cas de refus :

https://your-app.example/callback?error=access_denied&state=…

2. Échanger le code contre des jetons

POST /api/oauth/token accepte du form-urlencoded ou du JSON.

Chargement de la définition live de l’endpoint…
curl -X POST https://www.deltalytix.app/api/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=authorization_code" \
  -d "code=AUTHORIZATION_CODE" \
  -d "redirect_uri=https://your-app.example/callback" \
  -d "client_id=dltx_app_…" \
  -d "client_secret=dltx_secret_…" \
  -d "code_verifier=PKCE_VERIFIER"

Chaque application OAuth est un client confidentiel. Envoyez client_secret dans le corps (client_secret_post) ou via Authorization: Basic (client_secret_basic) lors de l’échange du code, du refresh et de la révocation. Un secret absent ou incorrect renvoie 401 invalid_client. PKCE reste recommandé : un code émis avec un code_challenge exige aussi le code_verifier correspondant.

Succès

{
  "access_token": "dltx_at_…",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "dltx_rt_…",
  "scope": "profile:read trades:read"
}

Les erreurs OAuth suivent la RFC 6749 :

Erreur

{
  "error": "invalid_grant",
  "error_description": "Invalid or expired authorization code"
}

3. Appeler l’API

curl https://www.deltalytix.app/api/v1/trades?limit=10 \
  -H "Authorization: Bearer dltx_at_…"
const res = await fetch("https://www.deltalytix.app/api/v1/trades?limit=10", {
  headers: {
    Authorization: `Bearer ${accessToken}`,
  },
});

4. Rafraîchir l’access token

curl -X POST https://www.deltalytix.app/api/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "refresh_token",
    "refresh_token": "dltx_rt_…",
    "client_id": "dltx_app_…",
    "client_secret": "dltx_secret_…"
  }'

Les refresh tokens tournent à chaque usage. Conservez le nouveau refresh_token de chaque réponse réussie.

5. Révoquer un jeton

curl -X POST https://www.deltalytix.app/api/oauth/revoke \
  -H "Content-Type: application/json" \
  -d '{
    "token": "dltx_at_…",
    "client_id": "dltx_app_…",
    "client_secret": "dltx_secret_…"
  }'
Chargement de la définition live de l’endpoint…

La révocation renvoie toujours 200, que le jeton ait été trouvé ou non.

Échecs côté resource server

Un Bearer manquant ou invalide renvoie 401 :

Erreur

{
  "error": "unauthorized",
  "message": "…"
}

avec un en-tête WWW-Authenticate pointant vers les métadonnées de ressource protégée.

Un jeton valide sans le scope requis renvoie 403 :

Erreur

{
  "error": "insufficient_scope",
  "message": "…"
}

Gérer les applications et les jetons

Sur la page Développeurs, vous pouvez :

  • Créer des applications OAuth (nom, redirect URIs, scopes autorisés) — client_id toujours visible ; client_secret affiché une fois. Les redirect URIs doivent être des URL https absolues (http uniquement sur localhost), sans fragment.
  • Modifier une application, régénérer son secret client ou la supprimer

Dans Paramètres → Connexions, vous pouvez :

  • Créer et révoquer des personal access tokens avec les scopes choisis — la valeur du PAT est affichée une fois
  • Révoquer les applications que vous avez autorisées sur votre compte

Trades

Lister et créer des trades avec filtres, pagination et le pipeline partagé d’import / déduplication.

Gérez l’historique de trades de l’utilisateur authentifié.

Lister les trades

GET /api/v1/trades

Scope : trades:read

Chargement de la définition live de l’endpoint…

Paramètres de requête

ParamètreDescription
accountNumberFiltrer par numéro de compte
instrumentFiltrer par instrument
sideFiltrer par sens
fromBorne inférieure inclusive sur entryDate (ISO 8601)
toBorne supérieure inclusive sur entryDate (ISO 8601)
cursorCurseur de pagination opaque
limitTaille de page (défaut 100, max 500)

Exemple

curl "https://www.deltalytix.app/api/v1/trades?accountNumber=SIM-001&limit=50" \
  -H "Authorization: Bearer dltx_at_…"
const params = new URLSearchParams({
  accountNumber: "SIM-001",
  from: "2026-01-01T00:00:00.000Z",
  limit: "50",
});
 
const res = await fetch(`https://www.deltalytix.app/api/v1/trades?${params}`, {
  headers: { Authorization: `Bearer ${accessToken}` },
});
const page = await res.json();

Réponse 200

Succès

{
  "data": [
    {
      "id": "trade_01HZX…",
      "accountNumber": "SIM-001",
      "instrument": "ES",
      "side": "long",
      "quantity": 2,
      "entryPrice": 5120.25,
      "closePrice": 5128.5,
      "entryDate": "2026-03-15T14:30:00.000Z",
      "closeDate": "2026-03-15T15:10:00.000Z",
      "pnl": 825,
      "commission": 8.64,
      "timeInPosition": 2400,
      "tags": ["breakout"],
      "comment": "Morning continuation",
      "createdAt": "2026-03-15T15:12:01.000Z"
    }
  ],
  "nextCursor": null
}

Créer des trades

POST /api/v1/trades

Scope : trades:write

Chargement de la définition live de l’endpoint…

Crée un ou plusieurs trades via le même pipeline de déduplication que le tableau de bord (UUID v5 + createMany avec skipDuplicates). Les doublons sont comptés, pas traités comme des erreurs dures.

Corps de requête

{
  "trades": [
    {
      "accountNumber": "SIM-001",
      "instrument": "ES",
      "quantity": 2,
      "entryPrice": 5120.25,
      "closePrice": 5128.5,
      "entryDate": "2026-03-15T14:30:00.000Z",
      "closeDate": "2026-03-15T15:10:00.000Z",
      "pnl": 825,
      "side": "long",
      "commission": 8.64,
      "entryId": "optional-broker-entry-id",
      "closeId": "optional-broker-close-id",
      "timeInPosition": 2400,
      "tags": ["breakout"],
      "comment": "Morning continuation"
    }
  ]
}
ChampRequisNotes
accountNumberOuiCompte cible
instrumentOuiSymbole / contrat
quantityOuiTaille
entryPriceOuiPrix d’entrée
closePriceOuiPrix de sortie
entryDateOuiISO 8601
closeDateOuiISO 8601
pnlOuiP&L réalisé
sideNonex. long / short
commissionNonFrais
entryIdNonIdentifiant d’entrée broker
closeIdNonIdentifiant de sortie broker
timeInPositionNonDurée en secondes
tagsNonTableau de chaînes
commentNonTexte libre

Exemple

curl -X POST https://www.deltalytix.app/api/v1/trades \
  -H "Authorization: Bearer dltx_at_…" \
  -H "Content-Type: application/json" \
  -d '{
    "trades": [
      {
        "accountNumber": "SIM-001",
        "instrument": "ES",
        "quantity": 2,
        "entryPrice": 5120.25,
        "closePrice": 5128.5,
        "entryDate": "2026-03-15T14:30:00.000Z",
        "closeDate": "2026-03-15T15:10:00.000Z",
        "pnl": 825,
        "side": "long",
        "commission": 8.64
      }
    ]
  }'

Réponse 201

Succès

{
  "imported": 1,
  "duplicates": 0,
  "total": 1
}

Si chaque ligne est un doublon, la réponse reste un succès avec des compteurs (par exemple "imported": 0, "duplicates": 3, "total": 3), pas un statut d’erreur.

Comptes

Lister les comptes de trading, les payouts et les métriques de performance optionnelles.

Lisez les comptes de l’utilisateur authentifié et les informations de payout associées.

Lister les comptes

GET /api/v1/accounts

Scope : accounts:read

Chargement de la définition live de l’endpoint…

Paramètres de requête

ParamètreDescription
includeMetricsLorsque true, attache les métriques par compte issues de computeMetricsForAccounts

Exemple

curl "https://www.deltalytix.app/api/v1/accounts?includeMetrics=true" \
  -H "Authorization: Bearer dltx_at_…"
const res = await fetch(
  "https://www.deltalytix.app/api/v1/accounts?includeMetrics=true",
  {
    headers: { Authorization: `Bearer ${accessToken}` },
  },
);
const payload = await res.json();

Réponse 200

Succès

{
  "data": [
    {
      "id": "acc_01HZX…",
      "number": "SIM-001",
      "propfirm": "Topstep",
      "startingBalance": 50000,
      "createdAt": "2026-01-15T09:00:00.000Z",
      "hidden": false,
      "group": { "id": "grp_01HZX…", "name": "Evaluations" },
      "balance": 52480.12,
      "payouts": [
        {
          "id": "pay_01HZX…",
          "amount": 2500,
          "date": "2026-02-01T00:00:00.000Z",
          "status": "PAID"
        }
      ],
      "metrics": { "…": "…" }
    }
  ]
}

Comptes masqués

Tous les comptes sont renvoyés, y compris ceux masqués dans le tableau de bord. Masquer un compte le place dans le groupe Hidden Accounts : hidden vaut alors true et group.name vaut "Hidden Accounts". Ignorez les comptes où hidden vaut true pour retrouver ce qu’affiche le tableau de bord. group vaut null pour un compte qui n’appartient à aucun groupe.

metrics n’est présent que lorsque includeMetrics=true. Les champs incluent balance, drawdown, consistency et progress vers les objectifs du compte.

Pour des analyses au niveau portefeuille sur tous les comptes, préférez les endpoints Métriques.

Connexions

Lister les connexions broker, créer une connexion synchronisable côté serveur et déclencher une sync.

Les connexions broker synchronisent les trades dans Deltalytix. Les jetons bruts du broker ne sont jamais renvoyés par l’API.

Services synchronisables côté serveur en v1 :

serviceCréationSyncNotes
ibkrtoken, queryIdouiIBKR Flex Web Service
dxfeedlogin, password, propFirmIdouiProp firms Volumetrica / DxFeed
rithmic-protocolusername, password, systemName, historyStartDate, optionnel gatewayIdouiPasserelle Rithmic Protocol
tradovateOAuth dashboard uniquementouiConnecter dans le dashboard Deltalytix, puis lister et synchroniser via l’API

Les services classiques rithmic, thor et etp peuvent apparaître dans GET, mais ne sont ni créables ni synchronisables via cette API.

Lister les connexions

GET /api/v1/connections

Scope : connections:read

Chargement de la définition live de l’endpoint…

Exemple

curl https://www.deltalytix.app/api/v1/connections \
  -H "Authorization: Bearer dltx_at_…"

Réponse 200

Succès

{
  "data": [
    {
      "id": "conn_01HZX…",
      "service": "ibkr",
      "externalId": "flex-query-123",
      "lastSyncedAt": "2026-03-15T16:00:00.000Z",
      "environment": "live",
      "accountNumbers": ["U1234567"]
    }
  ],
  "nextCursor": null
}
ChampDescription
idIdentifiant de connexion
serviceClé du fournisseur (ibkr, tradovate, dxfeed, rithmic-protocol, …)
externalIdIdentifiant côté fournisseur (jamais un secret)
lastSyncedAtHorodatage de la dernière sync réussie, ou null
environmentex. live / demo le cas échéant
accountNumbersNuméros de comptes Deltalytix liés

Créer une connexion

POST /api/v1/connections

Scope : connections:write

Chargement de la définition live de l’endpoint…

Le corps est discriminant sur service. En cas de succès, l’API stocke les identifiants (chiffrés), lie les comptes si disponibles, tente une sync initiale, et renvoie la connexion sans secrets.

IBKR Flex

{
  "service": "ibkr",
  "token": "<flex token>",
  "queryId": "<flex query id>"
}
curl -X POST https://www.deltalytix.app/api/v1/connections \
  -H "Authorization: Bearer dltx_at_…" \
  -H "Content-Type: application/json" \
  -d '{
    "service": "ibkr",
    "token": "YOUR_FLEX_TOKEN",
    "queryId": "YOUR_FLEX_QUERY_ID"
  }'

DxFeed

{
  "service": "dxfeed",
  "login": "trader@example.com",
  "password": "…",
  "propFirmId": "miltraders"
}

propFirmId doit être un id de firme activé (par ex. miltraders, myfundedfutures, phoenixtraderfunding).

Rithmic Protocol

{
  "service": "rithmic-protocol",
  "username": "your-username",
  "password": "…",
  "systemName": "Rithmic Paper Trading",
  "historyStartDate": "2026-01-01",
  "gatewayId": "core"
}

historyStartDate est au format YYYY-MM-DD. gatewayId est optionnel (ex. core, nyc, test).

Réponse 201

Succès

{
  "id": "conn_01HZX…",
  "service": "ibkr",
  "externalId": "flex-query-123",
  "accountNumbers": ["U1234567"],
  "imported": 42,
  "duplicates": 3
}

Si la connexion est enregistrée mais que la sync initiale échoue, la réponse reste 201 avec imported: 0 et un message warning.

Service non supporté → 422

Erreur

{
  "error": "unsupported_service",
  "message": "Only credential-based connection services can be created in v1",
  "details": {
    "supported": ["ibkr", "dxfeed", "rithmic-protocol"]
  }
}

Déclencher une synchronisation

POST /api/v1/connections/{id}/sync

Scope : connections:write

Chargement de la définition live de l’endpoint…

Disponible pour ibkr, dxfeed, rithmic-protocol, et les connexions tradovate déjà liées dans le dashboard.

Exemple

curl -X POST https://www.deltalytix.app/api/v1/connections/conn_01HZX…/sync \
  -H "Authorization: Bearer dltx_at_…"

Réponse 200

Succès

{
  "status": "completed",
  "imported": 42,
  "duplicates": 3
}

Imports

Envoyer des fichiers de trades CSV ou XLSX avec mapping IA ou parseurs spécifiques à une plateforme.

Importez des trades depuis des fichiers sans passer par l’interface du tableau de bord.

Envoyer un fichier

POST /api/v1/imports

Scope : imports:write

Content-Type : multipart/form-data

Chargement de la définition live de l’endpoint…

Champs du formulaire

ChampRequisDescription
fileOuiFichier .csv ou .xlsx
typeOui"ai" ou un nom de plateforme
accountNumberOuiNuméro de compte de destination

Import IA (type=ai)

Le serveur parse le fichier (Papa Parse pour CSV, read-excel-file pour XLSX), exécute le même pipeline de mapping et de formatage IA que le tableau de bord, puis enregistre les trades via le cœur partagé de sauvegarde.

curl -X POST https://www.deltalytix.app/api/v1/imports \
  -H "Authorization: Bearer dltx_at_…" \
  -F "file=@./trades.csv" \
  -F "type=ai" \
  -F "accountNumber=SIM-001"
const form = new FormData();
form.append("file", fileInput.files[0]);
form.append("type", "ai");
form.append("accountNumber", "SIM-001");
 
const res = await fetch("https://www.deltalytix.app/api/v1/imports", {
  method: "POST",
  headers: { Authorization: `Bearer ${accessToken}` },
  body: form,
});
const result = await res.json();

Import plateforme (type=<platform>)

Lorsque type est une clé de plateforme, le serveur utilise un parseur enregistré extrait du flux d’import du tableau de bord. Les plateformes supportées dépendent des parseurs disponibles en fonctions pures (candidats : tradezella, tradovate, quantower, topstep, ftmo, atas, et d’autres).

curl -X POST https://www.deltalytix.app/api/v1/imports \
  -H "Authorization: Bearer dltx_at_…" \
  -F "file=@./export.xlsx" \
  -F "type=tradovate" \
  -F "accountNumber=SIM-001"

Réponse de succès

Succès

{
  "imported": 128,
  "duplicates": 4,
  "total": 132,
  "accountNumber": "SIM-001"
}

Plateforme non supportée → 422

Erreur

{
  "error": "unsupported_service",
  "message": "Unknown import type",
  "details": {
    "supported": ["ai", "tradovate", "tradezella", "quantower"]
  }
}

La liste exacte details.supported reflète le registre de parseurs en production.

Métriques

Statistiques de synthèse, courbes d’équité et métriques de performance par compte.

Calculez des analyses de performance à partir des trades de l’utilisateur authentifié.

Tous les endpoints de métriques exigent le scope metrics:read.

Synthèse

GET /api/v1/metrics/summary
Chargement de la définition live de l’endpoint…

Utilise les mêmes filtres que GET /api/v1/trades. Les statistiques proviennent de calculateStatistics et de la formule de profit factor du tableau de bord (gains et pertes bruts nets de commission).

Paramètres de requête

ParamètreDescription
accountNumberFiltrer par compte
instrumentFiltrer par instrument
sideFiltrer par sens
from / toBornes sur entryDate
cursor / limitAcceptés pour cohérence avec les filtres trades le cas échéant

Exemple

curl "https://www.deltalytix.app/api/v1/metrics/summary?from=2026-01-01T00:00:00.000Z" \
  -H "Authorization: Bearer dltx_at_…"

Réponse 200

Succès

{
  "totalPnl": 12450.5,
  "totalCommission": 312.4,
  "tradeCount": 186,
  "winCount": 102,
  "lossCount": 78,
  "breakevenCount": 6,
  "winRate": 0.5484,
  "profitFactor": 1.62,
  "averageWin": 215.3,
  "averageLoss": -142.1,
  "longCount": 110,
  "shortCount": 76,
  "tradingDays": 48
}

Courbe d’équité

GET /api/v1/metrics/equity
Chargement de la définition live de l’endpoint…

Construit des points d’équité journaliers via computeEquityChartData.

Paramètres de requête

ParamètreDescription
fromDate de début (ISO 8601)
toDate de fin (ISO 8601)
accountNumbersNuméros de compte séparés par des virgules ; lorsqu’ils sont fournis, renvoie aussi des séries par compte

Exemple

curl "https://www.deltalytix.app/api/v1/metrics/equity?accountNumbers=SIM-001,SIM-002&from=2026-01-01T00:00:00.000Z" \
  -H "Authorization: Bearer dltx_at_…"
const params = new URLSearchParams({
  accountNumbers: "SIM-001,SIM-002",
  from: "2026-01-01T00:00:00.000Z",
});
 
const res = await fetch(
  `https://www.deltalytix.app/api/v1/metrics/equity?${params}`,
  { headers: { Authorization: `Bearer ${accessToken}` } },
);
const equity = await res.json();

Réponse 200

Succès

{
  "points": [
    {
      "date": "2026-01-02",
      "equity": 50120.5
    },
    {
      "date": "2026-01-03",
      "equity": 50385.25
    }
  ],
  "accounts": {
    "SIM-001": [
      { "date": "2026-01-02", "equity": 25050.0 },
      { "date": "2026-01-03", "equity": 25210.75 }
    ],
    "SIM-002": [
      { "date": "2026-01-02", "equity": 25070.5 },
      { "date": "2026-01-03", "equity": 25174.5 }
    ]
  }
}

L’objet accounts est inclus lorsque accountNumbers est demandé.

Métriques par compte

GET /api/v1/metrics/accounts
Chargement de la définition live de l’endpoint…

Exécute computeMetricsForAccounts pour tous les comptes de l’utilisateur.

Exemple

curl https://www.deltalytix.app/api/v1/metrics/accounts \
  -H "Authorization: Bearer dltx_at_…"

Réponse 200

Succès

{
  "data": [
    {
      "accountNumber": "SIM-001",
      "balance": 52480.12,
      "drawdown": 3.4,
      "consistency": 0.82,
      "progress": 0.61
    }
  ]
}

Erreurs

Enveloppe d’erreur REST, codes de statut HTTP et réponses d’erreur OAuth.

Enveloppe d’erreur REST

Les erreurs de l’API v1 utilisent un corps JSON cohérent :

Erreur

{
  "error": "machine_code",
  "message": "Explication lisible",
  "details": {}
}
ChampDescription
errorCode machine stable
messageExplication lisible
detailsContexte structuré optionnel (validation, valeurs supportées, …)

Codes de statut HTTP

StatutCause typique
400Erreur de validation (query/body mal formé)
401Bearer manquant, expiré, révoqué ou invalide
403Authentifié mais scope requis manquant
404Ressource introuvable
422Requête sémantiquement invalide (service/type non supporté)
500Erreur serveur inattendue

Non autorisé (401)

Erreur

{
  "error": "unauthorized",
  "message": "Missing or invalid access token"
}

Les réponses incluent :

WWW-Authenticate: Bearer resource_metadata="https://www.deltalytix.app/.well-known/oauth-protected-resource"

Scope insuffisant (403)

Erreur

{
  "error": "insufficient_scope",
  "message": "Token is missing required scope trades:write"
}

Service non supporté (422)

Erreur

{
  "error": "unsupported_service",
  "message": "Only credential-based connection services can be created in v1",
  "details": {
    "supported": ["ibkr", "dxfeed", "rithmic-protocol"]
  }
}

Erreurs OAuth

Les échecs du token endpoint utilisent la forme RFC 6749 (pas l’enveloppe REST) :

Erreur

{
  "error": "invalid_grant",
  "error_description": "Authorization code is invalid or expired"
}

Les valeurs OAuth error courantes incluent invalid_request, invalid_client, invalid_grant, unauthorized_client, unsupported_grant_type et invalid_scope.

Les refus sur l’authorization endpoint redirigent vers le redirect_uri enregistré avec error=access_denied (et le state d’origine s’il a été fourni).

Compteurs hors erreur

Certains endpoints d’écriture signalent des doublons ou des imports nuls avec un succès HTTP et des compteurs, plutôt qu’un corps d’erreur. Par exemple, POST /api/v1/trades renvoie 201 avec "imported": 0 lorsque chaque ligne existe déjà.

Conseils de gestion

  1. Branchez d’abord sur le statut HTTP, puis sur error.
  2. Affichez message aux développeurs ; utilisez error pour la logique programmatique.
  3. Traitez details.supported comme la liste autorisée faisant autorité lorsqu’elle est présente.
  4. Sur 401, rafraîchissez l’access token OAuth ou demandez un nouveau PAT ; ne réessayez pas indéfiniment.

Référence OpenAPI

OpenAPI JSON

Chemins, méthodes, paramètres et codes de réponse issus du document OpenAPI live.

Télécharger openapi.json

Chargement du document OpenAPI…

Pied de page

Deltalytix

Un journal de trading pour tous vos comptes futures.

GitHubYouTubeDiscord

Produit

  • Fonctionnalités
  • Tarification
  • Catalogue des Prop Firms
  • Équipes
  • Support
  • Documentation
  • Documentation API

Équipe

  • À propos

Comparaison des journaux

  • Tous les journaux
  • vs Trademetria
  • vs TradeZella
  • vs Tradervue

Mentions légales

  • Politique de confidentialité
  • Paramètres
  • Conditions d'utilisation
  • Avertissements
© 2026 Deltalytix. Tous droits réservés.
Les opérations sur les marchés à terme et les marchés des changes comportent des risques importants et ne conviennent pas à tous les investisseurs. Un investisseur peut potentiellement perdre la totalité ou une partie de son investissement initial. Le capital-risque est l'argent que l'on peut perdre sans mettre en péril sa sécurité financière ou son style de vie. Seul le capital-risque doit être utilisé pour la négociation et seules les personnes disposant d'un capital-risque suffisant doivent envisager de négocier. Les performances passées ne sont pas nécessairement indicatives des résultats futurs.
Les résultats des performances hypothétiques ont de nombreuses limitations inhérentes, dont certaines sont décrites ci-dessous. Aucune déclaration n'est faite selon laquelle un compte réalisera ou est susceptible de réaliser des profits ou des pertes similaires à ceux indiqués ; en fait, il existe souvent des différences marquées entre les résultats de performance hypothétiques et les résultats réels obtenus par la suite par un programme de trading particulier. L'une des limites des résultats de performance hypothétiques est qu'ils sont généralement préparés avec le bénéfice du recul. De plus, la négociation hypothétique n'implique pas de risque financier, et aucun résultat de négociation hypothétique ne peut complètement rendre compte de l'impact du risque financier de la négociation réelle. Par exemple, la capacité à supporter les pertes ou à adhérer à un programme de négociation particulier malgré les pertes de négociation sont des points importants qui peuvent également affecter négativement les résultats de négociation réels. Il existe de nombreux autres facteurs liés aux marchés en général ou à la mise en œuvre d'un programme de trading spécifique qui ne peuvent pas être entièrement pris en compte dans la préparation de résultats de performance hypothétiques et qui peuvent tous avoir un impact négatif sur les résultats de trading.