Documentación
/

Referencia de la API

Referencia de la API

Usa el paquete público javascript-obfuscator para compilaciones con la CLI y Node.js. Gestiona el streaming y las subidas de gran tamaño. Los clientes REST directos deben implementar el protocolo que se describe a continuación.

Ver

Using the Obfuscator.io API: API Keys, npm Package, CLI and Custom Presets

Ver en YouTube

Crea una clave de API en Configuración → Claves de API. Se requiere acceso Pro, Team o Business. Guarda la clave en tu servidor o en el almacén de secretos de tu CI, nunca en código del navegador. El paquete javascript-obfuscator recibe la clave como apiToken (--pro-api-token en la CLI); una solicitud REST directa la envía en la cabecera Authorization: Bearer. En un plan Team o Business, el propietario del equipo puede marcar Clave de servicio del equipo en el cuadro de diálogo Crear una clave de API; esa clave pertenece al equipo y no a una persona, así que sigue funcionando cuando los miembros se van.

Claves de API · Uso del paquete NPM

Solicitud

POST https://obfuscator.io/api/v1/obfuscate

Envía un JSON con code y options. Activa al menos una función Pro: vmObfuscation: true o parseHtml: true, directamente o mediante un preajuste. Fija el parámetro de consulta version para obtener compilaciones reproducibles; si lo omites, se usa la última versión. Acepta una versión exacta como 8.0.0 o un rango: ^8.0.0 sigue las nuevas versiones menores y de parche de 8.x, ~8.0.0 sigue las versiones de parche de 8.0.x, y un rango se resuelve a la versión más alta que coincida. Los rangos requieren un plan Team o Business.

options puede nombrar un preajuste en lugar de enumerar todas las opciones: establece optionsPreset en un preajuste integrado como vm-default (consulta Elegir preajustes) o en el alias para la API de un preajuste personalizado. Un preajuste integrado se aplica tal como lo define la versión del ofuscador solicitada, y un alias se resuelve con la misma visibilidad que el endpoint de preajustes. El preajuste es la base, y cualquier otra opción de la solicitud lo sobrescribe. Un nombre que no sea ninguna de las dos cosas hace que la solicitud falle con un error.

Si el propietario del equipo fuerza una versión o un preajuste, este prevalece sobre el version o las options de la solicitud para los miembros del equipo y las claves de servicio del equipo. Consulta Forzar una versión para tu equipo y Preajustes compartidos.

CabeceraValor
Content-Typeapplication/json
AuthorizationBearer YOUR_API_KEY

Código

Respuesta

Lee el cuerpo como JSON delimitado por saltos de línea (NDJSON). Una lectura de red puede partir una línea JSON o un carácter UTF-8. El progreso no equivale a la finalización: exige un mensaje result o chunk_end y conserva warnings.

Una salida pequeña llega en un único mensaje result. Una salida grande llega como mensajes chunk seguidos de chunk_end. Ambos mensajes finales incluyen version, la versión concreta del ofuscador que produjo la salida (útil cuando solicitaste un rango o el equipo fuerza una versión). warnings enumera las advertencias de ofuscación no fatales como { type, message, functionName? } y se omite cuando no hay ninguna, así que trata un campo ausente como una lista vacía. No se generan source maps para las compilaciones VM ni para la entrada HTML. Una compilación parseHtml de JavaScript puro con sourceMap: true devuelve uno en el campo sourceMap del mensaje final, o como chunks sourceMap cuando es grande.

Los fallos de la aplicación llegan como mensajes error dentro del stream, normalmente con HTTP 200. Comprueba tanto el estado HTTP como los errores del stream. Los endpoints de infraestructura y de subida pueden devolver respuestas HTTP distintas de 2xx.

Código

Código

JSON

Node.js (.mjs)

JavaScript

Código

Preajustes

GET https://obfuscator.io/api/v1/presets/{name}

Devuelve las opciones de un preajuste, listas para enviarse como options de la solicitud de ofuscación. Envía la misma cabecera Authorization: Bearer. El nombre se compara sin distinguir mayúsculas de minúsculas, y la respuesta es un único objeto JSON, no un stream. Los ejemplos de abajo están abreviados.

  • Preajustes integrados: {name} es un preajuste integrado como vm-default (consulta Elegir preajustes). El parámetro de consulta version selecciona la versión del ofuscador cuyo preajuste se devuelve; acepta los mismos valores que el endpoint de ofuscación y, por defecto, usa la versión más reciente. description y updatedAt son null.
  • Preajustes personalizados: {name} es el alias para la API definido en el diálogo de guardado de un preajuste personalizado en el panel, y options es la configuración guardada (todas las opciones, no solo las que cambiaron respecto a un preajuste). La visibilidad sigue la del panel: una clave de API resuelve los preajustes propios de su usuario y los compartidos por el propietario del equipo de ese usuario, y una clave de servicio del equipo resuelve los preajustes del propietario.

GET https://obfuscator.io/api/v1/presets/vm-default

JSON

GET https://obfuscator.io/api/v1/presets/production

JSON

EstadoSignificado
200El preajuste.
400El nombre no es válido (de 1 a 20 caracteres, letras a-z, dígitos, guiones o guiones bajos, y debe empezar por una letra o un dígito), o la version no es compatible.
401Clave de API ausente, no válida o caducada.
403Cuenta suspendida, sin suscripción activa o con un plan sin acceso a la API.
404No existe ningún preajuste integrado con este nombre en la versión solicitada, y la clave no puede ver ningún preajuste personalizado con este alias.
429Límite de frecuencia alcanzado; la solicitud comparte los cupos por usuario y por IP descritos en Límites y fallos.
500La búsqueda del preajuste falló en el servidor. Vuelve a intentarlo más tarde.

Los errores tienen la forma {"error": "..."}. Encontrarás ejemplos de uso para el paquete javascript-obfuscator y su CLI en Uso del paquete NPM.

Cuota

GET https://obfuscator.io/api/v1/quota

Devuelve cuánto uso le queda a tu plan, para que una compilación pueda comprobar antes de empezar que un conjunto de archivos cabe, en lugar de fallar a mitad. Envía la misma cabecera Authorization: Bearer. La respuesta es un único objeto JSON, no un stream, y la propia solicitud no cuenta para el uso.

JSON

  • remainingBytes: lo que aún puedes usar ahora mismo, el menor entre lo que queda hoy y lo que queda este mes. null cuando tu plan no tiene límite.
  • minBytesPerBuild: lo mínimo que cuenta una sola compilación.
  • daily y monthly: los bytes usados y el límite de cada ventana, o null cuando tu plan no tiene ese límite. resetsAt indica cuándo se reinicia la ventana, en ISO 8601 UTC: la ventana diaria a las 00:00 UTC, la mensual en tu fecha de facturación cada mes.
  • En un equipo, la clave de un miembro informa del uso mensual compartido del equipo y del uso diario propio del miembro. Una clave de servicio del equipo informa del uso del propietario del equipo.

Una compilación cuenta el tamaño de su código fuente en bytes (UTF-8), una sola vez, sean cuales sean las opciones que use, y como mínimo minBytesPerBuild. El tamaño de la salida no cuenta. En un archivo HTML compilado con parseHtml, solo cuentan los scripts seleccionados para ofuscar. Suma las compilaciones que vas a ejecutar y compara el total con remainingBytes.

Cuando se rechaza una compilación porque se ha agotado un límite, el mensaje error del stream incluye un errorCode:

JSON

errorCodeSignificado
dailyLimitSe ha agotado el límite diario. Vuelve a intentarlo después de daily.resetsAt.
monthlyLimitSe ha agotado el límite mensual. Vuelve a intentarlo después de monthly.resetsAt o mejora tu plan.
usageCheckFailedNo se pudo comprobar el uso. Vuelve a intentarlo en breve.

Estos tres códigos son estables. Otros errores también pueden incluir un errorCode; no te fíes de él.

EstadoSignificado
200La cuota.
401Clave de API ausente, no válida o caducada.
403Cuenta suspendida, sin suscripción activa o con un plan sin acceso a la API.
429Límite de frecuencia alcanzado; la solicitud comparte los cupos por usuario y por IP descritos en Límites y fallos.
500No se pudo leer el uso. Vuelve a intentarlo más tarde.

Límites y fallos

Los límites del plan se aplican al tamaño del código fuente y al uso. Mantén el cuerpo JSON serializado completo, incluidos el escapado y las opciones, por debajo de 4.4 MB. El código fuente más grande necesita subidas temporales, disponibles en Team y Business solo a través del paquete javascript-obfuscator. Consulta tus límites y tu uso actuales en el panel o con el endpoint de cuota. Solo cuentan para el uso las compilaciones que devuelven código ofuscado; una solicitud que termina con un error no cuenta.

La API admite 30 solicitudes por minuto por usuario, compartidas entre todas sus claves, y 100 solicitudes por minuto por IP. Las solicitudes de preajustes y de cuota cuentan para los mismos cupos que las solicitudes de ofuscación.

Los límites de frecuencia, los fallos de cuota y los streams interrumpidos deben detener la compilación. Reintenta de forma deliberada: una solicitud repetida puede consumir uso adicional. No publiques una salida parcial.

Pruebas y CI