VVEILVMJAVASCRIPT OBFUSCATION
요금이용약관환불 정책개인정보처리방침API 문서

VEILVM · API

API 문서

최종 업데이트: 2026년 11월 3일

Pro 사용자(및 관리자)는 웹 워크스페이스와 동일한 JSVMP 난독화 엔진을 HTTP로 호출할 수 있습니다. 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 요청 1회당 최대 2 MB의 소스 코드를 보낼 수 있습니다.

3. 응답

성공하면 API는 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": "<code>", "message": "<details>" }를 반환합니다. 할당량 예시:

{ "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_REQUEST잘못된 JSON, 빈 code, 또는 mode가 performance / dynamic이 아님
413PAYLOAD_TOO_LARGE요청 1회의 소스 코드가 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 예제

// 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. 보안 팁

  • 키를 브라우저 코드에 넣거나 저장소에 커밋하지 마세요. 서버 측 환경 변수에 보관하세요.
  • 유출이 의심되면 즉시 계정 페이지에서 키를 폐기하세요.
  • 일반 요청은 메모리에서 처리되며 코드가 로그에 기록되지 않습니다. 큰 파일은 비공개 저장소에 임시로 보관되며 24시간 이내에 자동으로 삭제됩니다.
VEILVM으로 돌아가기
요금이용약관환불 정책개인정보처리방침API 문서JSVMP와 난독화 도구 비교JSVMP란?