Verifique a unicidade e o formato de um slug
Verifique um slug proposto antes que ele chegue a um CMS, pipeline de implantação ou tabela de rotas.
Executar grátis
A ferramenta primeiro exige um formato previsível com letras minúsculas, dígitos e hífens simples; depois, compara a proposta válida com os slugs existentes informados por você. Um formato inválido sempre gera erro, mesmo que o mesmo texto esteja na lista. Resultados válidos indicam claramente se o slug é único e se foi encontrada uma colisão exata.
Valide o slug antes de verificar a disponibilidade
Um resultado de unicidade só é útil quando o valor proposto pode fazer parte de uma URL com segurança. Informe o candidato e os slugs já utilizados pelo seu site, aplicativo ou repositório de conteúdo. São aceitas letras inglesas minúsculas de a a z, dígitos de 0 a 9 e hífens entre grupos não vazios. Maiúsculas, espaços, sublinhados, pontuação e hífens iniciais, finais ou repetidos são rejeitados. A ordem é rigorosa: o formato é validado antes da busca por correspondência. Portanto, um candidato inválido que também esteja na lista produz erro de entrada inválida, não um resultado comum de colisão. Isso oferece uma regra estável para formulários, importações em massa e implantações. Respeite o limite de comprimento e envie a coleção atual como uma matriz de strings; nenhuma normalização oculta altera os valores enviados.
Interprete corretamente as colisões exatas
Para um candidato bem formatado, a resposta inclui o slug enviado, confirma que o formato é válido e apresenta dois valores complementares: único e colisão. Existe colisão quando a string exata aparece pelo menos uma vez na lista fornecida. A comparação é intencionalmente exata: a ferramenta não remove prefixos, decodifica escapes de URL, apara itens nem considera frases semelhantes como a mesma página. Por exemplo, guia-produto e guias-produto continuam sendo rotas válidas diferentes. Esse comportamento mantém a resposta determinística e deixa para seu aplicativo as regras sobre nomes reservados, prefixos regionais, redirecionamentos ou restrições do banco. Itens duplicados na lista não mudam o resultado. Como a lista é a fonte de verdade da solicitação, atualize-a quando vários editores ou processos puderem reivindicar rotas simultaneamente.
Use a verificação na publicação e na implantação
Execute a verificação o mais perto possível do momento em que uma rota é reservada. Em um editor, valide depois de gerar o slug a partir do título e repita quando houver alteração. Em um site estático, reúna primeiro os caminhos de saída e teste cada proposta contra os já aceitos. Em uma API ou migração, trate erros de entrada como falhas de qualidade a corrigir e colisões como decisões de nomenclatura. A operação é determinística, não usa rede e não armazena dados, sendo adequada para testes e builds reproduzíveis. Porém, ela verifica e não reserva: outro processo pode reivindicar o slug depois da leitura da lista. Para gravações concorrentes, mantenha também uma restrição única no banco ou faça uma reserva atômica ao salvar.
Casos de uso
Evitar colisões de rotas no CMS
Valide o caminho proposto por um editor e avise quando um artigo já usar exatamente esse slug.
Controlar builds de sites estáticos
Compare slugs gerados com caminhos aceitos antes de gravar ou implantar os arquivos.
Limpar entradas de migração
Separe slugs legados malformados de nomes válidos que apenas colidem durante a migração.
Perguntas frequentes
Qual formato de slug é aceito?
Uma ou mais letras minúsculas ou dígitos, opcionalmente separados por hífens simples, nunca no início, no fim ou repetidos.
E se um slug inválido também estiver na lista?
A ferramenta retorna erro de entrada inválida porque a validação do formato sempre tem prioridade.
A colisão ignora maiúsculas e minúsculas?
Não. A comparação é exata. Maiúsculas já são inválidas na proposta, e os valores da lista não são normalizados.
Um resultado único reserva o slug?
Não. Ele verifica apenas a lista enviada. Use gravação atômica ou restrição única para impedir reivindicações concorrentes.
Quanto custa uma solicitação da API?
O preço base é US$ 0,002 por solicitação. A mesma lógica determinística pode ser executada no navegador.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/web/slug-uniqueness-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"slug":"summer-sale-2026","existing_slugs":["spring-sale-2026","clearance"]}'const res = await fetch("https://api.kit.forhosting.com/web/slug-uniqueness-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"slug": "summer-sale-2026",
"existing_slugs": [
"spring-sale-2026",
"clearance"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/slug-uniqueness-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"slug": "summer-sale-2026",
"existing_slugs": [
"spring-sale-2026",
"clearance"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/slug-uniqueness-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"slug":"summer-sale-2026","existing_slugs":["spring-sale-2026","clearance"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"slug":"summer-sale-2026","existing_slugs":["spring-sale-2026","clearance"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/slug-uniqueness-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"slug": "summer-sale-2026",
"existing_slugs": [
"spring-sale-2026",
"clearance"
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.slug_uniqueness_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_existing_slugs | 10000 |
max_slug_length | 200 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |