Para que serve cada rota, o que ela recebe, o que responde e toda recusa que pode dar. O selo ao lado de uma operação diz se a versão que você pode baixar hoje a responde.
GET /v1/status
Na versão lançadaSe o Liminal está em execução e se alguém entrou na conta
A chamada mais barata que existe, e a que vale repetir enquanto você espera pelo app. Ela responde sem conta: um signedIn falso é um estado, não um erro.
Parâmetros
Nenhum.
Resposta
{
"status": "running",
"version": "<version>",
"signedIn": true
}
Recusas
- 401 invalid_key — A chave está ausente, malformada ou foi gerada de novo desde então.
GET /v1/profiles
Na versão lançadaOs perfis do catálogo, filtrados e paginados
Lê o mesmo catálogo que o app mostra. Os filtros se combinam, e todos são exatos, menos name, que corresponde a qualquer perfil cujo nome contenha o que você digitou, sem diferenciar maiúsculas de minúsculas.
Parâmetros
- pagequery · integer · opcional · de 1 a 1000000 · padrão: 1
- Qual página ler, contando a partir da primeira.
- pageSizequery · integer · opcional · de 1 a 100 · padrão: 100
- Quantos perfis uma página contém. O teto é o valor padrão.
- workspaceIdquery · string · opcional
- Somente os perfis desse espaço de trabalho.
- folderIdquery · string · opcional
- Somente os perfis dessa pasta.
- statusquery · string · opcional
- Somente os perfis nesse estado; running é o estado de um perfil aberto.
- namequery · string · opcional
- Somente os perfis cujo nome contenha isto, sem diferenciar maiúsculas de minúsculas.
Resposta
{
"page": 1,
"pageSize": 100,
"total": 1,
"items": [
"<profile>"
]
}
Recusas
- 401 invalid_key — A chave está ausente, malformada ou foi gerada de novo desde então.
- 403 not_signed_in — Ninguém entrou na conta no app; as operações do catálogo precisam de uma conta.
- 403 team_closed — A equipe ativa está fechada: renove o plano dela ou mude para outra equipe.
- 503 catalog_loading — O catálogo de perfis ainda está carregando. Pergunte de novo.
- 503 catalog_unavailable — O app não conseguiu abrir o catálogo de perfis.
- 400 invalid_pagination — page ou pageSize está fora do intervalo aceito.
GET /v1/profiles/{id}
Na versão lançadaUm perfil, com o proxy e a impressão digital dele
O mesmo objeto que a lista retorna, para um único identificador. O endereço do proxy é mostrado; a senha dele, nunca.
Parâmetros
- idpath · string · obrigatório
- O identificador do perfil, como as operações do catálogo o retornam.
Resposta
{
"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"
}
Recusas
- 401 invalid_key — A chave está ausente, malformada ou foi gerada de novo desde então.
- 403 not_signed_in — Ninguém entrou na conta no app; as operações do catálogo precisam de uma conta.
- 403 team_closed — A equipe ativa está fechada: renove o plano dela ou mude para outra equipe.
- 503 catalog_loading — O catálogo de perfis ainda está carregando. Pergunte de novo.
- 503 catalog_unavailable — O app não conseguiu abrir o catálogo de perfis.
- 404 profile_not_found — Não há nenhum perfil com esse identificador no catálogo.
POST /v1/profiles/{id}/start
Na versão lançadaAbrir um perfil e obter o endereço ao qual um driver se conecta
Inicia o perfil como o app faz — a impressão digital, o proxy, os cookies dele — e responde com o endereço CDP assim que o navegador está no ar. A chamada espera; ela não retorna uma tarefa para consultar depois.
Parâmetros
- idpath · string · obrigatório
- O identificador do perfil, como as operações do catálogo o retornam.
- debugPortbody · integer · opcional · de 1024 a 65534 · padrão: 0
- A porta à qual o endpoint CDP se vincula. Com 0 o app escolhe uma livre; qualquer outro valor precisa ser uma porta que o seu usuário consiga abrir.
- timeoutSecondsbody · integer · opcional · de 1 a 180 · padrão: 60
- Quanto tempo a chamada espera o perfil subir antes de desistir.
- maskAutomationbody · boolean · opcional · padrão: true
- Somente true é aceito. O mascaramento da automação não pode ser desligado: um perfil sob um script é o mesmo perfil que um site vê quando você o abre à mão.
Resposta
{
"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"
}
Recusas
- 401 invalid_key — A chave está ausente, malformada ou foi gerada de novo desde então.
- 403 not_signed_in — Ninguém entrou na conta no app; as operações do catálogo precisam de uma conta.
- 503 runtime_unavailable — O app não consegue iniciar nem parar um perfil neste momento.
- 403 team_closed — A equipe ativa está fechada: renove o plano dela ou mude para outra equipe.
- 503 catalog_loading — O catálogo de perfis ainda está carregando. Pergunte de novo.
- 503 catalog_unavailable — O app não conseguiu abrir o catálogo de perfis.
- 404 profile_not_found — Não há nenhum perfil com esse identificador no catálogo.
- 409 profile_already_running — O perfil já está aberto, a inicialização dele ainda está em andamento ou um endereço de driver entregue antes continua válido.
- 400 invalid_start_options — O corpo não é um objeto JSON.
- 400 invalid_port — debugPort não é 0 nem uma porta do intervalo aceito.
- 400 invalid_start_timeout — timeoutSeconds está fora do intervalo aceito.
- 400 masking_unavailable — maskAutomation foi enviado como false, o que o app não oferece.
- 409 port_in_use — A porta de depuração que você pediu está ocupada.
- 409 listen_failed — A porta de depuração não pôde ser aberta por outro motivo.
- 409 start_failed — O perfil não subiu. Um
detail seguro nomeia a etapa quando o app consegue dizê-la. - 409 proxy_unavailable — O perfil exige o proxy dele, e o proxy não respondeu.
- 502 start_failed — A preparação do perfil falhou antes de o navegador ser solicitado a iniciar.
- 503 cdp_unavailable — O perfil iniciou, mas o endpoint CDP dele não subiu.
- 504 start_timeout — O perfil não subiu dentro de timeoutSeconds.
POST /v1/profiles/{id}/attach-automation
Na versão lançadaObter um endereço de driver para um perfil que já está aberto
Para um perfil que você abriu à mão e agora quer conduzir. Não reinicia nada: a sessão, as abas e os cookies ficam como estão.
Parâmetros
- idpath · string · obrigatório
- O identificador do perfil, como as operações do catálogo o retornam.
- debugPortbody · integer · opcional · de 1024 a 65534 · padrão: 0
- A porta à qual o endpoint CDP se vincula. Com 0 o app escolhe uma livre; qualquer outro valor precisa ser uma porta que o seu usuário consiga abrir.
- timeoutSecondsbody · integer · opcional · de 1 a 180 · padrão: 60
- Quanto tempo a chamada espera o perfil subir antes de desistir.
- maskAutomationbody · boolean · opcional · padrão: true
- Somente true é aceito. O mascaramento da automação não pode ser desligado: um perfil sob um script é o mesmo perfil que um site vê quando você o abre à mão.
Resposta
{
"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"
}
Recusas
- 401 invalid_key — A chave está ausente, malformada ou foi gerada de novo desde então.
- 403 not_signed_in — Ninguém entrou na conta no app; as operações do catálogo precisam de uma conta.
- 503 runtime_unavailable — O app não consegue iniciar nem parar um perfil neste momento.
- 403 team_closed — A equipe ativa está fechada: renove o plano dela ou mude para outra equipe.
- 503 catalog_loading — O catálogo de perfis ainda está carregando. Pergunte de novo.
- 503 catalog_unavailable — O app não conseguiu abrir o catálogo de perfis.
- 404 profile_not_found — Não há nenhum perfil com esse identificador no catálogo.
- 409 profile_already_running — O perfil já está aberto, a inicialização dele ainda está em andamento ou um endereço de driver entregue antes continua válido.
- 400 invalid_start_options — O corpo não é um objeto JSON.
- 400 invalid_port — debugPort não é 0 nem uma porta do intervalo aceito.
- 400 invalid_start_timeout — timeoutSeconds está fora do intervalo aceito.
- 400 masking_unavailable — maskAutomation foi enviado como false, o que o app não oferece.
- 409 port_in_use — A porta de depuração que você pediu está ocupada.
- 409 listen_failed — A porta de depuração não pôde ser aberta por outro motivo.
- 409 start_failed — O perfil não subiu. Um
detail seguro nomeia a etapa quando o app consegue dizê-la. - 409 proxy_unavailable — O perfil exige o proxy dele, e o proxy não respondeu.
- 502 start_failed — A preparação do perfil falhou antes de o navegador ser solicitado a iniciar.
- 503 cdp_unavailable — O perfil iniciou, mas o endpoint CDP dele não subiu.
- 504 start_timeout — O perfil não subiu dentro de timeoutSeconds.
- 409 profile_not_running — O perfil não está aberto, então não há nada a que se conectar.
POST /v1/profiles/{id}/stop
Na versão lançadaFechar um perfil como a janela dele faria
Deixa a sessão terminar de gravar o estado. É a chamada a fazer entre execuções automatizadas no mesmo perfil.
Parâmetros
- idpath · string · obrigatório
- O identificador do perfil, como as operações do catálogo o retornam.
Resposta
{
"id": "<profile-id>",
"status": "closed"
}
Recusas
- 401 invalid_key — A chave está ausente, malformada ou foi gerada de novo desde então.
- 403 not_signed_in — Ninguém entrou na conta no app; as operações do catálogo precisam de uma conta.
- 503 runtime_unavailable — O app não consegue iniciar nem parar um perfil neste momento.
- 403 team_closed — A equipe ativa está fechada: renove o plano dela ou mude para outra equipe.
- 503 catalog_loading — O catálogo de perfis ainda está carregando. Pergunte de novo.
- 503 catalog_unavailable — O app não conseguiu abrir o catálogo de perfis.
- 404 profile_not_found — Não há nenhum perfil com esse identificador no catálogo.
- 409 profile_not_running — O perfil não está aberto, então não há nada para fechar.
- 409 stop_failed — O app não conseguiu fechar o perfil.
POST /v1/profiles/{id}/force-stop
Na versão lançadaFechar um perfil que não fecha
A mesma resposta, sem esperar a sessão se acomodar. Recorra a ela quando uma parada não retornou, não por hábito.
Parâmetros
- idpath · string · obrigatório
- O identificador do perfil, como as operações do catálogo o retornam.
Resposta
{
"id": "<profile-id>",
"status": "closed"
}
Recusas
- 401 invalid_key — A chave está ausente, malformada ou foi gerada de novo desde então.
- 403 not_signed_in — Ninguém entrou na conta no app; as operações do catálogo precisam de uma conta.
- 503 runtime_unavailable — O app não consegue iniciar nem parar um perfil neste momento.
- 403 team_closed — A equipe ativa está fechada: renove o plano dela ou mude para outra equipe.
- 503 catalog_loading — O catálogo de perfis ainda está carregando. Pergunte de novo.
- 503 catalog_unavailable — O app não conseguiu abrir o catálogo de perfis.
- 404 profile_not_found — Não há nenhum perfil com esse identificador no catálogo.
- 409 profile_not_running — O perfil não está aberto, então não há nada para fechar.
- 409 stop_failed — O app não conseguiu fechar o perfil.
GET /v1/running-profiles
Na versão lançadaO que está aberto agora e o que pode ser conduzido
Todo perfil que está aberto, tenha sido aberto por uma janela ou por uma chamada — startedBy diz qual —, com o endereço de driver quando há um disponível. Reconecte-se a partir daqui depois que o seu script reiniciar.
Parâmetros
Nenhum.
Resposta
{
"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"
}
]
}
Recusas
- 401 invalid_key — A chave está ausente, malformada ou foi gerada de novo desde então.
- 403 not_signed_in — Ninguém entrou na conta no app; as operações do catálogo precisam de uma conta.
- 403 team_closed — A equipe ativa está fechada: renove o plano dela ou mude para outra equipe.
- 503 catalog_loading — O catálogo de perfis ainda está carregando. Pergunte de novo.
- 503 catalog_unavailable — O app não conseguiu abrir o catálogo de perfis.