---
title: "Ingest: image → editable slide(s) (alias of /v1/perception/proceed)"
method: POST
path: "/v1/render/from-image"
tags: ["render"]
---

# Ingest: image → editable slide(s) (alias of /v1/perception/proceed)

`POST /v1/render/from-image`

## Request

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

Canonical ingest name for image → slide(s); thin delegate to the planner_v2 from-image pipeline.

## Request body

- ProceedRequest
  - `image` string, required
  - `instructions` string, nullable
  - `theme_id` string, nullable
  - `brand` object, nullable
  - `name` string, nullable
  - `source` string, nullable
  - `selected_option_id` 'preserve_slide' | 'explain_slide' | 'teach_deck' | 'reconstruct_slide', nullable
  - `mode` string
  - `choices` object, nullable
  - `allow_image_generation` boolean
  - `verify` boolean

## Response `200`

Render complete

- unknown

## Other responses

- `400`: Missing image or invalid choices
- `402`: Insufficient balance
- `422`: Validation Error

---

[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)
