Verisco
Documentation

VERISCO Shield Reference

API reference

Every endpoint a client application, the CLI or the SDK calls, with how each one is authenticated.

Base address#

Every path below is relative to your VERISCO platform's address, written https://your-verisco-host in the examples. Responses are JSON unless stated. An error is a JSON object with a detail or an error field and an HTTP status that means what it says.

Authentication#

Three schemes, each for a different caller.

Scheme Who uses it How
None Anyone Endpoints that carry no tenant value: the contract, the package downloads.
Analyzer key The CLI, your pipeline Authorization: Bearer <analyzer key>. The key is on your integration page in the console.
Client credentials The SDK, in SDK mode HTTP Basic with your client id (<tenant-id>-user) and client secret.

Keep both secrets out of your repository

The analyzer key can read your integration guide and turn protection on or off. The client secret completes sign-ins as your application. Store them in your environment or your secret manager.

Integration#

GET/api/v1/contract

The machine-readable integration contract: the cookie and header names, the signing algorithm, the claims, the package names, the supported frameworks and the code to paste.

Authentication: none. It contains no tenant value.

Shell
curl -fsS https://your-verisco-host/api/v1/contract
JSON
{
  "contract_version": "1.0",
  "transport": {
    "session_cookie": "verisco_session",
    "claims_header": "X-Verisco-Claims",
    "user_header": "X-Verisco-User",
    "verified_header": "X-Verisco-Verified",
    "algorithm": "RS256"
  },
  "public_key": { "path": "/api/v1/public-key", "filename": "verisco_public.pem" },
  "packages": { "cli_binary": "verisco-analyzer" },
  "frameworks": {},
  "snippets": {}
}

GET/api/v1/public-key

Your tenant's RS256 public key, as a PEM file.

Authentication: the analyzer key, as the api_key query parameter.

Status Meaning
200 The key, application/x-pem-file.
401 The key is not valid.
404 No signing key yet. The tenant has not been published.
Shell
curl -fsS "https://your-verisco-host/api/v1/public-key?api_key=$VERISCO_ANALYZER_KEY" -o verisco_public.pem

GET/tenants/{tenant_id}/public-key

Every public key your application should currently accept. During a key rotation that is two: the one in use and the one about to be. An application that fetches this while a key is staged is ready before anything changes.

Authentication: none. A public key is public.

GET/api/v1/sdk/node

The Node middleware, as a tarball that npm installs directly.

Authentication: none.

Shell
npm install https://your-verisco-host/api/v1/sdk/node

GET/api/v1/cli/install

A POSIX shell installer for the CLI. It verifies the download's checksum before installing it.

Authentication: none.

Shell
curl -fsSL https://your-verisco-host/api/v1/cli/install | sh

Analysis#

POST/api/v1/ai-analyze

Asks for an AI-written integration guide for the files sent. Called by verisco-analyzer analyze --use-ai.

Authentication: analyzer key. Rate limit: 5 requests per hour, per tenant.

Field Type Meaning
files object File path to file content, for the authentication-related files.
package_json object Optional. Your project's package.json.

The guide is saved to your tenant and shown on your integration page.

GET/api/v1/guide

The stored guide's edits, in the form verisco-analyzer apply writes them.

Authentication: the analyzer key, as the api_key query parameter.

Verification and going live#

GET/api/v1/verify/status

Where your integration stands: an overall status and every check.

Authentication: analyzer key.

JSON
{
  "status": "pass",
  "ran": 4,
  "checks": [
    {
      "check": "middleware_mounted",
      "status": "pass",
      "detail": "",
      "next_action": "",
      "at": "2026-10-04T09:12:44Z"
    }
  ]
}
Field Meaning
status pass, fail, or unknown when no check has run. A single check can also be warn or skip.
checks[].check The name of the check.
checks[].detail What was found.
checks[].next_action What to do about a failure.

POST/api/v1/verify/local

The CLI reports what it found on your machine. Recorded as a self-report and labelled as one.

Authentication: analyzer key.

POST/api/v1/verify/probe

Runs the checks only the platform can run: that a request to your hostname reaches your application through VERISCO.

Authentication: analyzer key.

POST/api/v1/go-live

Turns protection on. Every request then goes through VERISCO sign-in.

Authentication: analyzer key.

Status Meaning
200 Protection is on.
409 Refused. Verify has not confirmed the middleware and the key; the body says which is missing.
401 The key is not valid.

POST/api/v1/go-back

Returns to pass-through. Never refused.

Authentication: analyzer key.

POST/api/v1/integration-complete

Marks your integration as complete, after you have checked it end to end.

Authentication: analyzer key.

Enforcement feed#

For SDK mode only. The middleware calls both for you.

GET/api/v1/enforcement/state

What your application must enforce right now, as a full snapshot.

Authentication: client credentials.

Send the ETag from the previous response as If-None-Match. When nothing changed the answer is 304 with no body.

Request header Meaning
If-None-Match The last ETag received.
X-Verisco-Instance A name for this instance, shown on your console.
X-Verisco-Sdk-Version The middleware's version.
JSON
{
  "poll_after": 30,
  "tenant": {
    "tenant_id": "your-tenant-id",
    "mode": "sdk",
    "status": "published",
    "licence": "active",
    "licence_blocks_signin": false,
    "sealed": ["/login"],
    "excluded": ["/public"],
    "health": "/health",
    "max_session_seconds": 28800,
    "idle_seconds": 900,
    "session_binding": "off"
  },
  "revoked": {
    "all": 0,
    "subjects": {},
    "sids": {}
  }
}
Field Meaning
poll_after Seconds to wait before the next poll.
tenant.sealed Path prefixes to answer 404 for.
tenant.excluded Path prefixes served without a session.
tenant.session_binding off, step_up or terminate.
revoked.all A time, in epoch seconds. Sessions issued before it are no longer valid.
revoked.subjects The same, per user.
revoked.sids The same, per session.

A revocation is a not-before time, not a flag: a user who signs in again afterwards is accepted.

Status Meaning
200 The state, with an ETag.
304 Unchanged since the ETag you sent.
401 The credentials were rejected. Sent with WWW-Authenticate, so an application cannot mistake it for "nothing to enforce".
409 The tenant is not in SDK mode. In gateway and connector mode VERISCO enforces at the edge.

POST/api/v1/enforcement/events

What your application enforced, in batches, so it appears in your console.

Authentication: client credentials.

JSON
{
  "events": [
    {
      "outcome": "terminate",
      "subject": "1042",
      "reason": "revoked",
      "ip": "203.0.113.7",
      "app_host": "app.example.com"
    }
  ]
}
JSON
{ "accepted": 1, "rejected": 0 }

outcome is required: what the middleware did, such as sealed, step_up or terminate. The time of each event is set by VERISCO when it arrives, not taken from your clock.

Sign-in endpoints#

Your realm is a standard OpenID Connect provider. In SDK mode the middleware discovers everything it needs from the issuer.

Issuer https://your-verisco-host/auth/realms/<tenant-id>
Discovery https://your-verisco-host/auth/realms/<tenant-id>/.well-known/openid-configuration
Client id <tenant-id>-user

Paths on your own hostname#

Served by the gateway in gateway and connector mode, and by the middleware in SDK mode.

Path Purpose
/verisco/login?returnTo=<path> Starts a sign-in and comes back to returnTo.
/verisco/callback Where the sign-in page returns.
/verisco/logout Ends the session.
/verisco/me The user's own sessions and devices. Gateway and connector mode.

Device agent#

Endpoint Purpose
GET /install/linux?ticket=<ticket> The Linux install script, for the holder of a ticket issued from Devices.
GET /install/windows?ticket=<ticket> The Windows install script, for the holder of a ticket.
GET /install/linux/<tenant-id>, GET /install/windows/<tenant-id> The same scripts as a file, for a signed-in administrator of that tenant. Anybody else is answered 404.

Webhooks#

Outgoing, from VERISCO to you. See Webhooks.

Something missing or wrong on this page? Tell us and we will fix it.

↑↓ to move Enter to open Esc to close