开放 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)| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
url | string | 必填 | 要缩短的长链接,支持 http/https,可省略协议(默认 http)。 |
custom | string | 可选 | 自定义短码,3-32 位字母/数字/下划线/短横线。 |
expiresInDays | number | 可选 | 有效天数(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'];