Lancez des exécutions, suivez-les et lisez leurs résultats. Tous les endpoints de cette page fonctionnent avec les clés member et admin. Voir exécutions pour le cycle de vie et les limites.
Lancer une exécution
/v1/runsprompt, soit le nom d'un workflow enregistré.promptstringworkflow est défini ; avec un workflow, il remplace le prompt enregistré. 128 Kio au maximum.inputany JSONworkflowstringmodelstringdefault_model de GET /v1/models.filesarray{"file": "<id or name>", "path": "..."} ou {"path": "...", "content": "..."}. Voir fichiers.connectionsobject{"ref": "<saved name>"} avec allowed_methods ou allowed_tools en option, soit une définition en ligne. Voir connexions.descriptionstringinput_schemaobjectinput doit correspondre ; en cas d'écart, la réponse est 400 avec le chemin et la raison, par exemple input.city: required. Avec un workflow, il remplace le schéma enregistré. Voir décrire l'entrée et la sortie.output_schemaobjectfailed. Avec un workflow, il remplace le schéma enregistré. Voir décrire l'entrée et la sortie.timeout_secondsintegershellbooleantrue par défaut.webboolean | objecttrue, ou { "allow": [domains], "search": false } pour le limiter. Désactivé par défaut. Voir accès web.zero_data_retentionbooleanfalse.max_cost_microsintegerdefault_max_cost_micros de GET /v1/me. Sur le service hébergé, il doit couvrir le coût de calcul pour le délai d'expiration complet. Voir budgets.callbackobject{"url": "...", "secret": "..."} pour une requête signée à la fin de l'exécution. Voir callbacks.Idempotency-Keystring200.curl $EPHEMERAL_URL/v1/runs \
-H "Authorization: Bearer $EPHEMERAL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 7d0f3c1e-6a52-4b8e-9f21-0c4d5e6a7b89" \
-d '{
"workflow": "investigate-payment",
"input": { "payment_id": "pay_123" },
"max_cost_micros": 500000
}'La réponse est 202 Accepted avec le nouvel objet d'exécution. Une requête qui échoue à la validation renvoie 400 et ne crée rien. Sur le service hébergé, 402 signifie que vos crédits disponibles ne couvrent pas le budget.
L'objet d'exécution
idstringrun_4abb0f420c6623a12d2889610eb67284.statusstringreserving, queued, starting, running, succeeded, failed, cancelled, timed_out ou interrupted.outputstringerrorstringcreated_attimestampstarted_attimestampfinished_attimestampmax_cost_microsintegercost_microsintegerbilling_pending n'est pas false sur une exécution terminée. Absent lorsqu'il vaut zéro.billing_pendingbooleanschedule_idstringzero_data_retentionbooleantrue pour une exécution à rétention zéro.surcharge_percentintegersurcharge_microsintegercost_micros ajoutée par le supplément de rétention zéro. Omise lorsqu'elle est nulle.output_availablebooleanoutput_expires_attimestamp{
"id": "run_4abb0f420c6623a12d2889610eb67284",
"status": "succeeded",
"output": "The card issuer declined pay_123 for insufficient funds. The processor had no incidents. Ask the customer to retry or use another card.",
"created_at": "2026-10-03T09:14:05.118Z",
"started_at": "2026-10-03T09:14:05.402Z",
"finished_at": "2026-10-03T09:14:41.877Z",
"max_cost_micros": 500000,
"cost_micros": 14390,
"billing_pending": false
}Lister les exécutions
/v1/runslimitintegercursorstringnext_cursor de la page précédente.statusstringschedulestring{
"items": [
{ "id": "run_91c0…", "status": "failed", "error": "Worker failed; inspect run events. External actions may have completed.", "created_at": "2026-10-03T08:51:12.004Z", "max_cost_micros": 500000, "cost_micros": 61200, "billing_pending": false },
{ "id": "run_3fd2…", "status": "failed", "error": "Credit reservation failed", "created_at": "2026-10-02T17:20:44.390Z", "max_cost_micros": 500000, "billing_pending": false }
],
"next_cursor": "eyJvIjoib3JnXzVlMmIi…"
}Sans limit ni cursor, la réponse est un simple tableau des 100 exécutions correspondantes les plus récentes. Voir pagination.
Lire une exécution
/v1/runs/{id}Suivre les événements en direct
/v1/runs/{id}/eventsdone avec l'objet d'exécution et se ferme.Last-Event-IDinteger: connected
id: 88412
event: status
data: {"id":88412,"type":"status","data":{"status":"running"},"created_at":"2026-10-03T09:14:05.431Z"}
id: 88415
event: worker_started
data: {"id":88415,"type":"worker_started","data":{"runtime":"pi","mode":"pi","shell":false},"created_at":"2026-10-03T09:14:07.906Z"}
id: 88419
event: tool_start
data: {"id":88419,"type":"tool_start","data":{"tool":"http_0","id":"call_1","arguments":{"method":"GET","path":"/payments/pay_123"}},"created_at":"2026-10-03T09:14:10.215Z"}
id: 88431
event: result
data: {"id":88431,"type":"result","data":{"output":"The card issuer declined pay_123 for insufficient funds."},"created_at":"2026-10-03T09:14:41.702Z"}
event: done
data: {"id":"run_4abb0f420c6623a12d2889610eb67284","status":"succeeded", …}Le champ data de chaque message est un objet d'événement avec id, type, data et created_at, sauf done, qui contient l'objet d'exécution. Les lignes commençant par deux-points sont des commentaires ; un commentaire de battement de cœur est envoyé toutes les 15 secondes. Les types d'événements sont listés sous types d'événements. Se déconnecter n'annule pas l'exécution.
curl -N $EPHEMERAL_URL/v1/runs/run_4abb0f420c6623a12d2889610eb67284/events \
-H "Authorization: Bearer $EPHEMERAL_API_KEY"Annuler une exécution
/v1/runs/{id}/cancelreserving, queued, starting ou running et renvoie l'objet d'exécution. Une exécution déjà terminée est renvoyée telle quelle.Lire la définition d'une exécution
/v1/runs/{id}/definition{
"request": {
"prompt": "Find out why this payment failed. Follow the playbook.",
"model": "anthropic/claude-haiku-5.5",
"files": [{ "file": "file_9c41d2a07be35f1e8a6c0d4b9e2f7a13", "path": "playbook.md" }],
"connections": {
"payments": { "ref": "payments-api", "allowed_methods": ["GET"] },
"crm": { "type": "http", "url": "https://api.example.com", "allowed_methods": ["GET"] }
},
"timeout_seconds": 120,
"shell": false,
"max_cost_micros": 500000,
"input": { "payment_id": "pay_123" }
},
"requires_credentials": ["crm"]
}request est la définition résolue. Les noms de fichiers sont remplacés par les ID utilisés, et les champs enregistrés d'un workflow sont renseignés. Le nom du workflow et le callback sont omis. Les connexions enregistrées ne conservent que leur référence et leurs listes d'autorisation. Les connexions en ligne perdent leurs identifiants et les secrets présents dans leur URL.
requires_credentials liste les connexions en ligne dont il faut rétablir les identifiants ou l'URL d'origine. Pour relancer l'exécution, remettez-les, choisissez un nouveau max_cost_micros et envoyez la requête à POST /v1/runs. Les références de connexions enregistrées sont alors résolues de nouveau, et la requête échoue si un fichier ou une connexion référencé a été supprimé.
Exécutions à rétention zéro
Une exécution avec zero_data_retention renvoie sa sortie une seule fois. Le premier GET /v1/runs/{id} après la fin inclut output et la supprime ; les lectures suivantes l'omettent et indiquent output_available: false. Si l'exécution a un callback, il livre la sortie et GET la laisse en place d'ici là. Une sortie non livrée est supprimée au plus tard après une heure.
Le flux d'événements fonctionne pendant l'exécution et quelques minutes après. GET /v1/runs/{id}/definition renvoie 410, et les listes d'exécutions n'incluent jamais la sortie. Sur le service hébergé, cost_micros inclut le supplément et le budget doit le couvrir.