---
title: "Stock Deep Dive snapshot as PNG or PDF"
method: GET
path: "/snapshot/{entity_kind}"
tags: ["Risk Metrics"]
---

# Stock Deep Dive snapshot as PNG or PDF

`GET /snapshot/{entity_kind}`

## Request

- Base URL: `https://riskmodels.app/api`
- URL: `https://riskmodels.app/api/snapshot/{entity_kind}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://riskmodels.app/oauth/authorize`, token URL `https://riskmodels.app/api/oauth/token`, scopes: `mcp:read`)

Returns **image or PDF bytes**, not JSON. Served from precomputed GCS objects.

Despite the parameter name, the path segment is a **ticker** — it is called `entity_kind` so the folder can nest `/snapshot/{entity_kind}/{id}/panels/{slug}` without a Next.js sibling-dynamic route conflict. Reserved kinds (`stock`, `fund`, …) are not tickers: requesting `/snapshot/stock` on its own returns 400 with the panel URL shape.

For panel drill-down prefer `GET /snapshot/stock/{ticker}/panels/{slug}?format=png` (`_full` for the whole sheet).

**Authentication:** Required (API Key or OAuth2)
**Billing:** $1.25 per request (premium tier)
**Rate Limit:** 120 requests/minute (default)

## Path parameters

- `entity_kind` string, required

## Query parameters

- `format` 'png' | 'pdf'

## Response `200`

Snapshot bytes in the requested format

## Other responses

- `400`: Reserved kind supplied instead of a ticker, or unsupported format
- `401`: Authentication required
- `402`: Insufficient balance

---

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