---
title: "Get a visit's verdict"
method: GET
path: "/verdicts/{session_id}"
tags: ["Verdicts"]
---

# Get a visit's verdict

`GET /verdicts/{session_id}`

## Request

- Base URL: `https://api.opentools.com`
- URL: `https://api.opentools.com/verdicts/{session_id}`
- Auth: HTTP bearer

Returns the verdict for a visit, worked out from everything seen so far. It is worked out again on every call, so a later call can give a sharper verdict.

## Path parameters

- `session_id` string, required

## Response `200`

The verdict.

- Verdict
  - `visitor` 'agent' | 'automation' | 'human' | 'unclassified', required: Who is visiting. `unclassified` means too little activity to tell yet.
  - `agent` union, required: Which agent, how we know, and how sure we are. Only a verified agent is `certain`.
    - object
      - `type` 'muse' | 'instinct' | 'chatgpt' | 'claude' | 'cursor', required: Which agent, not whose. Every visit by Muse has the type `muse`, whoever sent it. New agents are added over time, so handle types you don't know.
      - `name` string, required
      - `vendor` string, required
      - `identity` 'verified', required: `verified`: its signature checks out against its published keys. `inferred`: its browser and behavior match a known agent. `declared`: it says who it is, and nothing confirms it.
      - `confidence` 'certain', required
    - object
      - `type` 'muse' | 'instinct' | 'chatgpt' | 'claude' | 'cursor', required: Which agent, not whose. Every visit by Muse has the type `muse`, whoever sent it. New agents are added over time, so handle types you don't know.
      - `name` string, required
      - `vendor` string, required
      - `identity` 'declared' | 'inferred', required: `verified`: its signature checks out against its published keys. `inferred`: its browser and behavior match a known agent. `declared`: it says who it is, and nothing confirms it.
      - `confidence` 'high' | 'medium' | 'low', required: How sure the verdict is.
  - `confidence` 'high' | 'medium' | 'low', required: How sure the verdict is.
  - `scores` object, required: How strongly each detector matched.
    - `automation` integer, required
    - `muse` integer, required
    - `instinct` integer, required
  - `signals` Signal[], required: The evidence behind the verdict.
    - `id` string, required
    - `stage` 'automation' | 'muse' | 'instinct' | 'declared', required: The detector it counts toward. `declared` signals are identity claims and signature checks.
    - `weight` integer, required: How much it counts toward its detector's score.
    - `value` string, required: The evidence, in words.
  - `rules` string, required: The version of the detection rules that produced the verdict.

## Other responses

- `401`: The `Authorization` header is missing, or its key is unknown or revoked.
- `404`: No data has arrived for this session yet, or it was recorded on a site that isn't your organization's.
- `429`: The key made more than 600 requests this minute.
- `503`: The key or the session's site couldn't be checked just now. Nothing is wrong with the request; retry it shortly.

---

[API](https://skmtc.dev/opentools/apis/opentools-js-api-reference.md) - [All operations](https://skmtc.dev/opentools/apis/opentools-js-api-reference/llms.txt) - [OpenAPI document](https://skmtc.dev/opentools/apis/opentools-js-api-reference/revisions/ab1463b57d31?raw)
