InteeBuildDeveloper API
← Volver al StudioJSON /api/docsHealth

Panel para Desarrolladores

Compila, descompila, analiza y automatiza sin tocar la UI. Todo es API-first + `X-API-Key` opcional. Base URL:

REST JSON CORS abierto Rate 10/h por IP Webhook + Polling
Autenticación

Si no hay keys, la API es pública. Si creas al menos una key, POST /api/v1/build exige X-API-Key o Authorization: Bearer ib_.... Genera y gestiona keys abajo. Las keys se guardan en data/apikeys.json (ignorado en git, no se sube).

curl -H "X-API-Key: ib_xxx" https://TU_DOMINIO/api/v1/build -d '{"url":"https://example.com","name":"MiApp"}'
Endpoints
POST /api/build compilar

Body `appName, url|htmlCode, packageName, permissions{}, plugins{}, compileSdk, outputType (apk/aab/both), platform` → {id, branch, status} 202. Usa `token GitHub` en servidor.

curl -X POST /api/build -H "Content-Type: application/json" -d '{"appName":"Mi Tienda","url":"https://mi-tienda.com","packageName":"com.miempresa.miapp","permissions":{"gps":true,"cameraMic":true}}'
POST /api/v1/build API key

Alias de `/api/build` con auth si hay keys. Campos `url, name, package, output, permissions, plugins, webhookUrl`.

curl -X POST /api/v1/build -H "X-API-Key: ib_xxx" -H "Content-Type: application/json" -d '{"url":"https://example.com","name":"MiApp","package":"com.example.app"}'
GET /api/build/:id + GET /api/v1/build/:id

Polling cada 3s: `status queued|building|success|failed`, `step`, `runUrl`, `apkUrl`.

curl /api/build/abc123 # → {"id":"abc123","status":"success","apkUrl":"/api/download/abc123"}
GET /api/download/:id APK /aab /ipa

Descarga directa ZIP→APK/AAB. Si no hay `runId` → 404 aún en progreso.

POST /api/project ZIP

Genera proyecto nativo ZIP sin compilar en GitHub. Útil para CI local.

curl -X POST /api/project -H "Content-Type: application/json" -d '{"appName":"Test","url":"https://example.com"}' --output proyecto.zip
GET /api/analyze?url= + POST /api/analyze/html + POST /api/analyze/fix

Security `score/level/issues`, `errors/warnings`, `optimization grade/tips`, `autoFix preview`. Para HTML directo usa `POST`.

curl "/api/analyze?url=https://example.com" curl -X POST /api/analyze/html -d '{"html":"..."}'
POST /api/decompile APK

Sube APK (`apkBase64` dataURL/base64 o `octet-stream` raw, max 30MB) → extrae `packageName, permissions, hasDex, fileCount, manifestPreview, importConfig` (re-importable en Studio).

curl -X POST /api/decompile -H "Content-Type: application/json" -d '{"apkBase64":"data:application/vnd.android.package-archive;base64,UEs..."}'
API Keys `GET /api/keys` `POST /api/keys {name}` `DELETE /api/keys/:id` panel

Máx 10 keys. `keyMask` en listado, `key` solo al crear (cópiala).

Git `POST /api/git/connect {repo, branch}` `GET /api/git/integrations` `POST /api/git/webhook`

Conecta `usuario/repo#branch` → cada `push` dispara `startBuild`. Webhook: `{"repository":{"full_name":"u/r"},"ref":"refs/heads/main"}`

Otros `GET /api/health`, `GET /api/diag`, `GET /api/stats`, `GET /api/history`, `GET /api/qr/:id`, `GET /api/apk-info/:id`, `GET /api/docs`
Ejemplos

Node.js

const r=await fetch(base+'/api/v1/build',{method:'POST',headers:{'Content-Type':'application/json','X-API-Key':key},body:JSON.stringify({url:'https://example.com',name:'MiApp'})}); const {buildId}=await r.json(); let s; do{ await new Promise(r=>setTimeout(r,3000)); s=await (await fetch(base+'/api/v1/build/'+buildId)).json(); console.log(s.status, s.step);}while(s.status==='building') console.log(s.apkUrl)

Python

import requests, time r=requests.post(base+"/api/v1/build", headers={"X-API-Key":key}, json={"url":"https://example.com","name":"MiApp"}) bid=r.json()["buildId"] while True: s=requests.get(base+f"/api/v1/build/{bid}").json() print(s["status"]); if s["status"] not in ("queued","building"): break time.sleep(3)
🔑 API Keys

Crea hasta 10. Si existe al menos una, `v1/build` exige key.

🧪 Try API (compilar)
...
Decompilar APK

Sube APK ≤30MB, extrae package/permisos y genera `importConfig`.

...
Límites

• Rate 10 builds/h por IP
• HTML ≤500KB, icono ≤7MB, APK decompile ≤30MB
• CORS abierto (o `CORS_ORIGIN` en env)
• Webhook firma no requerida (valida repo/branch)
• `data/` y `.env` nunca se suben a git