Skip to content

Webhooks

Olympusx AI accepts two kinds of inbound webhook: merge request events from a code host, which start a review, and alerts from your alerting system, which open a Security investigation. Both are turned on per source in the console, both are authenticated with a secret shown once, and both arrive at the console host.

Webhook Address Authentication Set up in
Merge request review https://<your-console-host>/api/v1/hooks/code-sources/<source-id> The host’s own signature or token header Merge request review
Alert intake https://<your-console-host>/api/v1/hooks/log-sources/<source-id> Authorization: Bearer <secret> Alert integration

The address and the secret are shown in the console when the webhook is turned on. The secret is shown only then; if it is lost, replace it and give the new one to the sender. Turning the webhook off drops the secret, and deliveries are then answered 404.

Your code host or alerting system must be able to reach the console host. If the console is published only inside your network, so must they be.

Turned on per code source by a tenant Admin, from the Code Assistant page.

Each host proves a delivery with its own mechanism, checked against the source’s secret:

Host Header Check
GitLab X-Gitlab-Token Must equal the secret.
GitHub X-Hub-Signature-256 sha256= and the HMAC-SHA256 of the body under the secret.
Bitbucket Cloud X-Hub-Signature sha256= and the HMAC-SHA256 of the body under the secret.

A merge request (a pull request on GitHub and Bitbucket) opened, reopened, or given new commits, in a repository the source indexes. Drafts, other actions and other events are acknowledged and ignored. A repeated delivery for the same commit does not start a second review. The full list of actions per host is on Merge request review.

Status Meaning
202 A review started; the body holds its reviewId. Or the event was acknowledged and ignored; the body says ignored and why.
200 A test delivery (ping), or a repeat of a delivery already reviewed ("duplicate": true with the existing reviewId).
400 not_an_event The body is not an event Olympusx AI reads.
401 bad_signature The delivery does not carry this webhook’s secret.
404 not_found No webhook at this address, or it was turned off.
413 too_large The body is over 2 MiB.
503 The platform’s secret store is not configured, or the platform cannot take the delivery now. The host retries.

Turned on per log source by a tenant Admin, from the Security page, with the model that investigates the source’s alerts.

Authorization: Bearer <secret>

Alertmanager sends this with an authorization block in its receiver’s http_config. Any SIEM that can post JSON with a bearer token can send alerts.

Either Alertmanager’s webhook body, of which only alerts with status firing are read, or one alert of this shape:

{
"title": "Port scan from 10.0.4.17",
"description": "More than 500 ports probed in 2 minutes",
"time": "2026-11-02T08:14:00Z",
"id": "rule-4411-10.0.4.17"
}

Only title is required. An alert’s text is treated as data: it is quoted into the investigation’s question and never followed as an instruction.

Each firing alert opens one investigation of that log source, over the window from 2 hours before the alert to 30 minutes after it. One delivery opens at most 5. A repeat of an alert already seen opens nothing.

Status Meaning
202 Investigations opened. The body lists their ids under investigations, and how many alerts were repeats under repeated.
200 Accepted; every alert was resolved or a repeat, so nothing was opened.
400 not_an_alert The body is neither shape above.
401 bad_token The bearer token is not this source’s secret.
404 not_found No webhook at this address, or alerts were turned off.
409 model_unavailable The model chosen for alerts can no longer be used by the tenant.
413 too_large The body is over 1 MiB.