Texto entra → texto sai. Envie um trecho via JSON e receba o resultado minificado, formatado ou convertido. Usa as mesmas ferramentas Node (Terser, clean-css, html-minifier-terser, prettier, svgo) das nossas ferramentas web — então o resultado é exatamente o mesmo.

# 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();

Todos os endpoints são públicos — sem chave. As operações são só transformações de texto (sem GPU nem processamento de imagem), então os limites são maiores que os da 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)

Comprima ou formate um trecho. O mesmo endpoint faz os dois caminhos pelo parâmetro mode — útil quando você tem arquivos de configuração JSON ou CSS minificado em uma linha que quer ler.

POST https://jinero.online/api/v1/code/minify
ParâmetroTipoDescrição
code string Código-fonte. Até 200.000 caracteres.
type string Um de: js, css, html, svg, json, xml, auto. Use "auto" para o servidor detectar o conteúdo.
mode string minify (padrão) ou beautify.
keep_license boolean Manter os comentários de licença /*! ... */ ao minificar. Padrão: 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");
Exemplo de resposta
{
  "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
}

Detecta automaticamente a linguagem de um trecho. Retorna o tipo identificado e a lista de formatos de destino dos conversores que o aceitam como entrada — prático para montar menus “converter para…”.

POST https://jinero.online/api/v1/code/detect
ParâmetroTipoDescrição
code string Código-fonte. Até 200.000 caracteres.
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();
Exemplo de resposta
{
  "success": true,
  "detected_type": "json",
  "confidence": 0.97,
  "available_targets": ["yaml", "toml", "xml", "csv"]
}

Todas as conversões suportadas (from → to), com o esquema de opções de cada par. Use para montar interfaces que se adaptam automaticamente quando adicionamos novos conversores.

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 }
Exemplo de resposta
{
  "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": {} }
  ]
}

Converte um trecho de uma linguagem para outra. Suporta JSON↔YAML↔TOML↔XML, CSS↔SCSS, HTML↔Pug, SVG↔JSX e outros — chame /code/converters para ver a lista completa.

POST https://jinero.online/api/v1/code/convert
ParâmetroTipoDescrição
code string Código-fonte. Até 200.000 caracteres.
from string Identificador da linguagem de origem, de /code/converters.
to string Identificador da linguagem de destino.
options object Ajustes específicos do conversor (veja optionsSchema em /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");
Exemplo de resposta
{
  "success": true,
  "from": "json",
  "to": "yaml",
  "output": "name: jinero\n",
  "notes": null
}

Semântica HTTP padrão. Os erros retornam JSON com o campo "message", que descreve a falha.

// 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" }

Sobre a Code API do jinero.online

API REST gratuita para minificar, formatar e converter código — JS, CSS, HTML, SVG, JSON, YAML, TOML, XML, Pug, SCSS — em um único contrato JSON limpo.

Ferramentas consagradas

Terser, clean-css, html-minifier-terser, prettier, svgo — os mesmos motores que todo mundo usa, disponíveis em um contrato REST limpo.

Matriz de conversões

Mais de 20 pares de linguagens: JSON↔YAML↔TOML↔XML, CSS↔SCSS, HTML↔Pug, SVG↔JSX. Veja todos em /code/converters.

Limites de uso altos

30 requisições/minuto por IP — texto entra, texto sai, sem armazenamento de arquivos para se preocupar.

Sem estado e privado

Os trechos são processados em memória e nunca registrados em logs. Não sobra nada para limpar depois.

Perguntas frequentes

Não. A Code API é pública e tem limite de uso por IP — 30 requisições/minuto em cada endpoint. Se precisar de limites maiores, crie uma conta e gere um token.

200.000 caracteres (~200 KB) por requisição. Cabe até um CSS empacotado muito grande ou arquivos de configuração JSON enormes. Para minificações gigantescas, use o Terser localmente.

Sim. Os dois chamam os mesmos scripts auxiliares em Node (resources/node/minify.js e resources/node/converter.js) com as mesmas flags, então o comportamento é idêntico.

Mais de vinte pares no momento: JSON↔YAML↔TOML↔XML, CSV↔JSON, CSS↔SCSS, HTML↔Pug, SVG↔JSX e outros. Chame GET /code/converters para ter a lista atualizada e legível por máquina — com o esquema de opções de cada par.

Não. O corpo da requisição é gravado em um arquivo temporário para o script Node, processado e excluído imediatamente. Não registramos o conteúdo do código — só os metadados da requisição (tamanho, tipo, código de status) para controlar os limites.