Retour à l'accueil

Documentation API

Intégrez ZyloPro dans vos applications

v1.0Base URL: https://api.zylopro.com

Démarrage rapide

1. Obtenir vos identifiants

Inscrivez-vous sur ZyloPro pour créer votre compte et organisation. Vous pourrez ensuite vous connecter via l'API pour obtenir un token d'accès.

2. Authentification

L'API utilise des tokens JWT (Bearer). Incluez le token dans le header Authorization de vos requêtes :

Authorization: Bearer <votre-token>

3. Faire votre première requête

Une fois authentifié, vous pouvez lister les agents disponibles, exécuter des analyses et récupérer les résultats.

Authentification

Les endpoints d'authentification permettent de gérer les comptes utilisateurs, les tokens d'accès et les mots de passe.

POST/api/auth/register
Public

Inscription d'une nouvelle organisation avec son propriétaire

Corps de la requête

{
  "email": "string",
  "password": "string",
  "firstName": "string",
  "lastName": "string",
  "organizationName": "string"
}

Réponse

{ success: boolean, token?: string, refreshToken?: string, user?: UserDto }
POST/api/auth/login
Public

Connexion d'un utilisateur

Corps de la requête

{
  "email": "string",
  "password": "string"
}

Réponse

{ success: boolean, token?: string, refreshToken?: string, user?: UserDto }
POST/api/auth/refresh
Public

Rafraîchir le token d'accès avec un refresh token

Corps de la requête

{
  "refreshToken": "string"
}

Réponse

{ success: boolean, token?: string, refreshToken?: string }
POST/api/auth/revoke
Auth

Révoquer un refresh token (déconnexion)

Corps de la requête

{
  "refreshToken": "string"
}

Réponse

{ message: string }
GET/api/auth/verify-email
Public

Vérifier l'adresse email avec le token reçu par mail

Query Params

{
  "token": "string"
}

Réponse

{ message: string }
POST/api/auth/forgot-password
Public

Demander une réinitialisation de mot de passe

Corps de la requête

{
  "email": "string"
}

Réponse

{ message: string }
POST/api/auth/reset-password
Public

Réinitialiser le mot de passe avec le token reçu par mail

Corps de la requête

{
  "token": "string",
  "newPassword": "string"
}

Réponse

{ message: string }
POST/api/auth/change-password
Auth

Changer le mot de passe (utilisateur connecté)

Corps de la requête

{
  "currentPassword": "string",
  "newPassword": "string"
}

Réponse

{ message: string }

Modules IA

Les endpoints des agents permettent de lister, s'abonner et exécuter les 10 modules IA de la plateforme.

GET/api/agents
Auth

Obtenir tous les agents disponibles sur la plateforme

Réponse

AgentDto[]
GET/api/agents/organization
Admin

Obtenir les agents souscrits par l'organisation (Admin)

Réponse

AgentDto[]
GET/api/agents/my
Auth

Obtenir les agents accessibles par l'utilisateur connecté

Réponse

AgentDto[]
POST/api/agents/{agentId}/subscribe
Owner

S'abonner à un agent (niveau organisation)

Paramètres URL

{
  "agentId": "int"
}

Réponse

{ message: string }
POST/api/agents/{agentId}/unsubscribe
Owner

Se désabonner d'un agent

Paramètres URL

{
  "agentId": "int"
}

Réponse

{ message: string }
POST/api/agents/{code}/execute
Auth

Exécuter un agent avec des données d'entrée

Paramètres URL

{
  "code": "string (ex: proposalcraft)"
}

Corps de la requête

{
  "inputData": "string",
  "projectId": "guid? (optionnel)",
  "metadata": "Record<string, string>? (optionnel)"
}

Réponse

{ success: boolean, status: string, executionId: guid, outputData?: string, error?: string }
GET/api/agents/executions/{executionId}
Auth

Obtenir le statut d'une exécution

Paramètres URL

{
  "executionId": "guid"
}

Réponse

AgentExecutionDto
POST/api/agents/executions/{executionId}/cancel
Auth

Annuler une exécution en cours

Paramètres URL

{
  "executionId": "guid"
}

Réponse

{ message: string }
GET/api/agents/executions
Auth

Obtenir l'historique des exécutions de l'utilisateur

Query Params

{
  "limit": "int (défaut: 20)"
}

Réponse

AgentExecutionDto[]

Exemples de code

Connexion et récupération du token
// Exemple de connexion
const response = await fetch('https://api.zylopro.com/api/auth/login', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    email: 'user@example.com',
    password: 'votre-mot-de-passe'
  })
});

const data = await response.json();
// Stocker le token pour les requêtes ultérieures
const accessToken = data.token;
Exécution d'un agent
// Exemple d'exécution d'un agent
const response = await fetch('https://api.zylopro.com/api/agents/proposalcraft/execute', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${accessToken}`
  },
  body: JSON.stringify({
    inputData: "Contenu de l'appel d'offres à analyser...",
    metadata: {
      projectName: "Étude satisfaction client 2025",
      clientName: "ACME Corp"
    }
  })
});

const result = await response.json();
console.log('Exécution ID:', result.executionId);
console.log('Statut:', result.status);
Suivi d'une exécution (polling)
// Exemple de polling pour suivre une exécution
async function waitForCompletion(executionId, accessToken) {
  while (true) {
    const response = await fetch(
      `https://api.zylopro.com/api/agents/executions/${executionId}`,
      {
        headers: { 'Authorization': `Bearer ${accessToken}` }
      }
    );

    const execution = await response.json();

    if (execution.status === 'Completed') {
      return execution;
    }

    if (execution.status === 'Failed') {
      throw new Error(execution.errorMessage);
    }

    // Attendre 2 secondes avant le prochain check
    await new Promise(resolve => setTimeout(resolve, 2000));
  }
}

Types de données

AgentDto

{
  id: number
  code: string
  name: string
  shortDescription: string
  longDescription: string
  category: string
  inputType: string
  outputType: string
  monthlyPrice: number
  includedExecutions: number
  extraExecutionPrice: number
  iconName: string
  color: string
  isActive: boolean
  isBeta: boolean
  isSubscribed: boolean
  hasAccess: boolean
}

AgentExecutionDto

{
  id: guid
  agentCode: string
  agentName: string
  status: "Pending" | "Running" |
          "Completed" | "Failed" |
          "Cancelled"
  createdAt: datetime
  startedAt: datetime | null
  completedAt: datetime | null
  durationSeconds: number | null
  inputTokens: number | null
  outputTokens: number | null
  outputFilePath: string | null
  errorMessage: string | null
}

Gestion des erreurs

Code HTTPDescription
200Succès
400Requête invalide (paramètres manquants ou incorrects)
401Non authentifié (token manquant ou expiré)
403Accès interdit (permissions insuffisantes)
404Ressource non trouvée
429Trop de requêtes (rate limiting)
500Erreur serveur interne

Format des erreurs

{
  "message": "Description de l'erreur",
  "errors": {
    "fieldName": ["Détail de l'erreur de validation"]
  }
}

Limites et quotas

Rate Limiting

L'API est limitée à 100 requêtes par minute par utilisateur. Les headers X-RateLimit-* indiquent l'état de votre quota.

Quotas d'exécution

Chaque plan dispose d'un nombre d'exécutions mensuelles par agent. Consultez votre tableau de bord pour suivre votre consommation.

Besoin d'aide ?

Notre équipe technique est disponible pour vous accompagner dans l'intégration de l'API ZyloPro.