Reference de l'API REST
Reference complete de l'API Parsyn accessible a https://parsyn.progatis.com/api/v1. Tous les endpoints necessitent une authentification sauf mention contraire.
La plupart des utilisateurs interagissent avec Parsyn via le dashboard. Cette reference d'API s'adresse aux developpeurs qui souhaitent creer des integrations, automatiser des workflows ou ecrire des scripts pour interagir avec la plateforme.
Authentification
L'API utilise des bearer tokens JWT :
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...Les tokens sont aussi definis comme cookies httpOnly lors de la connexion, ce qui permet au dashboard de s'authentifier automatiquement.
Cycle de vie des tokens
| Type de token | Duree de vie | Utilisation |
|---|---|---|
| Access token | 30 minutes | Authentification API |
| Refresh token | 7 jours | Obtenir de nouveaux access tokens sans se reconnecter |
| Partial token | 5 minutes | Etat intermediaire pendant la verification 2FA |
| WebSocket token | 60 secondes | Token a usage unique pour le handshake WebSocket du dashboard |
Auth
Inscription
/auth/register{
"email": "[email protected]",
"password": "securePassword123",
"username": "johndoe"
}
// Response 201
{
"id": 1,
"email": "[email protected]",
"username": "johndoe",
"created_at": "2026-03-10T14:30:00Z"
}Connexion
/auth/login{
"email": "[email protected]",
"password": "securePassword123"
}
// Response 200
{
"access_token": "eyJhbGci...",
"refresh_token": "eyJhbGci...",
"token_type": "bearer",
"user": {
"id": 1,
"email": "[email protected]",
"username": "johndoe"
}
}Refresh token
/auth/refreshUtilisateur courant
/auth/meMise a jour du profil
/auth/me/localeSessions
/auth/sessions/auth/sessions/{session_id}/auth/sessions/revoke-othersLister les sessions actives, revoquer une session specifique, ou revoquer toutes les sessions sauf la session en cours.
Authentification a deux facteurs
/2fa/totp/setup/2fa/totp/verify-setup/2fa/backup-codes/regenerateDatasets
Lister les datasets
/datasets?page=1&per_page=20&search=customerCreer un dataset
/datasetsConsulter / Modifier / Supprimer un dataset
/datasets/{id}/datasets/{id}/datasets/{id}Flux d'upload
/datasets/upload/initiate/datasets/upload/confirm/datasets/upload/confirmOperations
/datasets/{id}/validate/datasets/{id}/preprocess/sample/datasets/{id}/statistics/datasets/{id}/statistics/datasets/{id}/preprocess/convert/datasets/{id}/preprocess/split/datasets/{id}/preprocess/deduplicate/datasets/{id}/preprocess/normalizeModeles
/models?page=1&per_page=20&status=ready/models// From HuggingFace
{ "name": "llama-3.1-8b", "huggingface_id": "meta-llama/Llama-3.1-8B" }
// Custom upload
{ "name": "my-custom-model", "description": "Proprietary architecture" }/models/{id}/models/{id}/models/{id}Training Jobs
Lister les workers disponibles
/training-jobs/available-workersRenvoie les workers (vos propres workers et les Parsyn Workers) disponibles pour l'assignation de jobs.
Lister / Creer / Consulter
/training-jobs?page=1&per_page=20&status=running/training-jobs{
"name": "llama-customer-support-v1",
"dataset_id": 42,
"model_id": 7,
"config": {
"epochs": 3,
"batch_size": 4,
"learning_rate": 2e-4,
"max_length": 1024,
"mixed_precision": "bf16",
"use_peft": true,
"lora_r": 16
},
"worker_selection": {
"mode": "auto"
}
}/training-jobs/{id}Demarrer / Annuler / Supprimer
/training-jobs/{id}/start/training-jobs/{id}Metriques
/training-jobs/{id}/metrics/training-jobs/{id}/metricsWorkers (vos GPUs)
/workers?page=1&per_page=20 Les workers sont crees automatiquement via le flux d'enrolement (WebSocket /ws/worker avec une cle enroll_...). Il n'y a pas d'endpoint de creation manuelle.
/workers/{id}/workers/{id}/workers/{id}/workers/connectedCles d'enrolement principales
/master-keys{
"name": "production-fleet",
"auto_name_prefix": "prod-worker",
"default_worker_type": "both",
"max_enrollments": 50,
"expires_at": "2027-01-01T00:00:00Z"
}/master-keys/master-keys/{id}Chat / Inference
Discuter avec un modele
/chat/models/{model_id}/chat{
"message": "Explain gradient descent in simple terms.",
"temperature": 0.7,
"max_tokens": 500,
"top_p": 0.9,
"top_k": 50,
"repetition_penalty": 1.1,
"conversation_id": null
} Renvoie un flux SSE avec Accept: text/event-stream, ou du JSON dans le cas contraire. Necessite un worker utilisateur en ligne avec la capacite prompter ou both.
Comparer des modeles
/chat/models/{model_id}/compare{
"message": "What is overfitting?",
"compare_model_id": 8,
"temperature": 0.7
}Credits
Consulter le solde
/credits/balance// Response
{ "balance": 5000 }Acheter des credits
/subscriptions/checkoutInitie une session de paiement Stripe pour le pack de credits selectionne.
Estimer le cout d'un job
/credits/estimate-job{
"gpu_type": "a100_80gb",
"estimated_hours": 2
}
// Response
{ "estimated_credits": 400, "credits_per_hour": 200 }Historique des transactions
/credits/transactions?page=1&type=deductionPacks de credits
/credits/packsEvaluations
/evaluation-suites/evaluation-suites/evaluations/models/{model_id}/evaluation-suites/runs/{run_id}/cancelSuites d'evaluation
/evaluation-suites/evaluation-suites/evaluation-suites/{id}/evaluation-suites/{id}/evaluation-suites/{id}/evaluation-suites/{id}/run/evaluation-suites/{id}/runs/evaluation-suites/runs/{run_id}Pipelines
Les pipelines automatisent des workflows multi-etapes : entrainer, evaluer, exporter. Chaque etape depend de la precedente.
/pipelines/pipelines/pipelines/{id}/pipelines/{id}/pipelines/{id}/start/pipelines/{id}/cancelDonnees synthetiques
Generez, augmentez, paraphrasez ou filtrez des datasets en utilisant un LLM comme backend de generation.
/synthetic-data/synthetic-data{
"name": "augment-customer-support",
"job_type": "augment",
"source_dataset_id": 42,
"target_count": 5000,
"llm_provider": "openai",
"llm_model": "gpt-4o"
}Types de job disponibles : generate, augment, paraphrase, filter.
/synthetic-data/{id}/synthetic-data/{id}/cancelExport de modeles
Exportez un modele fine-tune vers un format optimise pour l'inference.
/models/{model_id}/exports{
"export_type": "gguf",
"quantization": "q4_k_m"
}Formats supportes : gguf (llama.cpp), onnx, gptq, awq.
/models/{model_id}/exports/models/{model_id}/exports/{export_id}/models/{model_id}/exports/{export_id}/download/models/{model_id}/exports/model-cardOrganisations
Les organisations regroupent des utilisateurs en equipes et partagent les ressources (datasets, modeles, jobs) au niveau projet.
/organizations/organizations/organizations/{id}/organizations/{id}/organizations/{id}Equipes
/organizations/{id}/teams/organizations/{id}/teamsMembres d'une equipe
/organizations/{id}/teams/{team_id}/members/organizations/{id}/teams/{team_id}/members/organizations/{id}/teams/{team_id}/members/{user_id}/organizations/{id}/teams/{team_id}/members/{user_id}Projets
/organizations/{id}/teams/{team_id}/projects/organizations/{id}/teams/{team_id}/projectsAbonnements
Les plans d'abonnement definissent des quotas (jobs simultanes, stockage, etc.) en complement de la facturation au credit.
/subscriptions/me/subscriptions/checkoutInitie une session de paiement Stripe pour souscrire ou changer de plan.
/subscriptions/portalOuvre le portail Stripe pour gerer l'abonnement en cours (annulation, mise a jour du moyen de paiement).
/plansListe les plans disponibles avec leurs quotas et tarifs.
Presets d'entrainement
Configurations d'entrainement preconfigrees (templates) que vous pouvez appliquer directement lors de la creation d'un training job.
/training-presets/training-presets/{id}Arena
/arena/matches/arena/matches/arena/matches/{id}/vote/arena/leaderboardPagination
Tous les endpoints de liste renvoient des resultats pagines :
{
"items": [...],
"total": 150,
"page": 1,
"per_page": 20
}Taille de page par defaut : 20, maximum : 100.
Reponses d'erreur
{ "detail": "Dataset not found", "status_code": 404 }| Code | Signification |
|---|---|
| 400 | Request invalide (erreur de validation, champ manquant) |
| 401 | Non authentifie (token manquant ou expire) |
| 403 | Acces interdit (permissions ou credits insuffisants) |
| 404 | Ressource introuvable (ou appartient a un autre utilisateur) |
| 409 | Conflit (ressource en doublon, transition d'etat invalide) |
| 422 | Erreur de validation (schema non conforme) |
| 429 | Limite de requetes depassee (endpoints auth : 10 req/min) |
| 500 | Erreur interne du serveur |