---
title: "Get Protocol"
method: GET
path: "/api/v1/protocols/{identifier}"
tags: ["protocols"]
---

# Get Protocol

`GET /api/v1/protocols/{identifier}`

## Request

- Base URL: `https://api.verdict.finance`
- URL: `https://api.verdict.finance/api/v1/protocols/{identifier}`
- Auth: none declared

Get a protocol by slug or UUID. Public.

Accepts either a kebab-case slug (e.g. `aave-v3`) or a UUID. UUID parse
is tried first; on ValueError, falls back to slug lookup.

404 for is_private=True OR is_active=False.
Admin bypass: ?include_inactive=true with admin Privy JWT skips the
is_active 404 check. Non-admin's param silently ignored.

## Path parameters

- `identifier` string, required

## Query parameters

- `include_inactive` boolean

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- ProtocolResponse
  - `id` string, uuid, required
  - `name` string, required
  - `slug` string, required
  - `contract_address` string, nullable
  - `contract_chain` string, nullable
  - `chains` ChainBrief[]
    - `id` string, uuid, required
    - `slug` string, required
    - `name` string, required
  - `categories` string[], required
  - `urls` object, required
  - `external_ids` object, required
  - `description` string, nullable
  - `status` 'draft' | 'scoring' | 'approved' | 'published' | 'withdrawn', required
  - `is_active` boolean, required
  - `is_private` boolean, required
  - `under_review` boolean
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `withdrawn_at` string, date-time, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/verdict/apis/verdict-api.md) · [All operations](https://skmtc.dev/verdict/apis/verdict-api/llms.txt) · [OpenAPI document](https://skmtc.dev/verdict/apis/verdict-api/revisions/15de66a17c50?raw)
