---
title: "Re-render a carousel from its plan — estimate"
method: POST
path: "/v1/carousel/render/estimate"
tags: ["Carousel"]
---

# Re-render a carousel from its plan — estimate

`POST /v1/carousel/render/estimate`

## Request

- Base URL: `https://apihub.co.il`
- URL: `https://apihub.co.il/v1/carousel/render/estimate`
- Auth: HTTP bearer

Price the request without executing it. Same body as `POST /v1/carousel/render`.

## Request body

- object
  - `only` integer[]: Render only these slides (1-based), e.g. [3]; default: all
  - `plan` object, required: The plan of an earlier carousel (`output.plan`), with your edits: a word, a headline, a slide's `image_url`
    - `look` 'photo' | 'card' | 'split', required
    - `brand` object, required
      - `font` 'Heebo' | 'Rubik' | 'Assistant' | 'Frank Ruhl Libre' | 'Secular One'
      - `accent` string, required
      - `handle` string
      - `primary` string, required
      - `logo_url` string, uri
    - `aspect` '1:1' | '4:5': The slides' shape: 1:1 (1080×1080) or 4:5 (1080×1350). A plan without it is 4:5 — every plan made before the square existed.
    - `slides` object[], required
      - `alt` string: Alt text of the finished slide
      - `body` string
      - `role` 'hook' | 'point' | 'step' | 'myth' | 'fact' | 'before' | 'after' | 'story' | 'proof' | 'recap' | 'cta', required
      - `image` object
        - `url` string, nullable
        - `model` string, nullable
        - `author` string, nullable
        - `source` 'stock' | 'ai' | 'own' | 'none', required
        - `licence` string, nullable
        - `page_url` string, nullable
        - `provider` string, nullable
        - `licence_url` string, nullable
      - `button` string: The call-to-action button (last slide)
      - `kicker` string: A small label above the headline (a pill)
      - `number` integer: The item's number (a tip, a step)
      - `focus_x` number: Which part of a picture wider than its window stays: 0 its left edge, 0.5 the middle (default), 1 its right edge
      - `focus_y` number: Which part of a picture taller than its window stays: 0 its top, 0.5 the middle, 1 its bottom. Default: the middle (in the square photo look the picture's middle is brought into the clear part above the text). Set it when the crop cuts the subject.
      - `headline` string, required
      - `image_url` string, uri: The picture this slide is rendered with. Change it to swap the picture; remove it for a brand-colour card.
      - `stock_query` string: English stock search for this slide's picture
      - `stock_short` string
      - `wants_image` boolean: Whether this slide carries its own picture
      - `image_prompt` string: English prompt for a generated picture (no text in it)
    - `caption` string
    - `palette` string
    - `version` 1
    - `hashtags` string[]
    - `language` 'he' | 'en' | 'uk' | 'ru', required
    - `archetype` 'tips' | 'myths' | 'steps' | 'before-after' | 'story' | 'product', required
    - `image_style` string
  - `aspect` '1:1' | '4:5': Render the plan in this shape (1:1 or 4:5) instead of its own — the whole carousel, so leave `only` out. Default: the plan's `aspect` (a plan without one is 4:5). The text limits of the shape apply.
  - `swipe_cue` boolean: The swipe cue next to the slide marker ("Swipe", "החליקו"); false = the marker alone — slides shown inside a video, where nobody swipes

## Response `200`

Estimate

- Estimate
  - `operation` string
  - `estimated_credits` number
  - `credits_to_reserve` number
  - `estimated_usage` object
  - `note` string, nullable
  - `balance` object
    - `available` number
  - `sufficient` boolean

---

[API](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai.md) · [All operations](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/llms.txt) · [OpenAPI document](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/revisions/a8caa42835ce?raw)
