Para qué sirve cada ruta, qué recibe, qué responde y cada rechazo que puede dar. La insignia junto a una operación indica si la compilación que puedes descargar hoy la responde.
GET /v1/status
En la compilación publicadaSi Liminal está en marcha y si alguien ha iniciado sesión
La llamada más barata que existe y la que conviene repetir mientras esperas a la app. Responde sin cuenta: un signedIn falso es un estado, no un error.
Parámetros
Ninguno.
Respuesta
{
"status": "running",
"version": "<version>",
"signedIn": true
}
Rechazos
- 401 invalid_key — La clave falta, está mal formada o se ha regenerado desde entonces.
GET /v1/profiles
En la compilación publicadaLos perfiles del catálogo, filtrados y paginados
Lee el mismo catálogo que muestra la app. Los filtros se combinan y todos son exactos salvo name, que coincide con cualquier perfil cuyo nombre contenga lo que escribiste, sin distinguir mayúsculas.
Parámetros
- pagequery · integer · opcional · de 1 a 1000000 · por defecto, 1
- Qué página leer, contando desde la primera.
- pageSizequery · integer · opcional · de 1 a 100 · por defecto, 100
- Cuántos perfiles contiene una página. El máximo es el valor por defecto.
- workspaceIdquery · string · opcional
- Solo los perfiles de ese espacio de trabajo.
- folderIdquery · string · opcional
- Solo los perfiles de esa carpeta.
- statusquery · string · opcional
- Solo los perfiles en ese estado; running es el estado de un perfil abierto.
- namequery · string · opcional
- Solo los perfiles cuyo nombre contenga esto, sin distinguir mayúsculas.
Respuesta
{
"page": 1,
"pageSize": 100,
"total": 1,
"items": [
"<profile>"
]
}
Rechazos
- 401 invalid_key — La clave falta, está mal formada o se ha regenerado desde entonces.
- 403 not_signed_in — Nadie ha iniciado sesión en la app; las operaciones del catálogo necesitan una cuenta.
- 403 team_closed — El equipo activo está cerrado: renueva su plan o cambia a otro equipo.
- 503 catalog_loading — El catálogo de perfiles aún se está cargando. Vuelve a preguntar.
- 503 catalog_unavailable — La app no pudo abrir el catálogo de perfiles.
- 400 invalid_pagination — page o pageSize está fuera del intervalo aceptado.
GET /v1/profiles/{id}
En la compilación publicadaUn perfil, con su proxy y su huella
El mismo objeto que devuelve la lista, para un solo identificador. La dirección del proxy se muestra; su contraseña, nunca.
Parámetros
- idpath · string · obligatorio
- El identificador del perfil, tal como lo devuelven las operaciones del catálogo.
Respuesta
{
"id": "<profile-id>",
"name": "Shop EU",
"workspaceId": "<workspace-id>",
"folderId": "<folder-id>",
"status": "running",
"health": "ok",
"proxy": {
"id": "<proxy-id>",
"name": "Residential DE",
"type": "socks5",
"host": "proxy.example.net",
"port": 1080,
"working": true,
"lastCheckedExternalIp": "203.0.113.10",
"lastCheckedCountryCode": "DE"
},
"fingerprint": {
"platform": "MacIntel",
"language": "de-DE",
"timezone": "Europe/Berlin"
},
"lastOpenedAt": "2026-09-30T08:15:00.000Z"
}
Rechazos
- 401 invalid_key — La clave falta, está mal formada o se ha regenerado desde entonces.
- 403 not_signed_in — Nadie ha iniciado sesión en la app; las operaciones del catálogo necesitan una cuenta.
- 403 team_closed — El equipo activo está cerrado: renueva su plan o cambia a otro equipo.
- 503 catalog_loading — El catálogo de perfiles aún se está cargando. Vuelve a preguntar.
- 503 catalog_unavailable — La app no pudo abrir el catálogo de perfiles.
- 404 profile_not_found — No hay ningún perfil con ese identificador en el catálogo.
POST /v1/profiles/{id}/start
En la compilación publicadaAbrir un perfil y obtener la dirección a la que se conecta un driver
Inicia el perfil como lo hace la app —su huella, su proxy, sus cookies— y responde con la dirección CDP cuando el navegador está listo. La llamada espera; no devuelve una tarea que haya que consultar.
Parámetros
- idpath · string · obligatorio
- El identificador del perfil, tal como lo devuelven las operaciones del catálogo.
- debugPortbody · integer · opcional · de 1024 a 65534 · por defecto, 0
- El puerto al que se enlaza el endpoint CDP. Con 0 la app elige uno libre; cualquier otro valor tiene que ser un puerto que tu usuario pueda abrir.
- timeoutSecondsbody · integer · opcional · de 1 a 180 · por defecto, 60
- Cuánto espera la llamada a que el perfil arranque antes de rendirse.
- maskAutomationbody · boolean · opcional · por defecto, true
- Solo se acepta true. El enmascaramiento de la automatización no se puede desactivar: un perfil manejado por un script es el mismo perfil que ve un sitio cuando lo abres a mano.
Respuesta
{
"id": "<profile-id>",
"status": "running",
"cdpDiscoveryUrl": "http://127.0.0.1:48361/devtools/<token>/json/version",
"cdpBrowserUrl": "ws://127.0.0.1:9222/devtools/browser/<token>",
"seleniumDebuggerUrl": "127.0.0.1:9222",
"chromedriverPath": "/Applications/Liminal.app/.../chromedriver",
"debugPort": 9222,
"debugAddress": "127.0.0.1:9222",
"externalIp": "203.0.113.10",
"countryCode": "DE"
}
Rechazos
- 401 invalid_key — La clave falta, está mal formada o se ha regenerado desde entonces.
- 403 not_signed_in — Nadie ha iniciado sesión en la app; las operaciones del catálogo necesitan una cuenta.
- 503 runtime_unavailable — La app no puede iniciar ni detener un perfil en este momento.
- 403 team_closed — El equipo activo está cerrado: renueva su plan o cambia a otro equipo.
- 503 catalog_loading — El catálogo de perfiles aún se está cargando. Vuelve a preguntar.
- 503 catalog_unavailable — La app no pudo abrir el catálogo de perfiles.
- 404 profile_not_found — No hay ningún perfil con ese identificador en el catálogo.
- 409 profile_already_running — El perfil ya está abierto, su inicio sigue en curso o una dirección de driver entregada antes sigue siendo válida.
- 400 invalid_start_options — El cuerpo no es un objeto JSON.
- 400 invalid_port — debugPort no es 0 ni un puerto del intervalo aceptado.
- 400 invalid_start_timeout — timeoutSeconds está fuera del intervalo aceptado.
- 400 masking_unavailable — maskAutomation se envió como false, algo que la app no ofrece.
- 409 port_in_use — El puerto de depuración que pediste está ocupado.
- 409 listen_failed — El puerto de depuración no se pudo abrir por otro motivo.
- 409 start_failed — El perfil no arrancó. Un
detail seguro nombra la etapa cuando la app puede decirla. - 409 proxy_unavailable — El perfil exige su proxy y el proxy no respondió.
- 502 start_failed — La preparación del perfil falló antes de pedirle al navegador que arrancara.
- 503 cdp_unavailable — El perfil arrancó, pero su endpoint CDP no llegó a estar disponible.
- 504 start_timeout — El perfil no arrancó dentro de timeoutSeconds.
POST /v1/profiles/{id}/attach-automation
En la compilación publicadaObtener una dirección de driver para un perfil que ya está abierto
Para un perfil que abriste a mano y ahora quieres manejar. No reinicia nada: la sesión, sus pestañas y sus cookies se quedan como están.
Parámetros
- idpath · string · obligatorio
- El identificador del perfil, tal como lo devuelven las operaciones del catálogo.
- debugPortbody · integer · opcional · de 1024 a 65534 · por defecto, 0
- El puerto al que se enlaza el endpoint CDP. Con 0 la app elige uno libre; cualquier otro valor tiene que ser un puerto que tu usuario pueda abrir.
- timeoutSecondsbody · integer · opcional · de 1 a 180 · por defecto, 60
- Cuánto espera la llamada a que el perfil arranque antes de rendirse.
- maskAutomationbody · boolean · opcional · por defecto, true
- Solo se acepta true. El enmascaramiento de la automatización no se puede desactivar: un perfil manejado por un script es el mismo perfil que ve un sitio cuando lo abres a mano.
Respuesta
{
"id": "<profile-id>",
"status": "running",
"cdpDiscoveryUrl": "http://127.0.0.1:48361/devtools/<token>/json/version",
"cdpBrowserUrl": "ws://127.0.0.1:9222/devtools/browser/<token>",
"seleniumDebuggerUrl": "127.0.0.1:9222",
"chromedriverPath": "/Applications/Liminal.app/.../chromedriver",
"debugPort": 9222,
"debugAddress": "127.0.0.1:9222",
"externalIp": "203.0.113.10",
"countryCode": "DE"
}
Rechazos
- 401 invalid_key — La clave falta, está mal formada o se ha regenerado desde entonces.
- 403 not_signed_in — Nadie ha iniciado sesión en la app; las operaciones del catálogo necesitan una cuenta.
- 503 runtime_unavailable — La app no puede iniciar ni detener un perfil en este momento.
- 403 team_closed — El equipo activo está cerrado: renueva su plan o cambia a otro equipo.
- 503 catalog_loading — El catálogo de perfiles aún se está cargando. Vuelve a preguntar.
- 503 catalog_unavailable — La app no pudo abrir el catálogo de perfiles.
- 404 profile_not_found — No hay ningún perfil con ese identificador en el catálogo.
- 409 profile_already_running — El perfil ya está abierto, su inicio sigue en curso o una dirección de driver entregada antes sigue siendo válida.
- 400 invalid_start_options — El cuerpo no es un objeto JSON.
- 400 invalid_port — debugPort no es 0 ni un puerto del intervalo aceptado.
- 400 invalid_start_timeout — timeoutSeconds está fuera del intervalo aceptado.
- 400 masking_unavailable — maskAutomation se envió como false, algo que la app no ofrece.
- 409 port_in_use — El puerto de depuración que pediste está ocupado.
- 409 listen_failed — El puerto de depuración no se pudo abrir por otro motivo.
- 409 start_failed — El perfil no arrancó. Un
detail seguro nombra la etapa cuando la app puede decirla. - 409 proxy_unavailable — El perfil exige su proxy y el proxy no respondió.
- 502 start_failed — La preparación del perfil falló antes de pedirle al navegador que arrancara.
- 503 cdp_unavailable — El perfil arrancó, pero su endpoint CDP no llegó a estar disponible.
- 504 start_timeout — El perfil no arrancó dentro de timeoutSeconds.
- 409 profile_not_running — El perfil no está abierto, así que no hay nada a lo que conectarse.
POST /v1/profiles/{id}/stop
En la compilación publicadaCerrar un perfil como lo haría su ventana
Deja que la sesión termine de escribir su estado. Es la llamada que conviene hacer entre ejecuciones automatizadas sobre el mismo perfil.
Parámetros
- idpath · string · obligatorio
- El identificador del perfil, tal como lo devuelven las operaciones del catálogo.
Respuesta
{
"id": "<profile-id>",
"status": "closed"
}
Rechazos
- 401 invalid_key — La clave falta, está mal formada o se ha regenerado desde entonces.
- 403 not_signed_in — Nadie ha iniciado sesión en la app; las operaciones del catálogo necesitan una cuenta.
- 503 runtime_unavailable — La app no puede iniciar ni detener un perfil en este momento.
- 403 team_closed — El equipo activo está cerrado: renueva su plan o cambia a otro equipo.
- 503 catalog_loading — El catálogo de perfiles aún se está cargando. Vuelve a preguntar.
- 503 catalog_unavailable — La app no pudo abrir el catálogo de perfiles.
- 404 profile_not_found — No hay ningún perfil con ese identificador en el catálogo.
- 409 profile_not_running — El perfil no está abierto, así que no hay nada que cerrar.
- 409 stop_failed — La app no pudo cerrar el perfil.
POST /v1/profiles/{id}/force-stop
En la compilación publicadaCerrar un perfil que no se cierra
La misma respuesta, sin esperar a que la sesión se asiente. Recurre a ella cuando una parada no ha vuelto, no por costumbre.
Parámetros
- idpath · string · obligatorio
- El identificador del perfil, tal como lo devuelven las operaciones del catálogo.
Respuesta
{
"id": "<profile-id>",
"status": "closed"
}
Rechazos
- 401 invalid_key — La clave falta, está mal formada o se ha regenerado desde entonces.
- 403 not_signed_in — Nadie ha iniciado sesión en la app; las operaciones del catálogo necesitan una cuenta.
- 503 runtime_unavailable — La app no puede iniciar ni detener un perfil en este momento.
- 403 team_closed — El equipo activo está cerrado: renueva su plan o cambia a otro equipo.
- 503 catalog_loading — El catálogo de perfiles aún se está cargando. Vuelve a preguntar.
- 503 catalog_unavailable — La app no pudo abrir el catálogo de perfiles.
- 404 profile_not_found — No hay ningún perfil con ese identificador en el catálogo.
- 409 profile_not_running — El perfil no está abierto, así que no hay nada que cerrar.
- 409 stop_failed — La app no pudo cerrar el perfil.
GET /v1/running-profiles
En la compilación publicadaQué está abierto ahora mismo y qué se puede manejar
Cada perfil que está abierto, lo haya abierto una ventana o una llamada —startedBy dice cuál—, con su dirección de driver cuando hay una disponible. Reconéctate desde aquí después de que tu script se reinicie.
Parámetros
Ninguno.
Respuesta
{
"items": [
{
"id": "<profile-id>",
"workspaceId": "<workspace-id>",
"status": "running",
"automationAvailable": true,
"startedBy": "api",
"cdpBrowserUrl": "ws://127.0.0.1:9222/devtools/browser/<token>",
"seleniumDebuggerUrl": "127.0.0.1:9222",
"chromedriverPath": "/Applications/Liminal.app/.../chromedriver",
"debugPort": 9222,
"debugAddress": "127.0.0.1:9222"
}
]
}
Rechazos
- 401 invalid_key — La clave falta, está mal formada o se ha regenerado desde entonces.
- 403 not_signed_in — Nadie ha iniciado sesión en la app; las operaciones del catálogo necesitan una cuenta.
- 403 team_closed — El equipo activo está cerrado: renueva su plan o cambia a otro equipo.
- 503 catalog_loading — El catálogo de perfiles aún se está cargando. Vuelve a preguntar.
- 503 catalog_unavailable — La app no pudo abrir el catálogo de perfiles.