Текст на вході → текст на виході. Надішліть фрагмент у JSON і отримайте мініфікований, відформатований чи сконвертований результат. Працює на тих самих Node-інструментах (Terser, clean-css, html-minifier-terser, prettier, svgo), що й наші вебінструменти, — тож результат збігається точно.

# Minify a JavaScript snippet
curl -X POST https://jinero.online/api/v1/code/minify \
  -H "Content-Type: application/json" \
  -d '{"code": "function add(a, b) { return a + b; }", "type": "js"}'
const r = await fetch("https://jinero.online/api/v1/code/minify", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ code: source, type: "js", mode: "minify" }),
});
const { output, savings_percent } = await r.json();

Усі ендпоінти публічні — ключ не потрібен. Операції — суто перетворення тексту (без GPU й обробки зображень), тож ліміти вищі, ніж в Images API.

# Anonymous limits (per IP):
#   POST /code/minify    30 req/min
#   POST /code/detect    30 req/min
#   POST /code/convert   30 req/min
#   GET  /code/converters 30 req/min

# Max snippet size: 200,000 chars (~200 KB)

Стисніть або гарно відформатуйте фрагмент. Той самий ендпоінт працює в обидва боки через параметр mode — зручно, коли треба прочитати JSON-конфіг чи мініфікований в один рядок CSS.

POST https://jinero.online/api/v1/code/minify
ПараметрТипОпис
code string Вихідний код. До 200 000 символів.
type string Одне з: js, css, html, svg, json, xml, auto. Укажіть "auto", щоб сервер сам визначив вміст.
mode string minify (за замовчуванням) або beautify.
keep_license boolean Зберігати ліцензійні коментарі /*! ... */ під час мініфікації. За замовчуванням: true.
curl -X POST https://jinero.online/api/v1/code/minify \
  -H "Content-Type: application/json" \
  -d @- <<JSON
{
  "code": ".btn { color: red;  padding: 8px 12px; }",
  "type": "css",
  "mode": "minify"
}
JSON
const r = await fetch("https://jinero.online/api/v1/code/minify", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    code: cssSource,
    type: "css",
    mode: "minify",
    keep_license: true,
  }),
});
const data = await r.json();
$response = Http::post("https://jinero.online/api/v1/code/minify", [
    "code" => $jsSource,
    "type" => "js",
    "mode" => "minify",
]);
$minified = $response->json("output");
Приклад відповіді
{
  "success": true,
  "type": "css",
  "mode": "minify",
  "output": ".btn{color:red;padding:8px 12px}",
  "original_size": 46,
  "output_size": 27,
  "savings_percent": 41.3,
  "line_count": 1
}

Автоматично визначає мову фрагмента. Повертає визначений тип і список цільових форматів конвертерів, які приймають його на вхід, — зручно для випадних списків «конвертувати в…».

POST https://jinero.online/api/v1/code/detect
ПараметрТипОпис
code string Вихідний код. До 200 000 символів.
curl -X POST https://jinero.online/api/v1/code/detect \
  -H "Content-Type: application/json" \
  -d '{"code": "{\"name\": \"jinero\"}"}'
const r = await fetch("https://jinero.online/api/v1/code/detect", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ code: snippet }),
});
const { detected_type, available_targets } = await r.json();
Приклад відповіді
{
  "success": true,
  "detected_type": "json",
  "confidence": 0.97,
  "available_targets": ["yaml", "toml", "xml", "csv"]
}

Усі підтримувані конвертації (from → to) зі схемою параметрів для кожної пари. Використовуйте, щоб будувати інтерфейси, які автоматично підлаштовуються, коли ми додаємо нові конвертери.

GET https://jinero.online/api/v1/code/converters
curl https://jinero.online/api/v1/code/converters
const r = await fetch("https://jinero.online/api/v1/code/converters");
const { converters } = await r.json();
// converters is a flat list of { id, from, to, label, optionsSchema }
Приклад відповіді
{
  "success": true,
  "converters": [
    { "id": "json-to-yaml", "from": "json", "to": "yaml", "label": "JSON → YAML", "optionsSchema": {} },
    { "id": "css-to-scss",  "from": "css",  "to": "scss", "label": "CSS → SCSS",  "optionsSchema": {} },
    { "id": "html-to-pug",  "from": "html", "to": "pug",  "label": "HTML → Pug",  "optionsSchema": {} }
  ]
}

Конвертує фрагмент з однієї мови в іншу. Підтримує JSON↔YAML↔TOML↔XML, CSS↔SCSS, HTML↔Pug, SVG↔JSX та інші — повний список повертає /code/converters.

POST https://jinero.online/api/v1/code/convert
ПараметрТипОпис
code string Вихідний код. До 200 000 символів.
from string Ідентифікатор вхідної мови з /code/converters.
to string Ідентифікатор цільової мови.
options object Налаштування конкретного конвертера (див. optionsSchema у /code/converters).
curl -X POST https://jinero.online/api/v1/code/convert \
  -H "Content-Type: application/json" \
  -d '{"code": "{\"name\": \"jinero\"}", "from": "json", "to": "yaml"}'
const r = await fetch("https://jinero.online/api/v1/code/convert", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    code: jsonSource,
    from: "json",
    to: "yaml",
  }),
});
const { output } = await r.json();
$res = Http::post("https://jinero.online/api/v1/code/convert", [
    "code" => $cssSource,
    "from" => "css",
    "to" => "scss",
]);
$scss = $res->json("output");
Приклад відповіді
{
  "success": true,
  "from": "json",
  "to": "yaml",
  "output": "name: jinero\n",
  "notes": null
}

Стандартна семантика HTTP. Помилки повертають JSON із полем "message", що описує збій.

// 422 — validation (unknown type, oversize snippet, unsupported converter)
{ "message": "The type field must be one of: js, css, html, svg, json, xml, auto." }

// 422 — minification/conversion error from the underlying tool
{ "message": "Unexpected token at line 12" }

// 429 — rate limit exceeded
{ "message": "Too Many Attempts." }

// 500 — registry unreachable (Node helper crashed)
{ "message": "Registry unavailable" }

Про Code API jinero.online

Безкоштовний REST API для мініфікації, форматування й конвертації коду — JS, CSS, HTML, SVG, JSON, YAML, TOML, XML, Pug, SCSS — через один чистий JSON-контракт.

Перевірені інструменти

Terser, clean-css, html-minifier-terser, prettier, svgo — ті самі рушії, що й у всіх, доступні через чистий REST-контракт.

Матриця конвертацій

20+ мовних пар: JSON↔YAML↔TOML↔XML, CSS↔SCSS, HTML↔Pug, SVG↔JSX. Повний перелік — у /code/converters.

Високі ліміти запитів

30 запитів/хв з одного IP — текст на вході, текст на виході, жодного зберігання файлів.

Без стану й приватно

Фрагменти обробляються в пам'яті й ніколи не потрапляють у логи. Нічого не треба прибирати.

Часті запитання

Ні. Code API публічний, з лімітом запитів на IP — 30 запитів/хв на кожен ендпоінт. Якщо потрібні вищі ліміти, зареєструйтеся й отримайте токен.

200 000 символів (~200 КБ) на запит. Цього вистачить навіть для дуже великих зібраних CSS чи JSON-конфігів. Для величезних обсягів мініфікації запускайте Terser локально.

Так. Обидва викликають ті самі допоміжні Node-скрипти (resources/node/minify.js і resources/node/converter.js) з тими самими прапорцями, тож поведінка ідентична.

Наразі понад двадцять пар: JSON↔YAML↔TOML↔XML, CSV↔JSON, CSS↔SCSS, HTML↔Pug, SVG↔JSX та інші. Актуальний машиночитний список повертає GET /code/converters — разом зі схемами параметрів для кожної пари.

Ні. Тіло запиту записується в тимчасовий файл для Node-скрипта, обробляється й одразу видаляється. Ми не логуємо вміст коду — лише метадані запиту (розмір, тип, код статусу) для лімітів.