VVEILVMJAVASCRIPT OBFUSCATION
PreciosTérminosPolítica de reembolsoPolítica de privacidadDocumentación de la API

VEILVM · API

Documentación de la API

Última actualización: 3 de noviembre de 2026

Los usuarios Pro (y los administradores) pueden llamar por HTTP a los mismos motores de ofuscación JSVMP que el espacio de trabajo web. Las llamadas a la API comparten la cuota mensual de ejecuciones con la aplicación web.

1. Crea una clave de API

Inicia sesión, abre Cuenta y crea una clave en Claves de API. Las claves empiezan por veil_live_ y solo se muestran una vez al crearlas. Solo guardamos un hash y no podemos recuperar una clave; si la pierdes, revócala y crea otra. Cada cuenta puede tener hasta 3 claves activas. Todas las claves dejan de funcionar de inmediato si el plan pasa a Free. La página de la cuenta muestra cuándo se usó cada clave por última vez.

2. Solicitud

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

  • Encabezado Authorization: Bearer <tu clave>
  • Encabezado Content-Type: application/json
  • Cuerpo { "code": "<código JavaScript>", "mode": "performance" | "dynamic" }: performance es la VM de alto rendimiento y dynamic, la VM dinámica
  • Cada solicitud a la API acepta hasta 2 MB de código fuente.

3. Respuesta

Si todo va bien, la API devuelve 200:

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

Los encabezados X-Quota-Limit y X-Quota-Remaining indican el límite de este mes y las ejecuciones restantes.

4. Errores

Todos los errores devuelven { "ok": false, "error": "<code>", "message": "<details>" }. Ejemplo de cuota:

{ "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_KEYClave ausente, mal formada, revocada o desconocida
403PLAN_REQUIREDEl propietario de la clave ya no es Pro (las claves dejan de funcionar de inmediato tras bajar de plan)
400BAD_REQUESTJSON no válido, code vacío o mode distinto de performance / dynamic
413PAYLOAD_TOO_LARGEEl código fuente supera los 2 MB por solicitud
415UNSUPPORTED_MEDIA_TYPEContent-Type no es application/json
422COMPILE_FAILEDNo se pudo compilar el código fuente (la ejecución no se cobra)
429QUOTA_EXCEEDEDSe agotaron las ejecuciones del mes; la respuesta incluye limit / remaining / resetAt
503ENGINE_UNAVAILABLE / TIMEOUTEl motor se está iniciando o se agotó el tiempo
503QUOTA_UNAVAILABLE / UNAVAILABLEEl servicio de cuotas o de claves no está disponible temporalmente
Todo 503 se puede reintentar y ninguno se cobra: espera lo que indique el encabezado Retry-After (en segundos, también en el campo JSON retryAfter) y vuelve a intentarlo
500INTERNAL_ERRORError inesperado del servidor (la ejecución no se cobra); vuelve a intentarlo más tarde

5. Ejemplo con 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. Ejemplo con 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. Consejos de seguridad

  • Nunca incluyas una clave en código del navegador ni la subas a un repositorio; guárdala en una variable de entorno del servidor.
  • Revoca una clave desde la página de la cuenta en cuanto sospeches que se ha filtrado.
  • Las solicitudes estándar se procesan en memoria y tu código nunca se escribe en los registros. Los archivos grandes se guardan temporalmente en almacenamiento privado y se eliminan automáticamente en un plazo de 24 horas.
Volver a VEILVM
PreciosTérminosPolítica de reembolsoPolítica de privacidadDocumentación de la APIJSVMP frente a ofuscadoresQué es JSVMP