Goolink

Documentação da API

Integre o Goolink ao seu sistema e encurte links programaticamente.

Autenticação

Todas as requisições à API devem incluir um header Authorization com sua API Key.

Authorization: Bearer sua_api_key_aqui

Gere sua API Key em Configurações → API Keys.

Base URL

https://goolink.app/v1
POST

/v1/shorten

Encurta uma URL e retorna o link curto.

Corpo da requisição (JSON)

CampoTipoObrigatórioDescrição
urlstring
Sim
URL de destino válida
slugstring
Não
Slug customizado (3-50 chars, alfanumérico, _ e -)
titlestring
Não
Título do link (máx 100 chars)
projectIdstring
Não
ID do projeto para associar o link
domainstring
Não
Domínio customizado já verificado para gerar o link curto. Se omitido, usa goolink.app.

Exemplo com cURL

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"
  }'

Resposta de sucesso
201

{
  "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"
}

Códigos de erro

StatusDescriçã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
GET

/v1/links/{slug}/stats

Retorna a contagem de cliques de um link.

Exemplo com cURL

curl https://goolink.app/v1/links/meu-link/stats \
  -H "Authorization: Bearer sua_api_key"

Resposta de sucesso
200

{
  "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âmetros opcionais

ParâmetroDescrição
groupBy=hourAdiciona hourly: cliques por hora (UTC). Horas sem clique são omitidas.
daysJanela do groupBy=hour, de 1 a 365. Padrão 30.
domainDomínio customizado onde o slug foi criado.

Códigos de erro

StatusDescriçã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
POST

/v1/links/stats

Cliques de até 100 links numa única chamada.

Exemplo com cURL

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"] }'

Resposta de sucesso
200

{
  "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.

Códigos de erro

StatusDescriçã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

Rate Limits

PlanoLimite
Free5 links/hora (sem autenticação)
Starter100 requisições/hora
Pro1.000 requisições/hora
Elite10.000 requisições/hora

Precisa de ajuda? Entre em contato em goolink.app/contato