---
title: "Пакетний рендер кількох джерел за один виклик"
method: POST
path: "/render/batch"
---

# Пакетний рендер кількох джерел за один виклик

`POST /render/batch`

## Request

- Base URL: `https://rombik.app/api/v1`
- URL: `https://rombik.app/api/v1/render/batch`
- Auth: API key in header `X-API-Key`

Багато елементів (code або url) → один результат. Потрібен тариф Pro. Зараховує по одному експорту за кожен успішний елемент; у ліміті місяця має лишатись щонайменше стільки, скільки елементів (1..100). format=pdf (і не bundle=zip) → один багатосторінковий PDF (сторінка на елемент); інші формати → zip із файлом на елемент. З ?json=1 — звіт по кожному елементу + bundle у base64; інакше — файл (pdf|zip) із заголовками X-Rombik-Rendered та X-Rombik-Failed.

## Query parameters

- `json` boolean

## Request body

- BatchRequest
  - `items` BatchItem[], required
    - `code` string: Вихідний код (або url)
    - `url` string, uri: Код за посиланням (ті самі allowlist-хости, що й у /render)
    - `lang` 'python' | 'cpp' | 'c' | 'java' | 'csharp' | 'pascal' | 'javascript' | 'typescript' | 'php' | 'go' | 'rombik': Опційно; для url вгадується за розширенням. "rombik" (рідний astJSON) потребує Pro — інакше 402 pro_required.
    - `fn` string: Рендерити лише функцію з цим іменем
    - `name` string: Імʼя файлу в zip (інакше rombik-N)
  - `format` 'svg' | 'png' | 'jpeg' | 'webp' | 'gif' | 'gif_anim' | 'html' | 'pdf' | 'typst' | 'excalidraw'
  - `bundle` 'pdf' | 'zip': Пакування. Типово: pdf для format=pdf, інакше zip. bundle=zip із format=pdf → zip окремих PDF.
  - `scale` integer: Растр: пікселів на pt, 1–4, типово 3 (як у /render)
  - `fragment` boolean: Typst: фрагмент CeTZ без преамбули; html: лише <div> із вбудованим SVG (без сторінки й CSS) — для вставки в готову сторінку
  - `font` string: Шрифт SVG (з allowlist)
  - `preset` string: Пресет вигляду: default | classic (ланцюг умов сходинкою, цикли ромбом) | short | terminators — або код збереженого профілю (з посилання /app?m=КОД). options накладаються поверх; невідомий — 400 unknown_preset
  - `options` Options: Опції рушія (усі необов'язкові; порожні → ДСТУ-замовчування). Кастомні текстові значення (свої підписи гілок, слова вводу/виводу, термінатори, returnWord, forEachWord, capWord, capFormat, forFormat) потребують активного Pro на акаунті — інакше 402 pro_required. Тумблери, locale, font, scale, figStart — безкоштовні.
    - `locale` 'uk' | 'en': Мова написів за замовчуванням
    - `forFormat` 'comma' | 'range' | 'verbose': Формат лічильника циклу for. comma: i = 0, 9, 1; range: i = 0..9; verbose: i: 0 → 9
    - `labels` 'code' | 'math' | 'words': Текст блоків. code (дефолт): як у коді; math: без синтаксису мови — d = 0, b² − 4ac, √d, і/або; words: словами — «d дорівнює 0», «a менше 20», «Замінити a на b». Для lang rombik не застосовується: текст вузлів лишається як написано.
    - `singleEnd` boolean: Зводити всі кінці (return/break) до одного термінатора «Кінець». Типово вимкнено й це рекомендований режим: зі спільним «Кінцем» лінія раннього return усередині циклу мусить перетнути дугу повернення циклу (ДСТУ дозволяє обидва варіанти)
    - `mainOnlyTerminators` boolean: Показувати термінатори «Початок/Кінець» тільки для функції main, для інших — ховати
    - `callAsProcess` boolean: Малювати виклики функцій як звичайні прямокутники (процес) замість прямокутників із подвійними краями (підпрограма)
    - `stripTypes` boolean: Видаляти типи даних із коду всередині блоків (напр., int x = 5 → x = 5)
    - `returnAsIO` boolean: Малювати return як паралелограм (вивід) замість термінатора
    - `forAsWhile` boolean: Цикл for без шестикутника: блок ініціалізації, ромб з умовою, тіло і блок кроку (як while)
    - `doWhileLoopOnYes` boolean: Цикл do…while з умовою як у коді: гілка «Так» повертає в цикл, «Ні» — вихід. Типово ромб показує умову виходу («Так» — далі, «Ні» — повторити). Діє для C/C++, Java, C#, JS/TS, PHP; у lang rombik те саме задає поле вузла loopOnYes
    - `ifCascade` boolean: Ланцюг if/elif/…/else сходинкою: «Так» веде вниз у дію, «Ні» — праворуч до наступного ромба. Типово ромби стоять стовпчиком, «Так» — убік. Ланцюги з break/continue завжди стовпчиком
    - `yes` string: Текст над гілкою true (типово «Так»)
    - `no` string: Текст над гілкою false (типово «Ні»)
    - `inWord` string: Слово для операцій вводу (напр. cin >> x). Типово «Ввід»
    - `outWord` string: Слово для операцій виводу. Типово «Вивід»
    - `startText` string: Текст початкового термінатора для main (типово «Початок»)
    - `endText` string: Текст кінцевого термінатора для main (типово «Кінець»)
    - `entryText` string: Текст початкового термінатора для функцій (типово назва функції)
    - `exitText` string: Текст кінцевого термінатора для функцій (типово «Кінець»)
    - `returnWord` string: Слово в блоці return (типово «Повернути»)
    - `forEachWord` string: Знак/слово для ітераторів (типово «∈»)
    - `capWord` string: Слово підпису фігури (типово «Рисунок»)
    - `capFormat` string: Формат підпису (типово «Рисунок %d. %s»)
    - `figStart` integer: Номер першого рисунка (типово 1)
    - `noCaption` boolean: Без підпису «Рисунок N — …» під схемою (блок-схема й структограма)

## Response `200`

Bundle (pdf|zip) або JSON-звіт (за ?json=1)

- BatchResponse: Відповідь у режимі ?json=1.
  - `format` string
  - `bundle` 'pdf' | 'zip'
  - `count` integer: Скільки елементів надіслано
  - `rendered` integer: Скільки елементів успішно
  - `credits` integer: Скільки експортів зараховано (= кількості успішних елементів)
  - `creditsLeft` integer: Скільки експортів лишилось цього місяця (назва поля — для сумісності)
  - `filename` string
  - `items` object[]
    - `index` integer
    - `name` string
    - `ok` boolean
    - `error` string: присутнє лише якщо ok=false
  - `encoding` 'base64'
  - `content` string: Bundle (pdf|zip) у base64

## Other responses

- `400`: Помилка
- `401`: Помилка
- `402`: Помилка
- `500`: Помилка
- `503`: Помилка

---

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