VVEILVMJAVASCRIPT OBFUSCATION
定价服务条款退款政策隐私政策API 文档

VEILVM · API 文档

API 文档

最后更新:2026 年 11 月 3 日

Pro 用户(及管理员)可以通过 HTTP API 调用与网页工作台相同的 JSVMP 混淆引擎。API 调用与网页共用每月处理次数。

1. 创建 API 密钥

登录后打开「账户」,在「API 密钥」中创建。密钥以 veil_live_ 开头,只在创建时显示一次,我们只保存其哈希,无法找回;丢失请撤销后重新创建。每个账户最多同时保留 3 把密钥。套餐降为 Free 后所有密钥立即失效。账户页会显示每把密钥的最近使用时间。

2. 请求

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

  • 请求头 Authorization: Bearer <你的密钥>
  • 请求头 Content-Type: application/json
  • 请求体 { "code": "<JavaScript 源码>", "mode": "performance" | "dynamic" }: performance 为高性能 VM,dynamic 为动态 VM
  • API 单次请求最多可提交 2 MB 源代码。

3. 响应

成功时返回 200:

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

响应头 X-Quota-Limit / X-Quota-Remaining 给出本月上限与剩余次数。

4. 错误

所有错误都返回 { "ok": false, "error": "<代码>", "message": "<说明>" }。超额示例:

{ "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" }
HTTPerror说明
401INVALID_KEY缺少密钥、格式错误、已撤销或不存在
403PLAN_REQUIRED密钥所属账户已不是 Pro(降级后密钥立即失效)
400BAD_REQUESTJSON 无效、code 为空或 mode 不是 performance / dynamic
413PAYLOAD_TOO_LARGE单次源码超过 2 MB
415UNSUPPORTED_MEDIA_TYPEContent-Type 不是 application/json
422COMPILE_FAILED源码无法编译(不扣次数)
429QUOTA_EXCEEDED本月次数已用完,响应带 limit / remaining / resetAt
503ENGINE_UNAVAILABLE / TIMEOUT混淆引擎正在启动或处理超时
503QUOTA_UNAVAILABLE / UNAVAILABLE额度或密钥服务暂时不可用
所有 503 响应都可重试,且均不扣次数:等待 Retry-After 头给出的秒数(JSON 字段 retryAfter 中也有)后再重试
500INTERNAL_ERROR服务器内部错误(不扣次数),可稍后重试

5. 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. Node.js 示例

(same, English in zh page)
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. 安全建议

  • 不要把密钥写进前端代码或提交到仓库,请放在服务端环境变量中。
  • 怀疑泄露时立即在账户页撤销。
  • 普通请求只在内存中处理,代码内容不会写入日志;大文件临时存放在私有存储中,24 小时内自动删除。
返回 VEILVM
定价服务条款退款政策隐私政策API 文档JSVMP 与混淆器对比什么是 JSVMP