Documentação da API
Encurte e gerencie links a partir dos seus sistemas. Base: https://kurto.me/api?action=<ação>. Respostas em JSON; erros no formato {"error": "descrição"}.
Autenticação
Toda requisição leva o cabeçalho X-API-Token com o seu token, que fica em Perfil e API.
Somente pelo cabeçalho: ?token= na URL foi removido porque gravava a credencial nos logs. A conta precisa estar verificada e com a API liberada (individualmente ou para todos). API para todos neste momento: habilitada.
Multi-domínio
O slug é único e global: responde em todos os domínios ativos.
O campo domain escolhe só qual endereço volta em short_url. Domínios ativos:
kurto.me (padrão).
POST /api?action=shorten
Cria um link. url é obrigatória (com http:// ou https://). slug é opcional (3 a 64 caracteres: letras, números, - e _); sem ele, o sistema gera um número de 6 dígitos. domain é opcional.
Resposta 201
Erro 422
GET /api?action=list
Lista os seus links, do mais novo para o mais antigo. Admin pode usar &all=1 para ver todos. Opcional: &ids=12,18,19 (até 500) devolve só esses, no mesmo escopo — ids de outro usuário são omitidos.
Resposta 200
domain: domínio exibido no short_url;nullusa o domínio do acesso.expires_at: data de expiração ounull. Depois dela o link responde 410.has_password: o visitante digita a senha antes do redirect.qr_code: imagem PNG do QR, gerada aqui. Aceita?size=120a1000.
PUT /api?action=update
Altera um link (PUT ou POST). id e url são obrigatórios; slug é opcional. Para domain: omitir mantém o atual, null volta ao domínio do acesso.
Resposta 200
DELETE /api?action=delete&id=123
Remove um link (DELETE ou POST).
Resposta 200
GET /api?action=domains
Domínios ativos, para usar no campo domain sem errar o hostname.
Resposta 200
Regras e permissões
- Usuário comum só edita e apaga os próprios links personalizados.
- Links automáticos (slug numérico) só são apagados por administradores.
- Administradores podem listar, editar e apagar qualquer link.
- O slug não diferencia maiúsculas:
Promoepromosão o mesmo link. - O redirect é 302 de propósito: trocar o destino vale na hora, sem cache do navegador.
- Destino aceito: só http:// e https://, até 2000 caracteres. Endereços internos (localhost, 10.x, 192.168.x, 169.254.x) são recusados.
Códigos de resposta
| Código | Quando acontece |
|---|---|
| 200 | Requisição bem-sucedida. |
| 201 | Link criado (shorten). |
| 400 | A action da URL não existe. |
| 401 | Token ausente ou inválido, usuário não verificado ou API desabilitada. |
| 403 | O link é de outro usuário, ou é automático e você não é admin. |
| 404 | O id informado não existe. |
| 405 | Método errado: update exige PUT ou POST; delete exige DELETE ou POST. |
| 422 | URL malformada, slug em uso ou fora do padrão, domínio não cadastrado, ou destino interno. |
| 429 | Limite de uso atingido. Veja o cabeçalho Retry-After. |
Limites de uso
- Requisições autenticadas: 60 por minuto.
- Escrita (criar, editar, apagar): 20 por minuto, dentro do total.
- Sem token válido: 10 por minuto por IP.
Toda resposta traz X-RateLimit-Limit e X-RateLimit-Remaining. Ao estourar, a API devolve 429 com Retry-After em segundos — espere esse tempo em vez de repetir a chamada.
Para agentes de IA
A mesma documentação em texto puro, para assistentes e agentes lerem direto: /llms.txt. Inclui endpoints, campos, códigos de erro e as armadilhas comuns numa primeira integração.