VVEILVMJAVASCRIPT OBFUSCATION
PreiseBedingungenErstattungsrichtlinieDatenschutzerklärungAPI-Dokumentation

VEILVM · API

API-Dokumentation

Zuletzt aktualisiert: 3. November 2026

Pro-Nutzer (und Admins) können dieselben JSVMP-Obfuskierungs-Engines wie der Web-Workspace über HTTP aufrufen. API-Aufrufe teilen sich das monatliche Laufkontingent mit der Web-App.

1. API-Schlüssel erstellen

Melde dich an, öffne „Konto“ und erstelle unter „API-Schlüssel“ einen Schlüssel. Schlüssel beginnen mit veil_live_ und werden bei der Erstellung nur einmal angezeigt. Wir speichern nur einen Hash und können einen Schlüssel nicht wiederherstellen; wenn du ihn verlierst, widerrufe ihn und erstelle einen neuen. Jedes Konto kann bis zu 3 aktive Schlüssel haben. Alle Schlüssel funktionieren sofort nicht mehr, wenn der Tarif auf Free zurückfällt. Auf der Kontoseite siehst du, wann jeder Schlüssel zuletzt verwendet wurde.

2. Anfrage

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

  • Header Authorization: Bearer <dein Schlüssel>
  • Header Content-Type: application/json
  • Body { "code": "<JavaScript-Quellcode>", "mode": "performance" | "dynamic" }: performance ist die Hochleistungs-VM, dynamic die dynamische VM
  • Jede API-Anfrage akzeptiert bis zu 2 MB Quellcode.

3. Antwort

Bei Erfolg gibt die API 200 zurück:

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

Die Header X-Quota-Limit und X-Quota-Remaining geben das Limit dieses Monats und die verbleibenden Läufe an.

4. Fehler

Jeder Fehler liefert { "ok": false, "error": "<code>", "message": "<details>" }. Beispiel für das Kontingent:

{ "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" }
HTTPerrorBedeutung
401INVALID_KEYSchlüssel fehlt, ist fehlerhaft, widerrufen oder unbekannt
403PLAN_REQUIREDDer Schlüsselinhaber ist nicht mehr Pro (Schlüssel funktionieren nach einem Downgrade sofort nicht mehr)
400BAD_REQUESTUngültiges JSON, leerer code oder mode ist nicht performance / dynamic
413PAYLOAD_TOO_LARGEDer Quellcode überschreitet 2 MB pro Anfrage
415UNSUPPORTED_MEDIA_TYPEContent-Type ist nicht application/json
422COMPILE_FAILEDDer Quellcode konnte nicht kompiliert werden (der Lauf wird nicht berechnet)
429QUOTA_EXCEEDEDMonatliche Läufe aufgebraucht; die Antwort enthält limit / remaining / resetAt
503ENGINE_UNAVAILABLE / TIMEOUTDie Engine startet gerade oder hat das Zeitlimit überschritten
503QUOTA_UNAVAILABLE / UNAVAILABLEDer Kontingent- oder Schlüsseldienst ist vorübergehend nicht verfügbar
Jeder 503 kann wiederholt werden und keiner wird berechnet: Warte die im Header Retry-After angegebene Zeit ab (Sekunden, auch im JSON-Feld retryAfter) und versuche es dann erneut
500INTERNAL_ERRORUnerwarteter Serverfehler (der Lauf wird nicht berechnet); versuche es später erneut

5. curl-Beispiel

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-Beispiel

// 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. Sicherheitstipps

  • Bette einen Schlüssel niemals in Browser-Code ein und committe ihn nicht in ein Repository; bewahre ihn in einer serverseitigen Umgebungsvariable auf.
  • Widerrufe einen Schlüssel auf der Kontoseite, sobald du vermutest, dass er offengelegt wurde.
  • Standardanfragen werden im Arbeitsspeicher verarbeitet, und dein Code wird niemals in Logs geschrieben. Große Dateien werden vorübergehend in privatem Speicher abgelegt und innerhalb von 24 Stunden automatisch gelöscht.
Zurück zu VEILVM
PreiseBedingungenErstattungsrichtlinieDatenschutzerklärungAPI-DokumentationJSVMP vs. ObfuscatorenWas ist JSVMP?