Alles geht auch per REST — ganz ohne Oberfläche. Ein asynchroner Job mit Webhook:
curl -X POST http://127.0.0.1:8653/api/jobs \
-H "X-TT-Token: $TT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"model":{"custom":"HuggingFaceTB/SmolLM2-135M-Instruct"},
"dataset_id":"<dataset-id>",
"lora":{"r":16,"alpha":32},
"params":{"lr":2e-4,"epochs":3,"bs":2,"gacc":1},
"webhook":"https://example.com/hook"}'- POST /api/jobs erzeugt einen asynchronen Job und liefert die Überwachungs-URL; GET /api/jobs/<id> gibt den Live-Status.
- Nach Abschluss sendet der Server einen POST an Ihren Webhook, signiert mit
X-TT-Signature: sha256=HMAC(body)— prüfen Sie die Integrität am Ziel mit demselben Secret. - Eigene Webhook-Header werden gesäubert, und private/interne Ziele (SSRF) sind blockiert — außer Sie aktivieren
TT_WEBHOOK_ALLOW_PRIVATE=1für rein lokale Automatisierung. - Der Warteschlangen-Dialog zeigt die Webhook-Spalte jedes Jobs: zugestellt ✓ oder fehlgeschlagen ✗.

Tipp: Die vollständige API-Karte steht in INSTALL.md, das dieser Datei beiliegt.
