REST API
Crie links curtos, leia estatísticas de cliques e gere QR codes a partir do seu código. JSON sobre HTTPS e um único cabeçalho para autenticação.
- URL base
- https://urlik.xyz/api/
- Autenticação
- X-Api-Key
- Formato
- JSON · UTF-8
- Métodos
- 10
- Webhooks
- Webhooks
Início rápido
Seu primeiro link curto em uma única requisição.
Pegue uma chave
Crie-a na sua conta, na seção API. As permissões podem ser limitadas.
Envie a requisição
Faça um POST com a URL longa e o cabeçalho X-Api-Key, e um alias se quiser.
Use o resultado
return.url é o link curto, return.qr o QR code e return.stats a página de estatísticas.
Sua primeira requisição
curl -X POST https://urlik.xyz/api/getLink.json \ -H "X-Api-Key: $URLIK_KEY" \ -d "url=https://example.com/spring-sale" \ -d "alias=spring" \ -d "mode=redirect"
const res = await fetch("https://urlik.xyz/api/getLink.json", {
method: "POST",
headers: { "X-Api-Key": process.env.URLIK_KEY },
body: new URLSearchParams({ url: "https://example.com/spring-sale", alias: "spring" })
});
const data = await res.json();
console.log(data.return.url); // https://urlik.xyz/spring$ch = curl_init("https://urlik.xyz/api/getLink.json");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_POSTFIELDS => ["url" => "https://example.com/spring-sale", "alias" => "spring"],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
echo $data["return"]["url"]; // https://urlik.xyz/springimport os, requests
r = requests.post(
"https://urlik.xyz/api/getLink.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
data={"url": "https://example.com/spring-sale", "alias": "spring"},
)
print(r.json()["return"]["url"]) # https://urlik.xyz/spring{
"status": "success",
"return": {
"hex": "spring",
"url": "https://urlik.xyz/spring",
"qr": "https://urlik.xyz/qr/spring.png",
"stats": "https://urlik.xyz/spring+",
"mode": "redirect"
}
}Autenticação
Envie sua chave no cabeçalho X-Api-Key. O encurtamento básico funciona sem chave; links criados com chave pertencem à sua conta.
Formato da resposta
Todo método responde em JSON: status é success ou error, message explica o erro e return traz os dados.
{ "status": "success", "message": "...", "return": { ... } }Links
POST/api/getLink.jsonCriar um link curtoChave opcional
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
url | obrigatório | URL de destino, http ou https |
alias | opcional | Código próprio, 2–32 caracteres: letras, dígitos, _ e - |
mode | opcional | redirect (padrão), preview ou frame |
expire | opcional | Validade em segundos; 0 = sem expiração |
password | opcional | Palavra-passe exigida para continuar |
curl -X POST https://urlik.xyz/api/getLink.json -H "X-Api-Key: $URLIK_KEY" \ -d "url=https://example.com/spring-sale"
const res = await fetch("https://urlik.xyz/api/getLink.json", {
method: "POST",
headers: { "X-Api-Key": process.env.URLIK_KEY },
body: new URLSearchParams({ url: "https://example.com/spring-sale" })
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/getLink.json");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_POSTFIELDS => ["url" => "https://example.com/spring-sale"],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.post(
"https://urlik.xyz/api/getLink.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
data={"url": "https://example.com/spring-sale"},
)
print(r.json())POST/api/stats.jsonEstatísticas do link: cliques por dia, origens, dispositivos e navegadoresChave opcional
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
code | obrigatório | Código curto do link |
curl -X POST https://urlik.xyz/api/stats.json -H "X-Api-Key: $URLIK_KEY" \ -d "code=spring"
const res = await fetch("https://urlik.xyz/api/stats.json", {
method: "POST",
headers: { "X-Api-Key": process.env.URLIK_KEY },
body: new URLSearchParams({ code: "spring" })
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/stats.json");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_POSTFIELDS => ["code" => "spring"],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.post(
"https://urlik.xyz/api/stats.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
data={"code": "spring"},
)
print(r.json())POST/api/links.jsonListar seus linksExige chave
Sem parâmetros: a chave identifica sua conta.
curl -X POST https://urlik.xyz/api/links.json -H "X-Api-Key: $URLIK_KEY"
const res = await fetch("https://urlik.xyz/api/links.json", {
method: "POST",
headers: { "X-Api-Key": process.env.URLIK_KEY },
body: new URLSearchParams({ })
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/links.json");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_POSTFIELDS => [],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.post(
"https://urlik.xyz/api/links.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
data={},
)
print(r.json())POST/api/update.jsonAlterar um linkExige chave
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
code | obrigatório | Código curto do link |
url, mode, expire, password | opcional | Novos valores dos campos que você altera |
curl -X POST https://urlik.xyz/api/update.json -H "X-Api-Key: $URLIK_KEY" \ -d "code=spring"
const res = await fetch("https://urlik.xyz/api/update.json", {
method: "POST",
headers: { "X-Api-Key": process.env.URLIK_KEY },
body: new URLSearchParams({ code: "spring" })
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/update.json");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_POSTFIELDS => ["code" => "spring"],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.post(
"https://urlik.xyz/api/update.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
data={"code": "spring"},
)
print(r.json())POST/api/delete.jsonExcluir um linkExige chave
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
code | obrigatório | Código curto do link |
curl -X POST https://urlik.xyz/api/delete.json -H "X-Api-Key: $URLIK_KEY" \ -d "code=spring"
const res = await fetch("https://urlik.xyz/api/delete.json", {
method: "POST",
headers: { "X-Api-Key": process.env.URLIK_KEY },
body: new URLSearchParams({ code: "spring" })
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/delete.json");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_POSTFIELDS => ["code" => "spring"],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.post(
"https://urlik.xyz/api/delete.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
data={"code": "spring"},
)
print(r.json())Mídia, QR e e-mail temporário
Estes métodos exigem o cabeçalho X-Api-Key ou uma chamada via RapidAPI.
GET/api/download.jsonTransferir vídeo ou foto de mais de 1000 sites: formatos com links assinadosExige chave
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
url | obrigatório | Endereço de uma página com vídeo ou foto |
curl -H "X-Api-Key: $URLIK_KEY" "https://urlik.xyz/api/download.json?url=https%3A%2F%2Fexample.com%2Fspring-sale"
const res = await fetch("https://urlik.xyz/api/download.json?" + new URLSearchParams({ url: "https://example.com/spring-sale" }), {
headers: { "X-Api-Key": process.env.URLIK_KEY }
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/download.json?" . http_build_query(["url" => "https://example.com/spring-sale"]));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.get(
"https://urlik.xyz/api/download.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
params={"url": "https://example.com/spring-sale"},
)
print(r.json())GET/api/qr.jsonGerar um QR code em PNG ou SVGExige chave
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
data | obrigatório | Texto ou endereço a codificar |
format | opcional | png ou svg |
fg, bg | opcional | Cor do código e do fundo, hex |
ecc | opcional | Correção de erros: L, M, Q ou H |
size | opcional | Tamanho da imagem em pixels |
curl -H "X-Api-Key: $URLIK_KEY" "https://urlik.xyz/api/qr.json?data=https%3A%2F%2Furlik.xyz"
const res = await fetch("https://urlik.xyz/api/qr.json?" + new URLSearchParams({ data: "https://urlik.xyz" }), {
headers: { "X-Api-Key": process.env.URLIK_KEY }
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/qr.json?" . http_build_query(["data" => "https://urlik.xyz"]));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.get(
"https://urlik.xyz/api/qr.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
params={"data": "https://urlik.xyz"},
)
print(r.json())GET/api/mailbox.jsonObter ou criar um endereço temporárioExige chave
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
address | username | opcional | Endereço temporário ou nome para um novo; vazio cria um aleatório |
curl -H "X-Api-Key: $URLIK_KEY" "https://urlik.xyz/api/mailbox.json?address=demo%40example.com"
const res = await fetch("https://urlik.xyz/api/mailbox.json?" + new URLSearchParams({ address: "[email protected]" }), {
headers: { "X-Api-Key": process.env.URLIK_KEY }
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/mailbox.json?" . http_build_query(["address" => "[email protected]"]));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.get(
"https://urlik.xyz/api/mailbox.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
params={"address": "[email protected]"},
)
print(r.json())GET/api/messages.jsonListar mensagens de uma caixa temporáriaExige chave
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
address | obrigatório | Endereço temporário |
curl -H "X-Api-Key: $URLIK_KEY" "https://urlik.xyz/api/messages.json?address=demo%40example.com"
const res = await fetch("https://urlik.xyz/api/messages.json?" + new URLSearchParams({ address: "[email protected]" }), {
headers: { "X-Api-Key": process.env.URLIK_KEY }
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/messages.json?" . http_build_query(["address" => "[email protected]"]));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.get(
"https://urlik.xyz/api/messages.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
params={"address": "[email protected]"},
)
print(r.json())GET/api/message.jsonLer uma mensagemExige chave
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
address | obrigatório | Endereço temporário |
id | obrigatório | Id da mensagem na lista da caixa |
curl -H "X-Api-Key: $URLIK_KEY" "https://urlik.xyz/api/message.json?address=demo%40example.com&id=1"
const res = await fetch("https://urlik.xyz/api/message.json?" + new URLSearchParams({ address: "[email protected]", id: "1" }), {
headers: { "X-Api-Key": process.env.URLIK_KEY }
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/message.json?" . http_build_query(["address" => "[email protected]", "id" => "1"]));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.get(
"https://urlik.xyz/api/message.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
params={"address": "[email protected]", "id": "1"},
)
print(r.json())Nada encontrado
Nenhum método corresponde. Tente um caminho como qr ou stats.
Experimentar ao vivo
Explore e chame cada endpoint aqui mesmo. Cole a sua chave de API no botão Authorize para fazer pedidos autenticados.
Incorporar o encurtador
Cole este excerto em qualquer página para adicionar um encurtador de URL funcional com ligação para urlik.xyz:
<iframe src="https://urlik.xyz/embed" style="width:100%;max-width:520px;height:150px;border:0" title="URL shortener by urlik.xyz" loading="lazy"></iframe>
Uma API REST simples para links curtos
A API REST do Urlik permite criar, ler, atualizar e eliminar links curtos a partir do seu próprio código e obter estatísticas de cliques em JSON. É uma API HTTPS simples — envia um pedido POST e recebe uma resposta JSON previsível — por isso funciona a partir de qualquer linguagem ou plataforma.
O encurtamento básico não precisa de credenciais. Para associar links à sua conta e os gerir mais tarde, envie a sua chave no cabeçalho X-Api-Key, que encontra na sua conta. As respostas seguem sempre a mesma estrutura — status, message e return — mostrada abaixo.
Preciso de uma chave API?
Não para o encurtamento básico — pode criar um link de forma anónima. Uma chave, disponível na sua conta, associa os links a si e é necessária para os listar, atualizar ou eliminar.
Em que formato são as respostas?
Cada endpoint devolve JSON com um status, uma message legível e um objeto return que contém os dados, por isso o processamento é consistente em todas as chamadas.
Há um limite de pedidos?
Sim, os pedidos têm limites por utilizador para manter o serviço rápido e justo. As chaves autenticadas têm um limite mais alto do que o tráfego anónimo.
Posso usá-la a partir de qualquer linguagem?
Sim. É uma API JSON HTTPS padrão, por isso qualquer coisa que consiga enviar um pedido POST — curl, Python, PHP, JavaScript ou Go — pode usá-la.
O Urlik reúne num só lugar um conjunto de ferramentas web rápidas e amigas da privacidade, para que possa tratar das tarefas de links do dia a dia sem alternar entre serviços separados nem criar contas. Quer esteja a partilhar uma campanha, a receber um pagamento, a confirmar um registo ou a enviar um ficheiro confidencial, há uma ferramenta dedicada e gratuita pronta para o trabalho.