Introdução
Conceitos gerais da API REST do LiveTP, códigos de resposta e autenticação.
A API do LiveTP segue os princípios REST, recebe e retorna JSON e exige HTTPS. É a mesma API usada pelos apps nativos, com as mesmas validações e revisões.
URL base
https://livetp.app/api/v1Ambiente de testes
Em staging, use https://staging.livetp.app/api/v1. Contas, chaves e dados de cada ambiente são independentes.
Autenticação
Envie uma chave de API (ltp_api_…) ou um token OAuth no header Authorization:
Authorization: Bearer ltp_api_...Credenciais na query string são recusadas. Cada endpoint exige um escopo: scripts:read para leitura e scripts:write para alterações.
Formato
- Requisições com corpo usam
Content-Type: application/jsone têm limite de 1 MB. - Datas seguem ISO 8601 em UTC (
2026-10-30T15:00:00.000Z). - Respostas nunca são armazenadas em cache (
Cache-Control: no-store). - Leituras e alterações de roteiros retornam a revisão no header
ETag.
Códigos de resposta
| Status | Descrição |
|---|---|
200 | Sucesso. |
201 | Recurso criado. |
400 | Corpo ausente ou JSON inválido. |
401 | Credencial ausente, inválida, expirada ou revogada. |
403 | A credencial não tem o escopo necessário, ou a ação exige a sessão web. |
404 | Recurso não encontrado (ou pertence a outra conta). |
409 | Conflito de revisão ou de identificador. |
413 | Corpo acima de 1 MB. |
415 | Corpo enviado sem Content-Type: application/json. |
422 | Parâmetros ou campos inválidos. |
429 | Limite de requisições atingido. Respeite Retry-After. |
5xx | Erro no LiveTP. Tente novamente em instantes. |
Erros seguem sempre o mesmo formato. Veja a lista de códigos em Erros.
{
"error": {
"code": "insufficient_scope",
"message": "Esta conexão não tem permissão para a ação.",
"details": { "scope": "scripts:write" }
}
}Limite de requisições
Cada conta pode fazer 240 leituras e 60 alterações por minuto, somando todas as credenciais. Ao exceder, a API responde 429 com Retry-After: 60. Veja Limite de requisições.
Especificação OpenAPI
A especificação OpenAPI 3.1 é pública em GET /api/v1/openapi e pode gerar clientes em qualquer linguagem.