← На головну

API rombik

Генеруй блок-схеми з коду прямо зі скриптів, CI чи власних застосунків — той самий рушій, що й на сайті, по HTTP.

База: https://rombik.app/api/v1 OpenAPI-специфікація ↗
Для AI-агентів

Готовий скіл для Claude Code та інших агентів — щоб самі робили запити чи писали автоматизацію.

CLI rombik

Працюй з API прямо з терміналу — render, batch, баланс, поповнення. «rombik auth» логінить через браузер. Ключ зберігається локально, не передається в промпт.

macOS · Linux
sh
curl -fsSL https://rombik.app/install.sh | sh
Windows (PowerShell)
powershell
irm https://rombik.app/install.ps1 | iex

Або завантаж бінарник напряму:

MCP-сервер

Для AI-клієнтів без зручного терміналу (Claude Desktop, Cursor, Cline…). «rombik mcp» (та сама програма) піднімає MCP через stdio — агент дістає інструменти render_flowchart (схема приходить картинкою прямо в чат), balance, products, topup_link і gift_credits. Авторизація спільна: один раз «rombik auth».

Постав CLI (вище), зроби «rombik auth», тоді під’єднай у клієнті (спосіб залежить від клієнта):

Claude Code
sh
claude mcp add rombik -- rombik mcp
Claude Desktop · Cursor · Cline · Windsurf (config JSON)
json
{
  "mcpServers": {
    "rombik": { "command": "rombik", "args": ["mcp"] }
  }
}

1. Авторизація

Кожен запит підписується API-ключем (rk_…). Створюється в акаунті — показується один раз, далі лише префікс. Заголовок (будь-який із двох):

headers
X-API-Key: rk_ВАШ_КЛЮЧ
Authorization: Bearer rk_ВАШ_КЛЮЧ

2. POST /render

Код → блок-схема файлом. Списує 1 кредит за кожну схему (3 схеми у файлі — 3 кредити).

JSON із кодом

bash
curl -X POST https://rombik.app/api/v1/render \
  -H "X-API-Key: rk_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{"code":"def f(a):\n    return a*2","lang":"python","format":"svg"}' \
  -o schema.svg

Або завантажити файл

bash
curl -X POST https://rombik.app/api/v1/render \
  -H "X-API-Key: rk_ВАШ_КЛЮЧ" \
  -F [email protected] -F format=pdf \
  -o schema.pdf

Або за посиланням (url)

bash
curl -X POST https://rombik.app/api/v1/render \
  -H "X-API-Key: rk_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://raw.githubusercontent.com/user/repo/main/app.py","format":"svg"}' \
  -o schema.svg

3. Параметри render

ПолеТипОбов.Опис
codestring✔*Вихідний код (для JSON-тіла). Або файл через -F file=@…, або url
urlstringЗамість code: посилання на файл (raw.githubusercontent · gist · gitlab · bitbucket · codeberg; github blob → raw). Мова — за розширенням
langstringpython · cpp · c · java · csharp · pascal. Для файлу — за розширенням
formatstringdocx (Word, нативні фігури) · typst · excalidraw · svg (типово) · png · pdf · json
fnstringРендерити лише функцію з цим іменем
scaleintPNG: масштаб (zoom), типово 3
fragmentboolTypst: фрагмент CeTZ без преамбули документа
splitboolрозбивка на сторінки конекторами А/Б; типово true для docx/pdf/typst-документа, явне true вмикає й для svg/png/excalidraw (false — суцільна)
fontstringШрифт SVG (з allowlist; інакше — дефолтний Times)
jsonbool?json=1 або {"json":true} — відповідь JSON замість файлу
optionsobjectОпції рушія (див. нижче) — слова схеми, формат for, підпис тощо

* code обов’язковий для JSON-тіла; при завантаженні файлу замість нього — file.

Поля options

ПолеТипОпис
localestring"uk" (типово) · "en" — мова вставок схеми (крок/Виняток…)
forFormatstringcomma · range · verbose — вигляд лічильникового for
singleEndboolОдин «Кінець» замість на кожен вихід
mainOnlyTerminatorsboolПочаток/Кінець лише для main; підпрограми — Вхід/Вихід
callAsProcessboolВиклик функції як «Процес», а не «Підпрограма»
stripTypesboolПрибрати типи з оголошень
returnAsIOboolreturn як блок виводу
yes / nostringПідписи гілок (Так/Ні)
inWord / outWordstringСлова вводу/виводу (Ввід/Вивід)
startText / endTextstringТермінатори main (Початок/Кінець)
entryText / exitTextstringТермінатори підпрограм (Вхід/Вихід)
returnWordstringСлово перед return (Повернути)
forEachWordstringРоздільник foreach (∈)
capWordstringСлово підпису (Рисунок)
capFormatstringШаблон підпису: {word} {num} — {text}
figStartintЗ якого номера нумерувати схеми

Кастомні значення (свої слова гілок, вводу/виводу, термінатори, returnWord, forEachWord, capWord, capFormat, forFormat) потребують активного Pro на акаунті — інакше 402 pro_required (поле proFeatures перелічує які). Тумблери, locale, font, scale, figStart — безкоштовні.

4. Відповідь render

Типово — файл (потік байтів + Content-Disposition):

http
HTTP/1.1 200 OK
Content-Type: image/svg+xml
Content-Disposition: attachment; filename=rombik.svg

<svg xmlns="http://www.w3.org/2000/svg" …>…</svg>

?json=1 — JSON (поля нижче):

json
{
  "format": "svg",
  "lang": "python",
  "filename": "rombik.svg",
  "encoding": "utf-8",        // або "base64" для png/pdf
  "content": "<svg …>…</svg>",
  "creditsLeft": 41
}
  • format / langщо відрендерено
  • filenameзапропонована назва файлу
  • encodingutf-8 (svg/typst/excalidraw/json) або base64 (docx/png/pdf)
  • contentсам результат (рядок або base64)
  • creditsLeftскільки кредитів лишилось

5. JSON-режим

Зручно для пайплайнів — не файл, а JSON із content. Бінарні (docx/png/pdf) приходять у base64.

bash
curl -X POST "https://rombik.app/api/v1/render?json=1" \
  -H "X-API-Key: rk_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{"code":"...","lang":"cpp","format":"png","scale":3}'

6. GET /me

Баланс кредитів і статус Pro за ключем — без браузера.

bash
curl https://rombik.app/api/v1/me \
  -H "X-API-Key: rk_ВАШ_КЛЮЧ"

Відповідь:

json
{
  "email": "[email protected]",
  "name": "You",
  "credits": 42,
  "pro": true,
  "proUntil": "2026-07-01T00:00:00Z"   // "" якщо без Pro
}

7. Поповнення

POST /topup

Уперся в «немає кредитів»? Отримай лінк на оплату прямо зі скрипта — jarUrl уже з сумою й кодом. Поштучно (credits_unit + qty), пакетом (credits + id) або Pro (pro + id); id — з каталогу на сайті.

bash
curl -X POST https://rombik.app/api/v1/topup \
  -H "X-API-Key: rk_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{"kind":"credits_unit","qty":10}'
# → {"jarUrl":"https://send.monobank.ua/jar/…?a=30&t=rk_cr_…","amountUah":30,…}

8. Формати й кредити

Формати: docx · typst · excalidraw · svg · png · pdf · json.

Кожен виклик /render = 1 кредит за кожну схему (сервер рендерить сам, тож без винятків для PNG). Поповнити — у акаунті.

9. Ліміти й помилки

Платний /renderбез ліміту (його обмежують кредити). Безкоштовні (/me) — 60 запитів/хв на ключ (понад → 429). Помилки: {"error":"…"}.

КодЩо означає
200OK — файл (або JSON, якщо json=1)
400Поганий запит — невідома мова/формат, зламаний JSON або недоступний url (bad_source)
401Невідомий або відсутній API-ключ
402Немає кредитів (no_credits) або Pro-опції без активного Pro (pro_required)
429Ліміт безкоштовних запитів (лише /me): 60/хв на ключ
500Помилка рендеру на сервері

10. Подарунок кредитів

POST /gift

Подаруй кредити експорту другові прямо зі скрипта — вкажи його email і кількість. Списується з твого балансу, нараховується йому (акаунт створиться за email, якщо треба). Він отримає лист і сповіщення в акаунті.

bash
curl -X POST https://rombik.app/api/v1/gift \
  -H "X-API-Key: rk_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","qty":5}'
# → {"ok":true,"credits":37}

11. POST /render/batch

POST /render/batch

Багато джерел за один виклик — кожен елемент це code або url. Списує 1 кредит за кожну схему серед успішних елементів (на балансі — щонайменше за кількістю елементів). format:"pdf" → один багатосторінковий PDF (сторінка на елемент); інші формати → zip із файлом на елемент. До 100 елементів. З ?json=1 — звіт по кожному елементу.

bash
curl -X POST https://rombik.app/api/v1/render/batch \
  -H "X-API-Key: rk_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{"format":"pdf","items":[
    {"url":"https://raw.githubusercontent.com/user/repo/main/a.py"},
    {"code":"def f(x):\n    return x*2","lang":"python","name":"double"}
  ]}' \
  -o project.pdf

12. Рідний формат rombik

Для мов, які rombik не парсить (асемблер, псевдокод…), або коли схема не відповідає жодному коду — постав lang:"rombik" і поклади в code дерево схеми як astJSON. Парсер пропускається, але layout сам додає ДСТУ-форми, термінатори Початок/Кінець, мітки Так/Ні й нумерацію. Це повний ручний контроль схеми — лише з активним Pro (інакше 402 pro_required). Усі формати експорту й options працюють як звичайно.

Структура: масив функцій (кожна → окрема схема)

json
[{ "name": "grade", "main": true, "block": { "kind": "block", "stmts": [
  { "kind": "io", "text": "Ввід s" },
  { "kind": "if", "cond": "s >= 60",
    "then": { "stmts": [ { "kind": "io", "text": "Вивід: Залік" } ] },
    "else": { "stmts": [ { "kind": "io", "text": "Вивід: Незалік" } ] } },
  { "kind": "for", "cond": "i := 1, n",
    "body": { "stmts": [ { "kind": "call", "text": "обробити(i)" } ] } }
] }}]

Види вузлів

kindФормаОпис
processпрямокутникдія; потрібен text
ioпаралелограмввід/вивід; почни text з «Ввід»/«Вивід» — спрацює локаль/Pro-слова
callпідпрограмавиклик; потрібен text
terminalтермінаторокремий; Початок/Кінець навколо функції додаються самі
ifромбcond + then/else (блоки)
forшестикутникспецифікація у полі cond (напр. «i := 1, n») + body
while / dowhileромб циклуcond + body (перед-/постумова)
infloopциклнескінченний; body
break / continueлише всередині циклу
connectorколоtext — мітка; jump:true — goto-стрибок

Поля вузла: { kind, text?, cond?, then?, else?, body?, stmts?, jump? }. then/else/body — це блок-вузли {"stmts":[…]} (kind можна не вказувати), порожня гілка — {"stmts":[]}. У for специфікація йде в полі cond (не text), формат «змінна := старт, кінець[, крок]», напр. «i := 1, n». Початок/Кінець/Так/Ні вручну не малюй — їх ставить layout. Помилки валідації повертаються текстом (виправ і повтори): невідомий kind, if/while/for без cond, process/io/call без text, break поза циклом, ліміти (≤2000 вузлів, глибина ≤100).

Повний приклад — пошук максимуму в масиві

json
[
  { "name": "findMax", "main": true, "block": { "kind": "block", "stmts": [
    { "kind": "io", "text": "Ввід a, n" },
    { "kind": "process", "text": "m := a[0]" },
    { "kind": "for", "cond": "i := 1, n-1", "body": { "stmts": [
      { "kind": "if", "cond": "a[i] > m",
        "then": { "stmts": [ { "kind": "process", "text": "m := a[i]" } ] },
        "else": { "stmts": [] } }
    ] } },
    { "kind": "io", "text": "Вивід m" },
    { "kind": "terminal", "text": "Повернути m" }
  ] } }
]

Виклик (CLI або MCP render_flowchart з lang:"rombik")

bash
rombik render schema.json --lang rombik -f pdf -o out.pdf

Готовий почати?