VVEILVMJAVASCRIPT OBFUSCATION
PreçosTermosPolítica de reembolsoPolítica de privacidadeDocumentação da API

VEILVM · API

Documentação da API

Última atualização: 3 de novembro de 2026

Usuários Pro (e administradores) podem chamar via HTTP as mesmas engines de ofuscação JSVMP do espaço de trabalho web. As chamadas de API compartilham a cota mensal de execuções com o app web.

1. Criar uma chave de API

Entre, abra Conta e crie uma chave em Chaves de API. As chaves começam com veil_live_ e são exibidas apenas uma vez na criação. Armazenamos apenas um hash e não conseguimos recuperar uma chave; se você a perder, revogue-a e crie uma nova. Cada conta pode manter até 3 chaves ativas. Todas as chaves param de funcionar imediatamente se o plano voltar para Free. A página da conta mostra quando cada chave foi usada pela última vez.

2. Solicitação

POST https://vm.ldvmp.com/api/v1/obfuscate

  • Cabeçalho Authorization: Bearer <sua chave>
  • Cabeçalho Content-Type: application/json
  • Corpo { "code": "<código-fonte JavaScript>", "mode": "performance" | "dynamic" }: performance é a VM de alto desempenho, dynamic é a VM dinâmica
  • Cada solicitação de API aceita até 2 MB de código-fonte.

3. Resposta

Em caso de sucesso, a API retorna 200:

{
  "ok": true,
  "output": "/* obfuscated JavaScript */ ...",
  "inputBytes": 22,
  "outputBytes": 48213,
  "ms": 184,
  "engine": "performance",
  "engineVersion": "…"
}

Os cabeçalhos X-Quota-Limit e X-Quota-Remaining informam o limite do mês e as execuções restantes.

4. Erros

Todo erro retorna { "ok": false, "error": "<code>", "message": "<details>" }. Exemplo de cota:

{ "ok": false, "error": "QUOTA_EXCEEDED", "message": "Monthly run limit reached for this plan.",
  "limit": 1000, "used": 1000, "remaining": 0, "resetAt": "2026-12-01T00:00:00.000Z" }
HTTPerrorSignificado
401INVALID_KEYChave ausente, malformada, revogada ou desconhecida
403PLAN_REQUIREDO dono da chave não é mais Pro (as chaves param de funcionar imediatamente após um downgrade)
400BAD_REQUESTJSON inválido, code vazio ou mode diferente de performance / dynamic
413PAYLOAD_TOO_LARGEO código-fonte excede 2 MB por solicitação
415UNSUPPORTED_MEDIA_TYPEContent-Type não é application/json
422COMPILE_FAILEDNão foi possível compilar o código-fonte (a execução não é cobrada)
429QUOTA_EXCEEDEDExecuções mensais esgotadas; a resposta inclui limit / remaining / resetAt
503ENGINE_UNAVAILABLE / TIMEOUTA engine está iniciando ou excedeu o tempo limite
503QUOTA_UNAVAILABLE / UNAVAILABLEO serviço de cota ou de chaves está temporariamente indisponível
Qualquer 503 pode ser repetido e nenhum é cobrado: aguarde o tempo indicado no cabeçalho Retry-After (em segundos, também no campo JSON retryAfter) e tente novamente
500INTERNAL_ERRORErro inesperado no servidor (a execução não é cobrada); tente novamente mais tarde

5. Exemplo com curl

curl -X POST https://vm.ldvmp.com/api/v1/obfuscate \
  -H "Authorization: Bearer $VEILVM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"code":"console.log(\"hello\")","mode":"performance"}'

6. Exemplo com Node.js

// Node.js 18+ (built-in fetch). Store the key in an environment variable, never in source.
import { readFile, writeFile } from "node:fs/promises";

const code = await readFile("input.js", "utf8");
const response = await fetch("https://vm.ldvmp.com/api/v1/obfuscate", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.VEILVM_API_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ code, mode: "dynamic" })
});
const data = await response.json();
if (!data.ok) throw new Error(`${response.status} ${data.error}: ${data.message}`);
await writeFile("output.js", data.output);
console.log(`${data.engine}: ${data.inputBytes} → ${data.outputBytes} bytes in ${data.ms} ms`);

7. Dicas de segurança

  • Nunca incorpore uma chave em código do navegador nem faça commit dela em um repositório; guarde-a em uma variável de ambiente no servidor.
  • Revogue uma chave na página da conta assim que suspeitar que ela foi exposta.
  • Solicitações comuns são processadas em memória, e seu código nunca é gravado em logs. Arquivos grandes são armazenados temporariamente em armazenamento privado e excluídos automaticamente em até 24 horas.
Voltar ao VEILVM
PreçosTermosPolítica de reembolsoPolítica de privacidadeDocumentação da APIJSVMP vs. ofuscadoresO que é JSVMP?