Integre o Goolink ao seu sistema e encurte links programaticamente.
Todas as requisições à API devem incluir um header Authorization com sua API Key.
Authorization: Bearer sua_api_key_aquiGere sua API Key em Configurações → API Keys.
https://goolink.app/v1Encurta uma URL e retorna o link curto.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| url | string | Sim | URL de destino válida |
| slug | string | Não | Slug customizado (3-50 chars, alfanumérico, _ e -) |
| title | string | Não | Título do link (máx 100 chars) |
| projectId | string | Não | ID do projeto para associar o link |
| domain | string | Não | Domínio customizado já verificado para gerar o link curto. Se omitido, usa goolink.app. |
curl -X POST https://goolink.app/v1/shorten \
-H "Authorization: Bearer sua_api_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://exemplo.com/pagina-muito-longa",
"slug": "meu-link",
"title": "Minha campanha",
"domain": "links.suaempresa.com"
}'{
"id": "clx1234567890",
"slug": "meu-link",
"url": "https://exemplo.com/pagina-muito-longa",
"shortUrl": "https://links.suaempresa.com/meu-link",
"domain": "links.suaempresa.com",
"createdAt": "2026-04-13T12:00:00.000Z"
}| Status | Descrição |
|---|---|
400 | URL inválida ou campos fora do formato |
401 | API Key inválida ou expirada |
404 | Domínio informado não pertence à sua conta |
409 | Slug customizado já está em uso neste domínio |
500 | Erro interno do servidor |
Retorna a contagem de cliques de um link.
curl https://goolink.app/v1/links/meu-link/stats \
-H "Authorization: Bearer sua_api_key"{
"id": "clx1234567890",
"slug": "meu-link",
"url": "https://exemplo.com/pagina",
"totalClicks": 412,
"humanClicks": 412,
"active": true,
"createdAt": "2026-04-13T12:00:00.000Z"
}Por que os dois contadores são iguais
O goolink descarta robôs antes de contar: o redirecionamento só registra o clique quando o visitante não é bot, e prévias de link (WhatsApp, Facebook, Telegram) recebem a página de preview sem passar pelo contador. Não existe, portanto, uma contagem crua inflada — humanClicks é o número real e totalClicks vem junto apenas para compatibilidade com clientes que esperam os dois campos.
| Parâmetro | Descrição |
|---|---|
| groupBy=hour | Adiciona hourly: cliques por hora (UTC). Horas sem clique são omitidas. |
| days | Janela do groupBy=hour, de 1 a 365. Padrão 30. |
| domain | Domínio customizado onde o slug foi criado. |
| Status | Descrição |
|---|---|
401 | API Key inválida ou expirada |
404 | Slug não existe ou não pertence à sua conta. Nunca devolvemos 200 com zero neste caso. |
429 | Rate limit do plano atingido |
500 | Erro interno do servidor |
Cliques de até 100 links numa única chamada.
curl -X POST https://goolink.app/v1/links/stats \
-H "Authorization: Bearer sua_api_key" \
-H "Content-Type: application/json" \
-d '{ "slugs": ["meu-link", "outro-link"] }'{
"links": [
{
"id": "clx1234567890",
"slug": "meu-link",
"url": "https://exemplo.com/pagina",
"totalClicks": 412,
"humanClicks": 412,
"active": true,
"createdAt": "2026-04-13T12:00:00.000Z"
}
],
"missing": ["outro-link"]
}Slug não encontrado não vira zero
Slugs que não existem são omitidos de links e listados em missing. Isso permite que o seu lado distinga "ninguém clicou" de "não encontrei" e preserve o valor anterior em vez de gravar zero por cima de um número correto.
| Status | Descrição |
|---|---|
400 | Lista vazia ou com mais de 100 slugs |
401 | API Key inválida ou expirada |
429 | Rate limit do plano atingido |
500 | Erro interno do servidor |
| Plano | Limite |
|---|---|
| Free | 5 links/hora (sem autenticação) |
| Starter | 100 requisições/hora |
| Pro | 1.000 requisições/hora |
| Elite | 10.000 requisições/hora |
Precisa de ajuda? Entre em contato em goolink.app/contato