Skip to main content

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:rc label on the PR)
  • Your eval run is tagged with the PR head commit SHA

The API call

Verdikt matches signals to a release by release_id. Resolve it from the commit SHA via the gate endpoint, then post signals.

1. Resolve the cert window

The response includes release_id. If you get 404, apply verdikt:rc on the PR first.

2. Post signals

Replace:
  • YOUR_WORKSPACE_IDSettings → General
  • vdk_live_xxxx — your Agent access key
  • RELEASE_ID — from step 1
  • source — 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

Add to GitHub secrets:
  • VERDIKT_WORKSPACE_ID
  • VERDIKT_API_KEY
Then add the gate polling workflow so merge is blocked until Verdikt certifies.

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 stays COLLECTING 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.

That’s it

Two calls after your eval (resolve release, post signals). Everything else is automatic. Questions: hello@useverdikt.com