Starten Sie Ausführungen, verfolgen Sie sie und lesen Sie ihre Ergebnisse. Jeder Endpunkt auf dieser Seite funktioniert mit member- und admin-Schlüsseln. Lebenszyklus und Limits beschreibt Ausführungen.
Eine Ausführung starten
/v1/runsprompt oder den Namen eines gespeicherten workflow.promptstringworkflow gesetzt ist; mit einem Workflow ersetzt er den gespeicherten Prompt. Bis zu 128 KiB.inputany JSONworkflowstringmodelstringdefault_model aus GET /v1/models.filesarray{"file": "<id or name>", "path": "..."} oder {"path": "...", "content": "..."}. Siehe Dateien.connectionsobject{"ref": "<saved name>"} mit optionalen allowed_methods oder allowed_tools oder eine Inline-Definition. Siehe Verbindungen.descriptionstringinput_schemaobjectinput entsprechen muss; bei einer Abweichung antwortet 400 mit Pfad und Grund, etwa input.city: required. Mit einem Workflow ersetzt es das gespeicherte Schema. Siehe Eingabe und Ausgabe beschreiben.output_schemaobjectfailed. Mit einem Workflow ersetzt es das gespeicherte Schema. Siehe Eingabe und Ausgabe beschreiben.timeout_secondsintegershellbooleantrue.webboolean | objecttrue oder { "allow": [domains], "search": false }, um es einzuschränken. Standardmäßig aus. Siehe Webzugriff.zero_data_retentionbooleanfalse.max_cost_microsintegerdefault_max_cost_micros aus GET /v1/me. Beim gehosteten Dienst muss es die Rechenzeitgebühr für das volle Zeitlimit abdecken. Siehe Budgets.callbackobject{"url": "...", "secret": "..."} für eine signierte Anfrage, wenn die Ausführung endet. Siehe Callbacks.Idempotency-Keystring200 zurück.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
}'Die Antwort lautet 202 Accepted mit dem neuen Ausführungsobjekt. Eine Anfrage, die die Validierung nicht besteht, liefert 400 und erstellt nichts. Beim gehosteten Dienst bedeutet 402, dass Ihr verfügbares Guthaben das Budget nicht deckt.
Das Ausführungsobjekt
idstringrun_4abb0f420c6623a12d2889610eb67284.statusstringreserving, queued, starting, running, succeeded, failed, cancelled, timed_out oder interrupted.outputstringerrorstringcreated_attimestampstarted_attimestampfinished_attimestampmax_cost_microsintegercost_microsintegerbilling_pending bei einer beendeten Ausführung false ist. Fehlt, wenn null.billing_pendingbooleanschedule_idstringzero_data_retentionbooleantrue bei einer Ausführung mit Null-Datenspeicherung.surcharge_percentintegersurcharge_microsintegercost_micros, den der Aufschlag für Null-Datenspeicherung ausmacht. Entfällt bei null.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
}Ausführungen auflisten
/v1/runslimitintegercursorstringnext_cursor der vorherigen Seite.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…"
}Ohne limit oder cursor ist die Antwort ein einfaches Array der 100 neuesten passenden Ausführungen. Siehe Paginierung.
Eine Ausführung abrufen
/v1/runs/{id}Ereignisse streamen
/v1/runs/{id}/eventsdone mit dem Ausführungsobjekt und schließt.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", …}Das data jeder Nachricht ist ein Ereignisobjekt mit id, type, data und created_at, außer bei done, das das Ausführungsobjekt enthält. Zeilen, die mit einem Doppelpunkt beginnen, sind Kommentare; alle 15 Sekunden wird ein Heartbeat-Kommentar gesendet. Die Ereignistypen sind unter Ereignistypen aufgeführt. Das Trennen der Verbindung bricht die Ausführung nicht ab.
curl -N $EPHEMERAL_URL/v1/runs/run_4abb0f420c6623a12d2889610eb67284/events \
-H "Authorization: Bearer $EPHEMERAL_API_KEY"Eine Ausführung abbrechen
/v1/runs/{id}/cancelreserving, queued, starting oder running ab und liefert das Ausführungsobjekt. Eine bereits beendete Ausführung wird unverändert zurückgegeben.Eine Ausführungsdefinition lesen
/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 ist die aufgelöste Definition. Dateinamen werden durch die verwendeten IDs ersetzt, und die gespeicherten Felder eines Workflows werden eingesetzt. Workflow-Name und Callback fehlen. Gespeicherte Verbindungen behalten nur ihren Verweis und ihre Zulassungslisten. Inline-Verbindungen verlieren ihre Zugangsdaten und alle Geheimnisse in ihrer URL.
requires_credentials listet Inline-Verbindungen auf, bei denen Zugangsdaten oder die ursprüngliche URL wiederhergestellt werden müssen. Um sie erneut auszuführen, fügen Sie diese wieder hinzu, wählen Sie ein neues max_cost_micros und senden Sie die Anfrage an POST /v1/runs. Verweise auf gespeicherte Verbindungen werden dabei erneut aufgelöst, und die Anfrage schlägt fehl, wenn eine referenzierte Datei oder Verbindung gelöscht wurde.
Ausführungen mit Null-Datenspeicherung
Eine Ausführung mit zero_data_retention liefert ihre Ausgabe einmal. Das erste GET /v1/runs/{id} nach dem Ende enthält output und löscht sie; spätere Lesezugriffe lassen sie weg und melden output_available: false. Hat die Ausführung einen Callback, liefert dieser die Ausgabe, und GET lässt sie bis dahin bestehen. Eine nicht gelieferte Ausgabe wird spätestens nach einer Stunde gelöscht.
Der Ereignisstrom funktioniert, solange die Ausführung läuft, und noch wenige Minuten danach. GET /v1/runs/{id}/definition liefert 410, und Ausführungslisten enthalten nie eine Ausgabe. Im gehosteten Dienst enthält cost_micros den Aufschlag, und das Budget muss ihn abdecken.