Autentique com um token de API, liste e crie links, leia visitas e assine webhooks.
URL basehttps://letl.ink/api/v1Somente HTTPS
PlanosGrowthUltimate
Nesta página
Primeiros passos
A API REST está disponível no Growth e no Ultimate. As requisições vão para https://letl.ink/api/v1 via HTTPS. Um espaço de trabalho no Free ou no Solo recebe 403 plan_required de /api/v1; o endpoint MCP é liberado separadamente no Ultimate.
Abra Integrações → API REST (apenas proprietários e administradores do espaço de trabalho).
Gere um token. Ele não expira.
Guarde-o como uma senha. Um único token atende a API REST, o servidor MCP e todas as plataformas de automação conectadas a este espaço de trabalho, então gerá-lo novamente invalida todos de uma vez.
Os membros podem copiar um token existente, se já tiver sido gerado; apenas proprietários e administradores podem trocá-lo.
Envie o token como X-API-KEYou como Authorization: Bearer. Os dois são aceitos em /api/v1 e em /mcp. Uma requisição sem nenhum token retorna 401 unauthenticated.
Toda resposta bem-sucedida é um objeto JSON com uma chave data e uma chave meta quando há algo a dizer sobre o resultado — paginação, o período de datas resolvido, se a geografia foi incluída. Toda falha é um objeto com uma chave error contendo um code estável, uma message legível e, às vezes, details. Use o code para decidir o fluxo, nunca o texto da mensagem.
Os endpoints de listagem aceitam limit (1–200, padrão 50) e offset. O bloco meta informa total, has_more e next_offset, para você paginar sem fazer contas: continue chamando com offset = meta.next_offset até has_more ser false.
GET /links aceita sort (created_at, clicks, short_code, title, updated_at), direction (asc/desc), search (busca no código curto, título e destino), type, archived, favorite e domain. Valores desconhecidos são rejeitados com invalid_parameter e a lista do que é permitido, em vez de serem ignorados silenciosamente.
Períodos de datas
start_date e end_date usam YYYY-MM-DD e incluem os dois dias. O período é limitado à retenção do seu plano — pedir um ano de histórico em um plano com 30 dias de retenção retorna os 30 dias disponíveis, e meta.date_range informa o período realmente usado.
Limites de taxa
600 requisições por minuto por conta, em janela deslizante. Toda resposta traz X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset (um timestamp Unix). Exceder o limite retorna 429 rate_limited com um cabeçalho Retry-After em segundos. Aguarde o tempo indicado em Retry-After em vez de tentar de novo imediatamente.
O caminho inclui a versão. Adicionar um campo a uma resposta ou um novo parâmetro opcional não é uma mudança incompatível e pode acontecer a qualquer momento, então interprete de forma defensiva e ignore chaves que você não reconhece. Qualquer coisa que altere ou remova um campo existente é lançada com um novo prefixo de versão.
Endpoints
Conta
GET/meTeste de conexão
Identidade, espaço de trabalho, plano e todos os direitos que esse plano inclui. A forma mais barata de verificar um token e descobrir o que a conta pode fazer antes de tentar.
Quanto de cada cota foi consumido neste mês de cobrança. Use para avisar um cliente antes que ele atinja o teto de cliques rastreados — depois disso o redirecionamento continua funcionando, mas os cliques deixam de ser registrados.
Domínios personalizados do espaço de trabalho e se cada um já concluiu a verificação de DNS. Só domínios verificados podem ser usados no campo domain ao criar um link.
GET/integrations
Todas as integrações que o produto oferece, se o seu plano as inclui, se este espaço de trabalho as conectou e como está a entrega — último status, último erro e número de falhas consecutivas. Útil para monitorar vários espaços de trabalho.
Links
GET/linksPaginado
Links do espaço de trabalho, com totais de cliques divididos em all, ios, android e desktop. Links sem cliques também são incluídos.
Parâmetros de consulta
domainstring
Limita a um nome de host. Omita para listar todos os nomes de host do espaço de trabalho.
Opcional
searchstring
Busca no código curto, título e destino.
Opcional
typestring
direct, utm, appstore, instagram, mobile ou device.
Opcional
archivedboolean
O padrão é false. Passe true para listar o arquivo.
Opcional
favoriteboolean
Limita aos links marcados com estrela.
Opcional
sortstring
created_at (padrão), clicks, short_code, title ou updated_at.
Opcional
directionstring
asc ou desc. O padrão é desc.
Opcional
limitinteger
1–200. O padrão é 50.
Opcional
offsetinteger
O padrão é 0.
Opcional
start_datedate
YYYY-MM-DD. Delimita os totais de cliques, não quais links são retornados.
Crie vários links em uma única requisição. Cada linha é processada de forma independente: as válidas são criadas e as falhas são informadas por índice, então uma URL ruim nunca descarta o restante do lote. Retorna 201 quando algo foi criado e 422 quando nada foi.
PATCH mescla: só os campos enviados são alterados, todo o resto mantém o valor atual. PUT substitui: tudo o que você omitir é apagado. Aceita os mesmos campos da criação.
Arquiva o link: ele deixa de funcionar e libera uma vaga na cota, enquanto o histórico de cliques é mantido. Propositalmente, não há exclusão permanente na API — destruir um link e seu histórico continua sendo uma ação do painel, com confirmação explícita.
POST/links/{id}/restore
Traz um link arquivado de volta à ativa. Retorna 403 plan_required se o espaço de trabalho já estiver no limite de links ativos.
GET/links/{id}/eventsPaginado
Visitas individuais a um link, das mais recentes para as mais antigas. Aceita limit e offset. O país está incluído em todos os planos.
Análises
GET/analytics/summary
Os números principais de todo o espaço de trabalho: cliques desde o início e no período, visitantes únicos, leituras de QR, dia de pico e distribuições por hora do dia e dia da semana. Aceita days (padrão 30, limitado à sua retenção).
Contagem diária de cliques, pronta para gráficos. Passe link_id para limitar a um link e days para definir o período. Dias sem tráfego são retornados como zero em vez de omitidos, então a série é sempre contínua.
Tudo o que o painel mostra para um link em uma única chamada: o próprio link, totais de cliques, visitantes únicos e recorrentes, a série diária, distribuições por hora e dia da semana, todos os detalhamentos e o placar do teste A/B quando o link tiver um.
O feed bruto de visitas de todos os links do espaço de trabalho, das mais recentes para as mais antigas. É o substituto moderno de GET /visits: os mesmos dados, envelope padrão e suporte a limit e offset.
Remove um endpoint de webhook. POST /hooks/subscribe e DELETE /hooks/unsubscribe/{id} continuam disponíveis para o fluxo de REST Hooks do Zapier.
Legado
GET/auth/meLegado
O teste de conexão original: retorna seu id de usuário, e-mail e id/nome do espaço de trabalho como um objeto plano. GET /me retorna a mesma identidade mais os limites do seu plano e os recursos disponíveis, e é a melhor escolha para código novo.
Totais de cliques de um único link, identificado por domain e slug em vez do id. Os dois parâmetros são obrigatórios. GET /links/{id} e GET /analytics/links/{id} cobrem o mesmo quando você sabe o id.
Parâmetros de consulta
domainstring
O domínio base ou um dos seus domínios personalizados verificados.
Obrigatório
slugstring
O código curto, sem barra inicial.
Obrigatório
start_datedate
YYYY-MM-DD, limitado à retenção do seu plano.
Opcional
end_datedate
YYYY-MM-DD, inclusivo.
Opcional
GET/visitsLegado
As 50 visitas mais recentes em todo o espaço de trabalho, como um array JSON puro — sem envelope —, usando os nomes de campo visit_id, visit_time, link_shortcode e visitor_*. É isso que a etapa "perform list" do REST Hook do Zapier lê, então o formato está congelado. Use GET /events para novos desenvolvimentos.
GET/links/{id}/visitsLegado
As 50 visitas mais recentes a um link, como um array puro com created_at, ip_address, country, device_type, browser, os e referrer. Congelado junto com /visits; use GET /links/{id}/events para novos desenvolvimentos.
POST/hooks/subscribeZapier
Assinatura de REST Hook. Recebe target_url e um event opcional (padrão link_visited) e retorna a assinatura criada de forma plana, sem envelope. POST /hooks é a mesma operação no formato padrão.
DELETE/hooks/unsubscribe/{id}Zapier
Cancelamento de REST Hook, retornando {"success": true}. DELETE /hooks/{id} é o equivalente no formato padrão.
Erros
StatusQuando
400 invalid_request
O corpo não era um objeto JSON ou faltava um campo obrigatório.
400 invalid_parameter
Um parâmetro de consulta estava malformado ou fora do conjunto permitido. details.parameter indica qual.
401 unauthenticated
Nenhum token foi enviado. Adicione X-API-KEY ou Authorization: Bearer.
401 invalid_token
O token não corresponde a nenhuma conta. Ele pode ter sido gerado novamente.
403 plan_required
O plano da conta não inclui este endpoint ou recurso. details.upgrade_url aponta para a cobrança.
403 forbidden
Autenticado, mas sem permissão — por exemplo, um membro tentando uma ação exclusiva do proprietário.
404 not_found
Esse recurso não existe neste espaço de trabalho. IDs de outro espaço de trabalho são informados como não encontrados, e não como proibidos.
409 conflict
A requisição conflita com o estado atual — o limite de webhooks foi atingido ou a conta ainda não tem espaço de trabalho.
422
Retornado por POST /links/bulk quando todas as linhas do lote falharam. Consulte meta.errors.
429 rate_limited
Mais de 600 requisições no último minuto. Aguarde Retry-After segundos.
Os endpoints legados GET /visits e GET /links/{id}/visits retornam um array JSON puro com nomes de campo próprios e estão congelados para as integrações do Zapier já construídas sobre eles. Código novo deve usar GET /events e GET /links/{id}/events, que usam o envelope padrão e suportam paginação.