Referencia de la API de Clousd.
Todas las rutas de la API v1 de Clousd, 71 operaciones, agrupadas tal como las vas a usar. Los parámetros, los cuerpos de las solicitudes y las respuestas están en el archivo OpenAPI.
Cada solicitud
# base URL https://api.clousd.com/v1 # header Authorization: Bearer cl_live_your_key # errors are JSON { "error": "busy", "message": "…" }
Todas las rutas.
Lo básico
| Qué | Valor | Notas |
|---|---|---|
| URL base | https://api.clousd.com/v1 | Solo HTTPS, JSON de entrada y de salida |
| Autenticación | Authorization: Bearer cl_live_… | Las claves se crean en el panel, con permiso read o control y una lista de dispositivos |
| Operaciones largas | 202 Accepted → GET /v1/jobs/{id} | Crear, iniciar, restaurar y llamadas similares devuelven un trabajo que se consulta |
| Errores | { "error": "busy", "message": "…" } | Un código corto para tu lógica y un mensaje para personas |
| Especificación completa | openapi-v1.yaml | OpenAPI 3.1 con parámetros, cuerpos y respuestas |
Tareas
| Método | Ruta | Qué hace |
|---|---|---|
| GET | /v1/schedules | Horarios de esta clave |
| POST | /v1/schedules | Una tarea que se ejecuta sola: a diario, cada hora o cuando la llamas |
| POST | /v1/schedules/{id}/toggle | Pausar o reanudar un horario |
| POST | /v1/schedules/{id}/delete | Eliminar un horario |
| POST | /v1/runs | Dar a uno o varios teléfonos una tarea en palabras simples |
| GET | /v1/runs | Ejecuciones de esta clave, las más recientes primero |
| GET | /v1/runs/{id} | Una ejecución: estado, answer, structured_output y la tarjeta en la que espera |
| DELETE | /v1/runs/{id} | Eliminar una ejecución terminada con sus pasos y capturas |
| GET | /v1/runs/{id}/events | Eventos en vivo como Server-Sent Events |
| GET | /v1/runs/{id}/trajectory | Cada paso: herramienta, objetivo, resultado y si se guardó la pantalla |
| GET | /v1/runs/{id}/steps/{n}.jpg | La pantalla antes del paso n |
| POST | /v1/runs/{id}/answer | Responder a la tarjeta de la ejecución: una pregunta (answer) o un permiso (allow / decline) |
| POST | /v1/runs/{id}/message | Decirle algo al agente en marcha; lo lee antes del siguiente paso |
| POST | /v1/runs/{id}/cancel | Detener la ejecución |
| POST | /v1/schedules/{id}/run | Iniciar un horario ahora: el disparador para trigger=api |
| GET | /v1/credentials | Accesos guardados: paquete, nombre y qué campos están definidos; los valores nunca se devuelven |
| POST | /v1/credentials | Guardar un acceso para una app |
| POST | /v1/credentials/{id}/fields | Definir un campo de un acceso |
| DELETE | /v1/credentials/{id}/fields/{type} | Quitar un campo de un acceso |
| DELETE | /v1/credentials/{id} | Eliminar un acceso |
Dispositivos
| Método | Ruta | Qué hace |
|---|---|---|
| GET | /v1/devices | Dispositivos que ve esta clave |
| POST | /v1/devices | Crear un dispositivo (se cobra a la cuenta de la clave de API) |
| GET | /v1/devices/{name} | Un dispositivo |
| POST | /v1/devices/{name}/start | Iniciar el dispositivo |
| POST | /v1/devices/{name}/stop | Detener el dispositivo (el estado se conserva; un dispositivo detenido no cuesta nada) |
| POST | /v1/devices/{name}/restart | Reiniciar el dispositivo |
| GET | /v1/devices/{name}/ice | Servidores ICE para un visor WebRTC de este dispositivo: el TURN del host del dispositivo con una credencial temporal (basta una clave read) |
| GET | /v1/devices/{name}/quality | Calidad por categoría (última medición) |
| POST | /v1/devices/{name}/reset | Restablecer el dispositivo a un estado limpio: se borran apps y datos y el teléfono vuelve como nuevo (mismo modelo y Android, 1-5 min) |
| GET | /v1/devices/{name}/screenrecord | Grabar la pantalla unos segundos |
| POST | /v1/devices/{name}/label | Dar al teléfono un nombre que personas y agentes puedan distinguir (“Pixel QA”); vacío = vuelve a “Modelo #N” |
| GET | /v1/balance | El dinero de la cuenta: saldo, gasto por día, horas restantes, renovaciones y avisos para mostrar al usuario |
| GET | /v1/models | Modelos con los que puedes crear dispositivos |
Agentes de IA
| Método | Ruta | Qué hace |
|---|---|---|
| GET | /v1/devices/{name}/observe | Una mirada nueva al teléfono: captura, árbol de la interfaz y la app en pantalla en una sola llamada |
| POST | /v1/devices/{name}/act | Una acción y luego esperar a que la pantalla deje de cambiar |
| POST | /v1/devices/{name}/op | Una primitiva del núcleo (el protocolo del núcleo de Lusiesta, uno a uno) |
Pantalla y entrada
| Método | Ruta | Qué hace |
|---|---|---|
| GET | /v1/devices/{name}/screenshot | Pantalla en PNG; con w, un JPEG más pequeño (en caché hasta 10 s; usa /observe para un fotograma nuevo) |
| POST | /v1/devices/{name}/action | Una acción en el teléfono (sin esperar) |
| POST | /v1/devices/{name}/input | Toque, tecla, texto, desplazamiento, portapapeles, rotación (requiere una sesión de transmisión en vivo) |
| GET | /v1/devices/{name}/logs | Últimas líneas de logcat |
| GET | /v1/devices/{name}/stream | Cifras de la transmisión en vivo: fps, tasa de bits, retraso del visor, nivel ABR (basta una clave read) |
| POST | /v1/devices/{name}/stream | WebRTC: entra una oferta SDP, sale una respuesta SDP; un cuerpo con bitrate_kbps fija en su lugar el nivel de calidad (clave control) |
| POST | /v1/devices/{name}/stream/probe | Prueba de latencia para un visor en vivo: baja la barra de notificaciones 600 ms y devuelve el reloj del gateway (clave control, como máximo una vez cada 5 s por dispositivo) |
Red
| Método | Ruta | Qué hace |
|---|---|---|
| GET | /v1/devices/{name}/network | País de red del dispositivo |
| POST | /v1/devices/{name}/network | Definir el país desde el que se conecta el dispositivo (la zona horaria y el idioma lo siguen) |
| GET | /v1/network/options | Qué se puede elegir ahora al crear un dispositivo: países y planes |
Apps
| Método | Ruta | Qué hace |
|---|---|---|
| POST | /v1/devices/{name}/apk | Instalar un APK |
| GET | /v1/apps | Catálogo de apps: lo que se puede instalar ahora |
| GET | /v1/devices/{name}/apps | Apps del catálogo instaladas en el dispositivo |
| POST | /v1/devices/{name}/apps | Instalar una app del catálogo (clave control) |
ADB
| Método | Ruta | Qué hace |
|---|---|---|
| GET | /v1/devices/{name}/adb | Estado de la sesión ADB |
| POST | /v1/devices/{name}/adb | Abrir una sesión ADB a través del relé (código |
| DELETE | /v1/devices/{name}/adb | Cerrar la sesión ADB |
Archivos y medios
| Método | Ruta | Qué hace |
|---|---|---|
| PUT | /v1/devices/{name}/files | Poner un archivo en el teléfono (push): el cuerpo es el archivo, ruta en /sdcard/ o /data/local/tmp/ |
| POST | /v1/devices/{name}/media | Medios de la biblioteca en el teléfono como si se hubieran tomado con él (push), quitar lo que pusimos (clean) o listarlo |
| GET | /v1/media | La biblioteca de medios: fotos y videos con sus id |
| POST | /v1/media | Subir una foto o un video: {name, data_b64, folder}, hasta 25 MB |
| POST | /v1/media/send | Copiar archivos de la biblioteca a las galerías de los teléfonos |
Webhooks
| Método | Ruta | Qué hace |
|---|---|---|
| GET | /v1/webhooks | Webhooks de esta clave y eventos a los que puedes suscribirte (run.completed / failed / cancelled / waiting, device.problem / resolved) |
| POST | /v1/webhooks | Suscribir una URL https |
| GET | /v1/webhooks/{id} | Un webhook |
| DELETE | /v1/webhooks/{id} | Eliminarlo |
| POST | /v1/webhooks/{id}/rotate | Secreto nuevo (se muestra una vez) |
| POST | /v1/webhooks/{id}/toggle | Pausar o reanudar los envíos |
| POST | /v1/webhooks/{id}/test | Enviar ahora un evento de prueba |
| GET | /v1/webhooks/{id}/deliveries | Envíos recientes con estado y tiempo de respuesta |
Cuenta
| Método | Ruta | Qué hace |
|---|---|---|
| GET | /v1/usage | Minutos encendido por dispositivo y por día (UTC) durante un mes |
| GET | /v1/incidents | Incidentes en tus dispositivos (los últimos 100, los más recientes primero) |
| GET | /v1/health | Estado de tus dispositivos (medido cada 5 minutos) |
| GET | /v1/jobs | Últimos 50 trabajos de tus dispositivos |
| GET | /v1/jobs/{id} | Estado de una operación larga |