Skip to main content
Webhooks notify your systems when supported runs reach a terminal state. Osmosis sends a JSON POST to the workspace URL you configure for training, evaluation, and benchmark run completion events.

Setup

Open Workspace Settings → Webhooks. Any workspace member can view the page and delivery history. Only owners and admins can edit the URL, turn delivery on or off, or send a test payload:
  1. Enter your Webhook URL. It must use HTTPS on port 443 and resolve to a public address. URLs that point at private or internal networks are rejected.
  2. Turn on Deliver events and click Save.
  3. Click Send test payload to confirm your receiver gets a webhook.test event.
Turn off Deliver events to pause deliveries without losing the URL. To remove the webhook, clear the Webhook URL and click Save.

Events

Payload

Every request is a POST with Content-Type: application/json and this envelope:

training_run.completed and eval_run.completed

The data object has the same shape for both events: Training run example:
For evaluation runs, latest_metrics contains aggregate results instead:

benchmark_run.completed

Each object in agents contains:

webhook.test

Delivery

  • Each attempt times out after 5 seconds. Failed deliveries are retried up to 2 times with backoff.
  • Retries can produce duplicate deliveries. For run-completion events, make processing idempotent using the pair event + data.id.
  • Any 2xx response counts as delivered. Redirects are not followed.
  • Delivery is best effort. A webhook delivery failure does not affect the run, and Osmosis does not guarantee that every event will reach your receiver.
  • Every delivery is recorded with its final outcome in Recent Deliveries, so you can see what Osmosis sent and how your receiver answered.

Recent Deliveries

Workspace Settings → Webhooks lists every delivery from the last 30 days below the webhook form. Any workspace member can read the list; editing the webhook still requires an owner or admin. Each row shows: Click a row to open the delivery. The Request tab shows the exact JSON body Osmosis sent. The Response tab shows the HTTP status and the first 2 KB of your receiver’s response body, or the transport error when no response arrived. Filter the list by event or status to find a specific delivery. Test payloads sent with Send test payload appear in the list like any other event, so the fastest way to inspect a payload is to send one and open the row. Deliveries are kept for 30 days and then removed. Nothing is recorded while Deliver events is off, because no request is made.
Osmosis stores the first 2 KB of your receiver’s response body so you can debug failures. Do not echo secrets or other sensitive data in webhook responses.

Security

Webhook requests are currently unsigned, so the payload alone does not prove that a request came from Osmosis. Use a dedicated, high-entropy HTTPS URL that is not published elsewhere, validate the JSON schema and expected event values before processing, and apply the idempotency rule above. Do not trigger privileged actions solely from unvalidated payload fields. If signed authentication is required, place the webhook behind a gateway you control and enforce your own receiver policy.
Last modified on September 24, 2026