What you’re doing
After your eval runs, send the results to Verdikt with one or two API calls. Verdikt matches them to the open cert window for that commit and updates the verdict. This is the recommended path for custom eval stacks and in-house metrics pipelines.Prerequisites
- A Verdikt workspace with an Agent access key (
vdk_live_…) — Settings → Agent access - Your release has a cert window open (
verdikt:rclabel on the PR) - Your eval run is tagged with the PR head commit SHA
The API call
Verdikt matches signals to a release byrelease_id. Resolve it from the commit SHA via the gate endpoint, then post signals.
1. Resolve the cert window
release_id. If you get 404, apply verdikt:rc on the PR first.
2. Post signals
YOUR_WORKSPACE_ID— Settings → Generalvdk_live_xxxx— your Agent access keyRELEASE_ID— from step 1source— your signal source id (e.g.custom, or a name you define in Settings)signals— keys must match signal definitions in Settings → Signals & thresholds
Signal names must be defined in your workspace before ingest. Add custom signals in Settings or via
POST /api/workspaces/:id/signal-definitions.GitHub Actions — wire it into CI
VERDIKT_WORKSPACE_IDVERDIKT_API_KEY
Python example
What happens next
Thresholds
Define signals and thresholds in Settings → Signals & thresholds. Mark signals Required if the gate should wait for them. If a required signal is not posted, the cert window staysCOLLECTING and the gate blocks until it arrives or the window times out.
Troubleshooting
Advanced: single POST by commit SHA (signed CI webhook)
If you prefer one unsigned-body HMAC call instead of Agent access keys, use the signed CI webhook:POST /api/workspaces/:workspaceId/integrations/ci
Requires x-verdikt-signature: sha256=… (per-workspace inbound secret). See the optional CI webhook notes in the repo.
For most partners, Agent access + /api/releases/{release_id}/signals is simpler.