短链接 · API

开放 API 文档

通过简单的 HTTP 接口,即可把长链接转换为短链接并生成二维码。所有接口返回 JSON(二维码图片接口除外)。

基础地址 (Base URL)
https://dl.8ue.top

认证:默认开放调用,无需鉴权。为防滥用,每个 IP 每分钟最多创建 60 条短链(可由服务端配置)。

POST /api/shorten GET /:code GET /api/info/:code GET /api/qr/:code GET /api/qr GET /api/stats GET /api/health

创建短链接

POST /api/shorten

把一个长链接转换为短链接,并返回短链地址、二维码(Base64)以及二维码图片地址。

请求体 (JSON)
字段类型必填说明
urlstring必填要缩短的长链接,支持 http/https,可省略协议(默认 http)。
customstring可选自定义短码,3-32 位字母/数字/下划线/短横线。
expiresInDaysnumber可选有效天数(1-3650),到期后短链失效。
请求示例
# curl
curl -X POST https://dl.8ue.top/api/shorten \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/a/very/long/path?id=123"}'
响应示例 (200)
{
  "ok": true,
  "code": "a1B2c3",
  "shortUrl": "https://dl.8ue.top/a1B2c3",
  "longUrl": "https://example.com/a/very/long/path?id=123",
  "qrCode": "data:image/png;base64,iVBORw0KGgo...",
  "qrUrl": "https://dl.8ue.top/api/qr/a1B2c3",
  "clicks": 0,
  "createdAt": 1739600000000,
  "expiresAt": null
}
错误响应
{ "ok": false, "error": "无效的链接地址,仅支持 http/https" }

访问短链接(跳转)

GET/:code

在浏览器打开短链接会 302 跳转到原始长链接,并累加点击计数。链接过期返回 410,不存在返回 404

GET https://dl.8ue.top/a1B2c3   → 302 Location: https://example.com/...

查询短链信息

GET/api/info/:code

获取某个短码的详情与统计信息,不产生跳转、不计数。

curl https://dl.8ue.top/api/info/a1B2c3
{
  "ok": true,
  "code": "a1B2c3",
  "shortUrl": "https://dl.8ue.top/a1B2c3",
  "longUrl": "https://example.com/...",
  "clicks": 42,
  "createdAt": 1739600000000,
  "expiresAt": null,
  "lastVisit": 1739700000000,
  "expired": false
}

获取短链二维码(PNG)

GET/api/qr/:code

直接返回 PNG 图片,可用 size 参数指定像素(默认 320)。可直接用于 <img>

<img src="https://dl.8ue.top/api/qr/a1B2c3?size=400" />

任意文本生成二维码(PNG)

GET/api/qr?text=...

为任意文本或链接直接生成二维码,不写入数据库。

参数必填说明
text必填要编码的文本或 URL
size可选图片像素,默认 320
https://dl.8ue.top/api/qr?text=hello%20world&size=300

统计概览

GET/api/stats
{ "ok": true, "totalLinks": 128, "totalClicks": 3560 }

健康检查

GET/api/health
{ "ok": true, "service": "duanlianjie", "time": 1739600000000 }

接入示例

JavaScript (fetch)
const res = await fetch('https://dl.8ue.top/api/shorten', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ url: 'https://example.com/long' })
});
const data = await res.json();
console.log(data.shortUrl);
Python (requests)
import requests
r = requests.post('https://dl.8ue.top/api/shorten',
                  json={'url': 'https://example.com/long'})
print(r.json()['shortUrl'])
PHP (curl)
$ch = curl_init('https://dl.8ue.top/api/shorten');
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
  CURLOPT_POSTFIELDS => json_encode(['url' => 'https://example.com/long']),
  CURLOPT_RETURNTRANSFER => true,
]);
$out = json_decode(curl_exec($ch), true);
echo $out['shortUrl'];