---
title: "Vision perception → SlideIntentIR (v0.1, prototype)"
method: POST
path: "/v1/analyze/image/perceive"
tags: ["analyze"]
---

# Vision perception → SlideIntentIR (v0.1, prototype)

`POST /v1/analyze/image/perceive`

## Request

- Base URL: `https://api.slideforge.dev`
- URL: `https://api.slideforge.dev/v1/analyze/image/perceive`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Run full vision perception (4 parallel vision-model specialists) and
return a SlideIntentIR structured spec. Phase 2 of the
Perception → Planner v2 plan.

Bills `image_analysis_v2` ($0.20) on success only. The returned
`SlideIntentIR` is the input the Planner v2 will consume (P4).
Today, callers can also drive it through the legacy auto-router by
extracting `brief = perception.brief()` (helper TBD).

INTERNAL ENDPOINT — perception schema is IP-load-bearing and not
advertised in the public MCP surface. Keep on this REST path until
we decide otherwise.

## Response `200`

Successful Response

- unknown

## Other responses

- `400`: Missing or invalid image
- `402`: Insufficient balance
- `500`: Vision perception failed

---

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