- A backend that submits a long training job and wants to be notified when it’s done
- A queue worker that fans out runs and needs to mark them complete in its own database
- A CI pipeline waiting on a remote build
lyceum workloads list is simpler.
How it works
The execution request body for all three execution types accepts auser_callback_urls field — a list of HTTPS URLs. When the run reaches a terminal state (completed, failed, system_failure, aborted, cancelled), Lyceum POSTs job completion info to each URL.
The same field exists on:
- Python runs (
POST /execution/streaming/start) - Docker image runs (
POST /execution/image/start) - Docker Compose runs (
POST /execution/compose/start)
Submitting a callback
Receiving the callback
The endpoint at the URL you registered will receive an HTTPS POST when the run finishes. Build your handler to:- Return 2xx quickly — Lyceum doesn’t need a body, just an acknowledgement
- Verify the source — gate the endpoint behind a shared secret in the URL path or a header you control, since Lyceum doesn’t sign callbacks
- Be idempotent — handle the case where a callback is delivered more than once

