Live Copiloto/Developers
Documentação Visão geral

Sua live.
Suas integrações.

Leve os dados do Live Copiloto para suas ferramentas. Acompanhe o chat, consulte métricas e controle o copiloto com uma API simples.

REST Requisições HTTPJSON Entrada e saídaBearer Chaves por conta

Da chave à primeira resposta.

Crie uma chave no painel, guarde-a no seu servidor e faça uma consulta. Os exemplos usam dados demonstrativos.

  1. Crie uma chaveEscolha leitura ou leitura e escrita em Developers.
  2. Defina suas variáveisGuarde a chave em LIVE_COPILOTO_API_KEY e a URL base em LIVE_COPILOTO_API_URL.
  3. Consulte suas conexõesUse o ID retornado para acessar a live e seu histórico.
Primeira requisição · cURL
curl "$LIVE_COPILOTO_API_URL/connections" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
URL base
https://app.livecopiloto.com/api/v1

Configure a URL da sua instalação. Use HTTPS em produção.

Autenticação

Envie a chave em cada requisição no cabeçalho Authorization. Cookies de login e chaves na URL não autenticam a API.

Somente leitura
Permite todos os endpoints GET.
Leitura e escrita
Inclui controle da escuta, respostas e envio/desconexão do TikTok.

A chave completa aparece apenas na criação. Ela expira em 30, 90 ou 365 dias e pode ser revogada a qualquer momento. Cada conta pode ter até 10 chaves ativas.

Seu servidor guarda a chave.

Não coloque chaves em páginas públicas, aplicativos distribuídos ou repositórios. Todas as chamadas ficam restritas aos recursos da conta que criou a chave, inclusive contas administrativas.

Authorization: Bearer lc_…

Paginação e atualizações

As listas paginadas retornam até 50 itens por padrão, em ordem crescente de ID. O histórico de envios TikTok retorna apenas os últimos 50, sem paginação. Use limit entre 1 e 100 e passe pagination.nextAfterId em afterId enquanto hasMore for verdadeiro.

Para acompanhar o chat, consulte eventos a cada 5 segundos com o último ID recebido. Se a sessão mudar, use o novo liveSessionId do endpoint de estado e reinicie o cursor.

Próxima página
GET /api/v1/sessions/42/events?limit=50&afterId=120

{
  "data": [],
  "pagination": {
    "limit": 50,
    "hasMore": false,
    "nextAfterId": null
  }
}

Limites e erros previsíveis.

Até 120 requisições por minuto por chave e por processo. Respostas incluem X-RateLimit-Limit, X-RateLimit-Remaining e X-Request-Id. Em caso de 429, respeite Retry-After antes de tentar novamente. Tentativas de autenticação inválidas têm limite separado de 60 por minuto por IP.

400JSON ou URL inválida
401Chave inválida ou expirada
403Permissão de escrita necessária
404Recurso não encontrado
409Ação incompatível com o estado atual
413Corpo acima de 64 KB
415Formato diferente de JSON
422Parâmetros inválidos
429Limite de requisições atingido
500Falha interna; tente novamente
{ "error": { "code": "insufficient_scope", "message": "Crie uma chave com permissão de leitura e escrita para esta ação.", "requestId": "…" } }

Configure as conexões e as credenciais das plataformas no painel. O envio ao TikTok LIVE é experimental e exige uma conta conectada. YouTube e Twitch oferecem leitura e overlay. Instagram, Kwai, Facebook e X / Twitter estão em breve; tentativas de iniciar a escuta retornam 409 com o código platform_unavailable. Esta versão não oferece cadastro/exclusão de conexões nem webhooks de saída.

Referência dos endpoints

17 operações · v1

TikTok LIVE

Consultar sessão do TikTok

GET/api/v1/connections/{id}/chat-session

Consulte se há uma sessão salva e abra loginUrl no painel para entrar no TikTok. sessionStored não garante que a sessão ainda esteja válida. A conta conectada publica; o @ da conexão identifica a LIVE de destino.

Permissão: leitura

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.
Campos da resposta ChatSession
connectionId
integer
sessionStored
boolean
simulate
boolean
loginUrl
string
Requisição · cURL
curl "$LIVE_COPILOTO_API_URL/connections/1/chat-session" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": {
    "connectionId": 1,
    "sessionStored": true,
    "simulate": false,
    "loginUrl": "/app/conexoes/1/conta"
  }
}

TikTok LIVE

Desconectar conta do TikTok

DELETE/api/v1/connections/{id}/chat-session

Remove cookies e armazenamento de login e cancela tentativas em andamento. Uma mensagem já submetida pode ter sido entregue; confira seu resultado no histórico.

Permissão: leitura e escrita

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.
Requisição · cURL
curl -X DELETE "$LIVE_COPILOTO_API_URL/connections/1/chat-session" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
204 Resposta de exemplo
Sem corpo de resposta.

TikTok LIVE

Listar envios ao TikTok

GET/api/v1/connections/{id}/messages

Retorna os últimos 50 envios desta conexão, do mais recente para o mais antigo, sem paginação. Inclui mensagens do painel e da API. sent exige confirmação com identificador; unknown exige conferência no TikTok, sem reenvio automático.

Permissão: leitura

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.
Campos da resposta ChatMessage
id
uuid
connectionId
integer
text
string
status
sending · sent · failed · unknown
remoteMessageId
string ou null
errorCode
string ou null
createdAt
date-time
updatedAt
date-time
Requisição · cURL
curl "$LIVE_COPILOTO_API_URL/connections/1/messages" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": [
    {
      "id": "ef58daea-3c88-4dd7-a9cd-f8c1e168a923",
      "connectionId": 1,
      "text": "Obrigado pela presença!",
      "status": "sent",
      "remoteMessageId": "9876543210123456789",
      "errorCode": null,
      "createdAt": "2026-10-09T18:00:00.000Z",
      "updatedAt": "2026-10-09T18:00:05.000Z"
    }
  ]
}

TikTok LIVE

Consultar um envio

GET/api/v1/connections/{id}/messages/{messageId}

Consulta uma tentativa pelo UUID. Os estados são sending (em andamento), sent (confirmado), failed (não enviado ou recusado) e unknown (resultado incerto). Um resultado incerto nunca é repetido automaticamente.

Permissão: leitura

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.
messageIdURL · obrigatório
UUID retornado ao criar a tentativa.
Campos da resposta ChatMessage
id
uuid
connectionId
integer
text
string
status
sending · sent · failed · unknown
remoteMessageId
string ou null
errorCode
string ou null
createdAt
date-time
updatedAt
date-time
Requisição · cURL
curl "$LIVE_COPILOTO_API_URL/connections/1/messages/ef58daea-3c88-4dd7-a9cd-f8c1e168a923" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": {
    "id": "ef58daea-3c88-4dd7-a9cd-f8c1e168a923",
    "connectionId": 1,
    "text": "Obrigado pela presença!",
    "status": "sent",
    "remoteMessageId": "9876543210123456789",
    "errorCode": null,
    "createdAt": "2026-10-09T18:00:00.000Z",
    "updatedAt": "2026-10-09T18:00:05.000Z"
  }
}

TikTok LIVE

Enviar mensagem ao TikTok

POST/api/v1/connections/{id}/messages

Envio experimental pela interface web. Conecte a conta no painel e desative a demonstração. Até 150 caracteres e uma tentativa a cada 10 segundos por usuário; uma em andamento por usuário e duas no servidor. Aguarda até 60 segundos. HTTP 201 registra a tentativa, inclusive failed/unknown: leia data.status. Repetição retorna 200 ou 202 se ainda em andamento. Nunca crie outra chave para repetir um resultado unknown sem conferir o chat.

Permissão: leitura e escrita

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.
Idempotency-Keycabeçalho · obrigatório
Identificação única por conexão, de 1 a 128 caracteres (letras, números, ponto, hífen, sublinhado ou dois-pontos). Repita a mesma chave e texto após falha de rede.

Envie JSON com o campo text obrigatório. Campos adicionais são recusados.

Campos da resposta ChatMessage
id
uuid
connectionId
integer
text
string
status
sending · sent · failed · unknown
remoteMessageId
string ou null
errorCode
string ou null
createdAt
date-time
updatedAt
date-time
Requisição · cURL
curl -X POST "$LIVE_COPILOTO_API_URL/connections/1/messages" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: live-1-resposta-001" \
  --data '{"text":"Obrigado pela presença!"}'
201 Resposta de exemplo
{
  "data": {
    "id": "ef58daea-3c88-4dd7-a9cd-f8c1e168a923",
    "connectionId": 1,
    "text": "Obrigado pela presença!",
    "status": "sent",
    "remoteMessageId": "9876543210123456789",
    "errorCode": null,
    "createdAt": "2026-10-09T18:00:00.000Z",
    "updatedAt": "2026-10-09T18:00:05.000Z"
  },
  "replayed": false
}

Conta

Consultar sua conta

GET/api/v1/me

Identifica a conta associada à chave. Não retorna permissões administrativas nem dados de autenticação.

Permissão: leitura

Campos da resposta Account
id
integer
name
string
email
email
Requisição · cURL
curl "$LIVE_COPILOTO_API_URL/me" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": {
    "id": 1,
    "name": "João Criador",
    "email": "[email protected]"
  }
}

Conexões

Listar conexões

GET/api/v1/connections

Lista as conexões da sua conta em ordem crescente de ID. Credenciais das plataformas e links privados de overlay não são retornados.

Permissão: leitura

Parâmetros

limitconsulta · opcional
Quantidade por página (1–100).
afterIdconsulta · opcional
Retorna IDs maiores que este valor, em ordem crescente.
Campos da resposta Connection
id
integer
platform
string
provider
string
uniqueId
string
label
string ou null
aiMode
desligado · copiloto · overlay
simulate
boolean
createdAt
date-time
updatedAt
date-time
Requisição · cURL
curl "$LIVE_COPILOTO_API_URL/connections" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": [
    {
      "id": 1,
      "platform": "tiktok",
      "provider": "ttl-live",
      "uniqueId": "seu.canal",
      "label": "Live principal",
      "aiMode": "copiloto",
      "simulate": false,
      "createdAt": "2026-10-09T18:00:00.000Z",
      "updatedAt": "2026-10-09T18:00:00.000Z"
    }
  ],
  "pagination": {
    "limit": 50,
    "hasMore": false,
    "nextAfterId": null
  }
}

Conexões

Consultar uma conexão

GET/api/v1/connections/{id}

Retorna a plataforma, o canal e o modo do copiloto. Crie e configure conexões pelo painel antes de usar a API.

Permissão: leitura

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.
Campos da resposta Connection
id
integer
platform
string
provider
string
uniqueId
string
label
string ou null
aiMode
desligado · copiloto · overlay
simulate
boolean
createdAt
date-time
updatedAt
date-time
Requisição · cURL
curl "$LIVE_COPILOTO_API_URL/connections/1" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": {
    "id": 1,
    "platform": "tiktok",
    "provider": "ttl-live",
    "uniqueId": "seu.canal",
    "label": "Live principal",
    "aiMode": "copiloto",
    "simulate": false,
    "createdAt": "2026-10-09T18:00:00.000Z",
    "updatedAt": "2026-10-09T18:00:00.000Z"
  }
}

Conexões

Consultar o estado da escuta

GET/api/v1/connections/{id}/status

Retorna o estado atual da escuta, espectadores e ID da sessão em andamento. Use liveSessionId para consultar eventos e respostas. Detalhes de falhas ficam no painel.

Permissão: leitura

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.
Campos da resposta Status
state
string
since
date-time
viewers
integer
liveSessionId
integer ou null
Requisição · cURL
curl "$LIVE_COPILOTO_API_URL/connections/1/status" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": {
    "state": "ao_vivo",
    "since": "2026-10-09T18:00:00.000Z",
    "viewers": 1240,
    "liveSessionId": 42
  }
}

Conexões

Iniciar a escuta

POST/api/v1/connections/{id}/start

Inicia a leitura da live com as configurações salvas, incluindo o modo demonstração. Não inicia a transmissão na rede social. A IA pode consumir créditos do provedor quando ativada. Uma falha de conexão retorna 409; confira o painel antes de tentar novamente.

Permissão: leitura e escrita

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.

Envie a requisição sem corpo ou com {}. Campos adicionais são recusados.

Campos da resposta Status
state
string
since
date-time
viewers
integer
liveSessionId
integer ou null
Requisição · cURL
curl -X POST "$LIVE_COPILOTO_API_URL/connections/1/start" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": {
    "state": "ao_vivo",
    "since": "2026-10-09T18:00:00.000Z",
    "viewers": 1240,
    "liveSessionId": 42
  }
}

Conexões

Parar a escuta

POST/api/v1/connections/{id}/stop

Encerra a escuta e a sessão local, preservando seu histórico. A transmissão na plataforma continua.

Permissão: leitura e escrita

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.

Envie a requisição sem corpo ou com {}. Campos adicionais são recusados.

Campos da resposta Status
state
string
since
date-time
viewers
integer
liveSessionId
integer ou null
Requisição · cURL
curl -X POST "$LIVE_COPILOTO_API_URL/connections/1/stop" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": {
    "state": "parado",
    "since": "2026-10-09T19:00:00.000Z",
    "viewers": 0,
    "liveSessionId": null
  }
}

Sessões

Listar sessões de uma conexão

GET/api/v1/connections/{id}/sessions

Percorre o histórico de sessões em ordem crescente de ID, com métricas acumuladas de cada live.

Permissão: leitura

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.
limitconsulta · opcional
Quantidade por página (1–100).
afterIdconsulta · opcional
Retorna IDs maiores que este valor, em ordem crescente.
Campos da resposta Session
id
integer
connectionId
integer
source
string
startedAt
date-time
endedAt
date-time
endReason
string ou null
peakViewers
integer
totalComments
integer
totalGifts
integer
totalDiamonds
integer
totalLikes
integer
totalMembers
integer
totalFollows
integer
totalShares
integer
totalReplies
integer
Requisição · cURL
curl "$LIVE_COPILOTO_API_URL/connections/1/sessions" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": [
    {
      "id": 42,
      "connectionId": 1,
      "source": "tiktok",
      "startedAt": "2026-10-09T18:00:00.000Z",
      "endedAt": null,
      "endReason": null,
      "peakViewers": 1240,
      "totalComments": 356,
      "totalGifts": 12,
      "totalDiamonds": 50,
      "totalLikes": 860,
      "totalMembers": 28,
      "totalFollows": 15,
      "totalShares": 9,
      "totalReplies": 24
    }
  ],
  "pagination": {
    "limit": 50,
    "hasMore": false,
    "nextAfterId": null
  }
}

Sessões

Consultar sessão e métricas

GET/api/v1/sessions/{id}

Retorna início, encerramento e totais da sessão. endedAt igual a null indica uma sessão aberta.

Permissão: leitura

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.
Campos da resposta Session
id
integer
connectionId
integer
source
string
startedAt
date-time
endedAt
date-time
endReason
string ou null
peakViewers
integer
totalComments
integer
totalGifts
integer
totalDiamonds
integer
totalLikes
integer
totalMembers
integer
totalFollows
integer
totalShares
integer
totalReplies
integer
Requisição · cURL
curl "$LIVE_COPILOTO_API_URL/sessions/42" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": {
    "id": 42,
    "connectionId": 1,
    "source": "tiktok",
    "startedAt": "2026-10-09T18:00:00.000Z",
    "endedAt": null,
    "endReason": null,
    "peakViewers": 1240,
    "totalComments": 356,
    "totalGifts": 12,
    "totalDiamonds": 50,
    "totalLikes": 860,
    "totalMembers": 28,
    "totalFollows": 15,
    "totalShares": 9,
    "totalReplies": 24
  }
}

Atividade

Ler eventos do chat

GET/api/v1/sessions/{id}/events

Retorna eventos normalizados em ordem crescente de ID. Para acompanhar novos eventos, consulte a cada 5 segundos e use o último ID recebido como afterId. Os tipos dependem da plataforma. Payloads brutos e credenciais são omitidos.

Permissão: leitura

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.
limitconsulta · opcional
Quantidade por página (1–100).
afterIdconsulta · opcional
Retorna IDs maiores que este valor, em ordem crescente.
Campos da resposta Event
id
integer
liveSessionId
integer
type
string
text
string ou null
amount
number ou null
diamonds
number ou null
occurredAt
date-time
user
objeto ou null
Requisição · cURL
curl "$LIVE_COPILOTO_API_URL/sessions/42/events" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": [
    {
      "id": 120,
      "liveSessionId": 42,
      "type": "comment",
      "text": "Onde está o link?",
      "amount": null,
      "diamonds": null,
      "occurredAt": "2026-10-09T18:01:00.000Z",
      "user": {
        "uniqueId": "carla",
        "nickname": "Carla"
      }
    }
  ],
  "pagination": {
    "limit": 50,
    "hasMore": false,
    "nextAfterId": null
  }
}

Atividade

Listar respostas do copiloto

GET/api/v1/sessions/{id}/replies

Lista sugestões, respostas publicadas e descartadas. O cursor descobre novas respostas; releia a página correspondente para atualizar o status de respostas anteriores.

Permissão: leitura

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.
limitconsulta · opcional
Quantidade por página (1–100).
afterIdconsulta · opcional
Retorna IDs maiores que este valor, em ordem crescente.
Campos da resposta Reply
id
integer
liveSessionId
integer
eventId
integer ou null
kind
string
targetUniqueId
string ou null
text
string
status
sugerida · publicada · descartada
createdAt
date-time
publishedAt
date-time
Requisição · cURL
curl "$LIVE_COPILOTO_API_URL/sessions/42/replies" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": [
    {
      "id": 28,
      "liveSessionId": 42,
      "eventId": 120,
      "kind": "resposta",
      "targetUniqueId": "carla",
      "text": "O link está fixado na live, Carla!",
      "status": "sugerida",
      "createdAt": "2026-10-09T18:01:00.000Z",
      "publishedAt": null
    }
  ],
  "pagination": {
    "limit": 50,
    "hasMore": false,
    "nextAfterId": null
  }
}

Atividade

Publicar resposta no overlay

POST/api/v1/replies/{id}/publish

Publica uma sugestão no overlay da live. Não envia ao chat da rede social. Exige sessão aberta, resposta sugerida e tipo diferente de aviso. Repetir a ação retorna 409 sem republicar.

Permissão: leitura e escrita

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.

Envie a requisição sem corpo ou com {}. Campos adicionais são recusados.

Campos da resposta Reply
id
integer
liveSessionId
integer
eventId
integer ou null
kind
string
targetUniqueId
string ou null
text
string
status
sugerida · publicada · descartada
createdAt
date-time
publishedAt
date-time
Requisição · cURL
curl -X POST "$LIVE_COPILOTO_API_URL/replies/28/publish" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": {
    "id": 28,
    "liveSessionId": 42,
    "eventId": 120,
    "kind": "resposta",
    "targetUniqueId": "carla",
    "text": "O link está fixado na live, Carla!",
    "status": "publicada",
    "createdAt": "2026-10-09T18:01:00.000Z",
    "publishedAt": "2026-10-09T18:02:00.000Z"
  }
}

Atividade

Descartar uma sugestão

POST/api/v1/replies/{id}/discard

Descarta uma resposta ainda sugerida, inclusive avisos e sugestões de sessões encerradas. Respostas publicadas ou já descartadas retornam 409.

Permissão: leitura e escrita

Parâmetros

idURL · obrigatório
ID do recurso indicado na URL, pertencente à sua conta.

Envie a requisição sem corpo ou com {}. Campos adicionais são recusados.

Campos da resposta Reply
id
integer
liveSessionId
integer
eventId
integer ou null
kind
string
targetUniqueId
string ou null
text
string
status
sugerida · publicada · descartada
createdAt
date-time
publishedAt
date-time
Requisição · cURL
curl -X POST "$LIVE_COPILOTO_API_URL/replies/28/discard" \
  -H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
200 Resposta de exemplo
{
  "data": {
    "id": 28,
    "liveSessionId": 42,
    "eventId": 120,
    "kind": "resposta",
    "targetUniqueId": "carla",
    "text": "O link está fixado na live, Carla!",
    "status": "descartada",
    "createdAt": "2026-10-09T18:01:00.000Z",
    "publishedAt": null
  }
}