Referência API REST

URL base: https://clicaven.com

Todos os pedidos devolvem JSON. A autenticação usa chaves API (Bearer).

OpenAPI : Transferir o esquema OpenAPI (JSON) — Importável no Postman, Insomnia, ou qualquer ferramenta compatível com OpenAPI 3.

Autenticação

A API ClicAven usa chaves API para autenticação. Cada pedido deve incluir a sua chave no cabeçalho Authorization.

Como obter uma chave API
  1. Inicie sessão na sua conta ClicAven e acceda à página Chaves API
  2. Atribua um nome à sua chave e clique em Criar
  3. Copie a chave apresentada — não voltará a estar visível
Headers necessários
Authorization: Bearer ca_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
As chaves API não expiram por defeito. Pode revogá-las a qualquer momento na página Chaves API. O acesso à API está incluído em todos os planos, incluindo o plano gratuito.

POST/api/links

Cria um novo link curto. Requer uma chave API válida.

Headers necessários
Authorization: Bearer ca_votre_cle_api
Content-Type: application/json
Body do pedido
{
  "url": "https://example.com/une-url-tres-longue",
  "title": "Promo Noël LinkedIn",
  "customSlug": "promo-noel",
  "domainHostname": "go.mon-domaine.com",
  "permanent": true
}

O campo title é opcional (120 caracteres no máximo). Serve para reencontrar o link no dashboard e na exportação CSV; nunca é apresentado publicamente.

Campos do link
Campo Tipo Acesso Descrição
urlstringleitura / escritaURL de destino. Obrigatório.
titlestring|nullleitura / escritaRótulo para reencontrar o link no dashboard e na exportação. 120 caracteres no máximo, nunca apresentado publicamente.
customSlugstring|nullleitura / escritaCódigo curto personalizado. Planos Pro e superiores. Gerado automaticamente se omitido.
domainHostnamestring|nullleitura / escritaUm dos seus domínios personalizados verificados. O domínio predefinido é usado se omitido.
permanentbooleanleitura / escritatrue devolve um redirecionamento 301 (permanente), false um 302 (temporário). Por predefinição true.
iduuidapenas leituraIdentificador UUID do link.
shortstringapenas leituraCódigo curto gerado.
shortUrlstringapenas leituraURL curto completo, pronto a partilhar.
clickCountintegerapenas leituraTotal de cliques desde a criação.
createdAtdate-timeapenas leituraData de criação.

O esquema completo e atualizado é publicado em formato OpenAPI 3.1: /api/openapi.json e /api/openapi.yaml. É gerado a partir do código, pelo que é a referência que faz fé.

Resposta (201 Created)
{
  "@context": "/api/contexts/Link",
  "@id": "/api/links/01a08b81-78ad-7720-a4c8-3133c7752bb9",
  "@type": "Link",
  "id": "01a08b81-78ad-7720-a4c8-3133c7752bb9",
  "url": "https://example.com/une-url-tres-longue",
  "short": "aB3xYz",
  "shortUrl": "https://clicaven.com/aB3xYz",
  "title": "Promo Noël LinkedIn",
  "clickCount": 0,
  "createdAt": "2026-04-18T12:00:00+00:00",
  "permanent": true,
  "domainHostname": null
}
Exemplo curl
curl -s -X POST https://clicaven.com/api/links \
  -H "Authorization: Bearer ca_votre_cle_api" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/page-longue?utm_source=api","title":"Campagne API"}'

GET/api/links

Lista todos os seus links curtos. Requer uma chave API válida.

Exemplo curl
curl -s https://clicaven.com/api/links \
  -H "Authorization: Bearer ca_votre_cle_api" | jq .
Resposta (200 OK)
{
  "@context": "/api/contexts/Link",
  "@id": "/api/links",
  "@type": "Collection",
  "totalItems": 1,
  "member": [
    {
      "@id": "/api/links/01a08b81-78ad-7720-a4c8-3133c7752bb9",
      "@type": "Link",
      "id": "01a08b81-78ad-7720-a4c8-3133c7752bb9",
      "url": "https://example.com/page-longue",
      "short": "aB3xYz",
      "shortUrl": "https://clicaven.com/aB3xYz",
      "title": "Promo Noël LinkedIn",
      "clickCount": 14,
      "createdAt": "2026-04-18T12:00:00+00:00",
      "permanent": true,
      "domainHostname": null
    }
  ]
}

GET/api/links/{id}

Obtém os detalhes de um link específico, incluindo o contador de cliques.

Exemplo curl
curl -s https://clicaven.com/api/links/01a08b81-78ad-7720-a4c8-3133c7752bb9 \
  -H "Authorization: Bearer ca_votre_cle_api" | jq .
Resposta (200 OK)
{
  "@context": "/api/contexts/Link",
  "@id": "/api/links/01a08b81-78ad-7720-a4c8-3133c7752bb9",
  "@type": "Link",
  "id": "01a08b81-78ad-7720-a4c8-3133c7752bb9",
  "url": "https://example.com/page-longue",
  "short": "aB3xYz",
  "shortUrl": "https://clicaven.com/aB3xYz",
  "title": "Promo Noël LinkedIn",
  "clickCount": 14,
  "createdAt": "2026-04-18T12:00:00+00:00",
  "permanent": true,
  "domainHostname": null
}

DELETE/api/links/{id}

Elimina definitivamente um link. O redirecionamento ficará imediatamente inativo. Esta ação é irreversível.

Exemplo curl
curl -s -X DELETE https://clicaven.com/api/links/01a08b81-78ad-7720-a4c8-3133c7752bb9 \
  -H "Authorization: Bearer ca_votre_cle_api"
# → 204 No Content (sucesso, sem body)

6. Códigos de erro

Código HTTP Significado Causa frequente
400Bad RequestURL em falta ou inválido no body
401UnauthorizedChave API ausente, expirada ou inválida
403ForbiddenAcesso a um link de outro utilizador
404Not FoundO ID do link não existe
429Too Many RequestsQuota mensal de links atingida (rate limit)
500Server ErrorErro interno — contacte o suporte via /contact
Formato de erro
{
  "error": "authentication_failed",
  "message": "Invalid or expired API key."
}

Exemplos PHP e JavaScript

Não precisa de SDK: a API é uma simples API REST JSON. Eis exemplos prontos a copiar para as linguagens mais comuns.

PHP
<?php
// ClicAven API — PHP example (no SDK needed)
$apiKey = 'ca_votre_cle_api';
$url    = 'https://example.com/une-url-tres-longue';

$ch = curl_init('https://clicaven.com/api/links');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['url' => $url]),
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);

echo $response['shortUrl'];
// => https://clicaven.com/aB3xYz
JavaScript (Node.js / fetch)
const API_KEY = 'ca_votre_cle_api';

const res = await fetch('https://clicaven.com/api/links', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ url: 'https://example.com/une-url-tres-longue' }),
});

const link = await res.json();
console.log(link.shortUrl);
// => https://clicaven.com/aB3xYz
Link com slug personalizado (Pro+)
curl -s -X POST https://clicaven.com/api/links \
  -H "Authorization: Bearer ca_votre_cle_api" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/promo","customSlug":"ma-promo"}'
{
  "id": 43,
  "short": "rT9kWm",
  "customSlug": "ma-promo",
  "shortUrl": "https://clicaven.com/ma-promo",
  "url": "https://example.com/promo",
  "clickCount": 0,
  "createdAt": "2026-04-25T14:00:00+00:00"
}

Os slugs personalizados requerem um plano Pro ou superior. 3 a 60 caracteres, letras, números e hífenes.

Questões sobre a API? Contacte-nos. Consulte também a documentação geral.