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.
Da chave à primeira resposta.
Crie uma chave no painel, guarde-a no seu servidor e faça uma consulta. Os exemplos usam dados demonstrativos.
- Crie uma chaveEscolha leitura ou leitura e escrita em Developers.
- Defina suas variáveisGuarde a chave em
LIVE_COPILOTO_API_KEYe a URL base emLIVE_COPILOTO_API_URL. - Consulte suas conexõesUse o ID retornado para acessar a live e seu histórico.
curl "$LIVE_COPILOTO_API_URL/connections" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"https://app.livecopiloto.com/api/v1Configure 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.
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álida401Chave inválida ou expirada403Permissão de escrita necessária404Recurso não encontrado409Ação incompatível com o estado atual413Corpo acima de 64 KB415Formato diferente de JSON422Parâmetros inválidos429Limite de requisições atingido500Falha 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 · v1TikTok LIVE
Consultar sessão do TikTok
/api/v1/connections/{id}/chat-sessionConsulte 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.
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
curl "$LIVE_COPILOTO_API_URL/connections/1/chat-session" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"data": {
"connectionId": 1,
"sessionStored": true,
"simulate": false,
"loginUrl": "/app/conexoes/1/conta"
}
}
TikTok LIVE
Desconectar conta do TikTok
/api/v1/connections/{id}/chat-sessionRemove cookies e armazenamento de login e cancela tentativas em andamento. Uma mensagem já submetida pode ter sido entregue; confira seu resultado no histórico.
Parâmetros
idURL · obrigatório- ID do recurso indicado na URL, pertencente à sua conta.
curl -X DELETE "$LIVE_COPILOTO_API_URL/connections/1/chat-session" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
Sem corpo de resposta.
TikTok LIVE
Listar envios ao TikTok
/api/v1/connections/{id}/messagesRetorna 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.
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
curl "$LIVE_COPILOTO_API_URL/connections/1/messages" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"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
/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.
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
curl "$LIVE_COPILOTO_API_URL/connections/1/messages/ef58daea-3c88-4dd7-a9cd-f8c1e168a923" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"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
/api/v1/connections/{id}/messagesEnvio 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.
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
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!"}'
{
"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
/api/v1/meIdentifica a conta associada à chave. Não retorna permissões administrativas nem dados de autenticação.
Campos da resposta Account
id- integer
name- string
email
curl "$LIVE_COPILOTO_API_URL/me" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"data": {
"id": 1,
"name": "João Criador",
"email": "[email protected]"
}
}
Conexões
Listar conexões
/api/v1/connectionsLista as conexões da sua conta em ordem crescente de ID. Credenciais das plataformas e links privados de overlay não são retornados.
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
curl "$LIVE_COPILOTO_API_URL/connections" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"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
/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.
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
curl "$LIVE_COPILOTO_API_URL/connections/1" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"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
/api/v1/connections/{id}/statusRetorna 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.
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
curl "$LIVE_COPILOTO_API_URL/connections/1/status" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"data": {
"state": "ao_vivo",
"since": "2026-10-09T18:00:00.000Z",
"viewers": 1240,
"liveSessionId": 42
}
}
Conexões
Iniciar a escuta
/api/v1/connections/{id}/startInicia 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.
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
curl -X POST "$LIVE_COPILOTO_API_URL/connections/1/start" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"data": {
"state": "ao_vivo",
"since": "2026-10-09T18:00:00.000Z",
"viewers": 1240,
"liveSessionId": 42
}
}
Conexões
Parar a escuta
/api/v1/connections/{id}/stopEncerra a escuta e a sessão local, preservando seu histórico. A transmissão na plataforma continua.
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
curl -X POST "$LIVE_COPILOTO_API_URL/connections/1/stop" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"data": {
"state": "parado",
"since": "2026-10-09T19:00:00.000Z",
"viewers": 0,
"liveSessionId": null
}
}
Sessões
Listar sessões de uma conexão
/api/v1/connections/{id}/sessionsPercorre o histórico de sessões em ordem crescente de ID, com métricas acumuladas de cada live.
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
curl "$LIVE_COPILOTO_API_URL/connections/1/sessions" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"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
/api/v1/sessions/{id}Retorna início, encerramento e totais da sessão. endedAt igual a null indica uma sessão aberta.
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
curl "$LIVE_COPILOTO_API_URL/sessions/42" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"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
/api/v1/sessions/{id}/eventsRetorna 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.
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
curl "$LIVE_COPILOTO_API_URL/sessions/42/events" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"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
/api/v1/sessions/{id}/repliesLista sugestões, respostas publicadas e descartadas. O cursor descobre novas respostas; releia a página correspondente para atualizar o status de respostas anteriores.
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
curl "$LIVE_COPILOTO_API_URL/sessions/42/replies" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"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
/api/v1/replies/{id}/publishPublica 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.
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
curl -X POST "$LIVE_COPILOTO_API_URL/replies/28/publish" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"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
/api/v1/replies/{id}/discardDescarta uma resposta ainda sugerida, inclusive avisos e sugestões de sessões encerradas. Respostas publicadas ou já descartadas retornam 409.
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
curl -X POST "$LIVE_COPILOTO_API_URL/replies/28/discard" \
-H "Authorization: Bearer $LIVE_COPILOTO_API_KEY"
{
"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
}
}