Ekinox
Triggers

Déclencheur d'API

Démarrez un flux de travail à partir d'une requête HTTP authentifiée

Aperçu

Le déclencheur d'API expose votre flux de travail en tant que point de terminaison HTTP sécurisé. Envoyez des données JSON au point de terminaison et votre flux de travail les traite immédiatement. Les appels API s'exécutent toujours sur votre dernier déploiement.

Configurer le format d'entrée

Format d'entrée du déclencheur d'API

Ajoutez un champ Format d'entrée pour chaque paramètre. Les clés de sortie d'exécution reflètent le schéma et sont également disponibles sous <api.input>.

Les exécutions manuelles dans l'éditeur utilisent la colonne value pour que vous puissiez tester sans envoyer de requête. Pendant l'exécution, le résolveur remplit à la fois <api.userId> et <api.input.userId>.

Exemple de requête

curl -X POST \
  https://www.ekinox.app/api/workflows/WORKFLOW_ID/execute \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_KEY' \
  -d '{"userId":"demo-user","maxTokens":1024}'

Les réponses réussies renvoient le résultat d'exécution sérialisé de l'exécuteur. Les erreurs révèlent des problèmes de validation, d'authentification ou d'échec du workflow.

Réponses en streaming

Activez le streaming en temps réel pour recevoir les résultats du workflow au fur et à mesure qu'ils sont générés, caractère par caractère. Cela est utile pour afficher progressivement les réponses de l'IA aux utilisateurs.

Paramètres de requête

Ajoutez ces paramètres pour activer le streaming :

  • stream - Définissez à true pour activer le streaming Server-Sent Events (SSE)
  • selectedOutputs - Tableau des sorties de blocs à diffuser en streaming (par exemple, ["agent1.content"])

Format de sortie de bloc

Utilisez le format blockName.attribute pour spécifier quelles sorties de blocs diffuser en streaming :

  • Format : "blockName.attribute" (par exemple, si vous souhaitez diffuser en streaming le contenu du bloc Agent 1, vous utiliseriez "agent1.content")
  • Les noms de blocs ne sont pas sensibles à la casse et les espaces sont ignorés

Exemple de requête

curl -X POST \
  https://www.ekinox.app/api/workflows/WORKFLOW_ID/execute \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_KEY' \
  -d '{
    "message": "Count to five",
    "stream": true,
    "selectedOutputs": ["agent1.content"]
  }'

Format de réponse

Les réponses en streaming utilisent le format Server-Sent Events (SSE) :

data: {"blockId":"7b7735b9-19e5-4bd6-818b-46aae2596e9f","chunk":"One"}

data: {"blockId":"7b7735b9-19e5-4bd6-818b-46aae2596e9f","chunk":", two"}

data: {"blockId":"7b7735b9-19e5-4bd6-818b-46aae2596e9f","chunk":", three"}

data: {"event":"done","success":true,"output":{},"metadata":{"duration":610}}

data: [DONE]

Chaque événement comprend :

  • Fragments en streaming : {"blockId": "...", "chunk": "text"} - Texte en temps réel au fur et à mesure qu'il est généré
  • Événement final : {"event": "done", ...} - Métadonnées d'exécution et résultats complets
  • Terminateur : [DONE] - Signale la fin du flux

Streaming de plusieurs blocs

Lorsque selectedOutputs inclut plusieurs blocs, chaque fragment indique quel bloc l'a produit :

curl -X POST \
  https://www.ekinox.app/api/workflows/WORKFLOW_ID/execute \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_KEY' \
  -d '{
    "message": "Process this request",
    "stream": true,
    "selectedOutputs": ["agent1.content", "agent2.content"]
  }'

Le champ blockId dans chaque fragment vous permet d'acheminer la sortie vers l'élément d'interface utilisateur approprié :

data: {"blockId":"agent1-uuid","chunk":"Processing..."}

data: {"blockId":"agent2-uuid","chunk":"Analyzing..."}

data: {"blockId":"agent1-uuid","chunk":" complete"}

Référence des sorties

RéférenceDescription
<api.field>Champ défini dans le format d'entrée
<api.input>Corps de requête structuré complet

Si aucun format d'entrée n'est défini, l'exécuteur expose uniquement le JSON brut à <api.input>.

Un workflow ne peut contenir qu'un seul déclencheur API. Publiez un nouveau déploiement après les modifications pour que le point de terminaison reste à jour.

Format de téléchargement de fichiers

L'API accepte les fichiers dans deux formats :

1. Fichiers encodés en Base64 (recommandé pour les SDK) :

{
  "documents": [{
    "type": "file",
    "data": "data:application/pdf;base64,JVBERi0xLjQK...",
    "name": "document.pdf",
    "mime": "application/pdf"
  }]
}
  • Taille maximale de fichier : 20 Mo par fichier
  • Les fichiers sont téléchargés vers le stockage cloud et convertis en objets UserFile avec toutes les propriétés

2. Références URL directes :

{
  "documents": [{
    "type": "url",
    "data": "https://example.com/document.pdf",
    "name": "document.pdf",
    "mime": "application/pdf"
  }]
}
  • Le fichier n'est pas téléchargé, l'URL est transmise directement
  • Utile pour référencer des fichiers existants

Propriétés des fichiers

Pour les fichiers, accédez à toutes les propriétés :

PropriétéDescriptionType
<api.fieldName[0].url>URL de téléchargement signéechaîne
<api.fieldName[0].name>Nom de fichier originalchaîne
<api.fieldName[0].size>Taille du fichier en octetsnombre
<api.fieldName[0].type>Type MIMEchaîne
<api.fieldName[0].uploadedAt>Horodatage du téléchargement (ISO 8601)chaîne
<api.fieldName[0].expiresAt>Horodatage d'expiration de l'URL (ISO 8601)chaîne

Pour les fichiers référencés par URL, les mêmes propriétés sont disponibles à l'exception de uploadedAt et expiresAt puisque le fichier n'est pas téléchargé vers notre stockage.

Si aucun format d'entrée n'est défini, l'exécuteur expose uniquement le JSON brut à <api.input>.

Un flux de travail ne peut contenir qu'un seul déclencheur API. Publiez un nouveau déploiement après les modifications pour que le point de terminaison reste à jour.

Déclencheur d'API