LogoLikeDo文档
LogoLikeDo文档
首页

快速开始

LikeDo 是什么

用户指南

短链接服务分享链接统计数据文章与博客管理文章双向链接文章抽奖文章编辑器使用指南自定义域名文件存储邮件服务AI聊天助手AI 工具

系统特性

积分系统仪表板分析邀请系统

API 参考

Open API 概览API 密钥短链接 API邮箱 API文章 API
X (Twitter)

短链接 API

使用 RESTful API 编程方式创建和管理短链接

概述

短链接 API 允许您使用 API 密钥认证以编程方式创建、获取、更新和列出短链接。所有接口遵循 RESTful 设计原则。

体验平台

您可以在 API 调试器 中测试 API 接口。

认证方式

所有接口都需要 API 密钥认证。使用 API 密钥有两种方式:

  1. 授权请求头(推荐):

    Authorization: Bearer YOUR_API_KEY
  2. 查询参数:

    ?key=YOUR_API_KEY

频率限制

根据您的订阅等级配置频率限制:

  • 免费计划: 每小时 200 次请求
  • 专业计划: 每小时 2000 次请求
  • 终身计划: 每小时 5000 次请求

每月配额

短链接创建受基于订阅的每月配额限制:

  • 免费计划: 每月 50 个链接
  • 专业计划: 每月 1,000 个链接
  • 终身计划: 无限制

接口列表

获取链接列表

GET /api/v1/links

获取您的短链接分页列表,支持筛选和排序。

查询参数

参数类型默认值描述
pagenumber1页码(最小值:1)
limitnumber10每页数量(1-100)
searchstring-在 slug、目标 URL、描述中搜索
sortBystringcreatedAt排序字段:slug、createdAt、clicks、domain
sortOrderstringdesc排序方式:asc 或 desc
domainstring-按域名筛选
tagstring-按标签筛选
activeboolean-按激活状态筛选
visibleboolean-按可见性筛选

请求示例

curl -X GET "https://like.do/api/v1/links?page=1&limit=10&sortBy=clicks&sortOrder=desc" \
  -H "Authorization: Bearer YOUR_API_KEY"

成功响应 (200 OK)

{
  "success": true,
  "data": {
    "items": [
      {
        "id": "abc123xyz",
        "slug": "example",
        "targetUrl": "https://example.com",
        "domain": "ig.do",
        "shortUrl": "https://ig.do/example",
        "description": "示例链接",
        "tag": "营销",
        "clicks": 42,
        "active": true,
        "visible": false,
        "expiration": "-1",
        "createdAt": "2026-01-04T12:00:00.000Z",
        "updatedAt": "2026-01-04T12:00:00.000Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 10,
      "total": 25,
      "totalPages": 3
    }
  }
}

创建链接

POST /api/v1/links

创建新的短链接。受每月配额限制。

请求体

{
  "slug": "my-link",
  "targetUrl": "https://example.com",
  "domain": "ig.do",
  "visible": false,
  "active": true,
  "expiration": "-1",
  "password": "123456",
  "description": "我的短链接",
  "tag": "营销"
}

参数说明

参数类型必填描述
slugstring是URL 短标识(3-100 字符,字母数字、连字符、下划线)
targetUrlstring是目标 URL(必须是有效的 URL)
domainstring是短链接使用的域名
visibleboolean否链接是否在公开列表中可见(默认:false)
activeboolean否链接是否激活(默认:true)
expirationstring否过期设置(默认:"-1" 表示永不过期)
passwordstring否6 字符密码用于链接保护
descriptionstring否链接描述(最多 500 字符)
tagstring否用于分类的标签(最多 50 字符)

请求示例

curl -X POST https://like.do/api/v1/links \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "example",
    "targetUrl": "https://example.com",
    "domain": "ig.do"
  }'

成功响应 (201 Created)

{
  "success": true,
  "data": {
    "id": "abc123xyz",
    "slug": "example",
    "targetUrl": "https://example.com",
    "domain": "ig.do",
    "shortUrl": "https://ig.do/example",
    "visible": false,
    "active": true,
    "expiration": "-1",
    "createdAt": "2026-01-04T12:00:00.000Z"
  }
}

错误响应 - 配额超限 (403 Forbidden)

{
  "success": false,
  "error": "您已达到免费计划的每月 50 个链接限制。升级到专业版可获得每月 1,000 个链接,或终身版可获得无限链接。",
  "quota": {
    "planType": "free",
    "currentCount": 50,
    "limit": 50,
    "remaining": 0
  }
}

获取单个链接

GET /api/v1/links/{id}

通过 ID 获取特定短链接的详细信息。

请求示例

curl -X GET https://like.do/api/v1/links/abc123xyz \
  -H "Authorization: Bearer YOUR_API_KEY"

成功响应 (200 OK)

{
  "success": true,
  "data": {
    "id": "abc123xyz",
    "slug": "example",
    "targetUrl": "https://example.com",
    "domain": "ig.do",
    "shortUrl": "https://ig.do/example",
    "description": "示例链接",
    "tag": "营销",
    "clicks": 42,
    "active": true,
    "visible": false,
    "expiration": "-1",
    "createdAt": "2026-01-04T12:00:00.000Z",
    "updatedAt": "2026-01-04T12:00:00.000Z"
  }
}

更新链接

PUT /api/v1/links/{id}

更新现有的短链接。您只能更新自己拥有的链接。

请求体

{
  "targetUrl": "https://new-example.com",
  "description": "更新后的描述",
  "tag": "更新标签",
  "active": true,
  "visible": false,
  "password": "newpwd",
  "expiration": "-1"
}

参数说明

所有参数都是可选的。只包含您想要更新的字段。

参数类型描述
targetUrlstring新的目标 URL
descriptionstring新的描述(最多 500 字符)
tagstring新的标签(最多 50 字符)
activeboolean激活状态
visibleboolean可见性状态
passwordstring新的 6 字符密码(或 null 以移除)
expirationstring过期设置

请求示例

curl -X PUT https://like.do/api/v1/links/abc123xyz \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "targetUrl": "https://new-example.com",
    "description": "更新后的链接"
  }'

成功响应 (200 OK)

{
  "success": true,
  "data": {
    "id": "abc123xyz",
    "updatedAt": "2026-01-04T13:00:00.000Z"
  }
}

域名访问权限

基于您的订阅等级的域名访问权限:

  • 免费域名(ig.do):所有用户可用
  • 专业域名(kfc.sh、uv.do):需要专业订阅或终身计划
  • 自定义域名:根据订阅提供用户创建的域名

如果您尝试在没有适当订阅的情况下使用专业域名,将收到 403 错误。

错误响应

401 未授权 - 缺少 API 密钥

{
  "success": false,
  "error": "Missing API key. Provide it via Authorization header (Bearer token) or ?key= query parameter"
}

401 未授权 - 无效的 API 密钥

{
  "success": false,
  "error": "Invalid or expired API key: [error details]"
}

400 错误请求 - 无效数据

{
  "success": false,
  "error": "Invalid request data",
  "details": [
    {
      "path": ["slug"],
      "message": "Slug must be at least 3 characters"
    }
  ]
}

403 禁止访问 - 域名权限

{
  "success": false,
  "error": "You don't have permission to use the domain \"kfc.sh\". Premium domains require an active Pro subscription or Lifetime plan."
}

404 未找到

{
  "success": false,
  "error": "Link not found or access denied"
}

409 冲突 - Slug 已存在

{
  "success": false,
  "error": "A link with this slug already exists"
}

代码示例

JavaScript (Fetch)

// 创建链接
const response = await fetch('https://like.do/api/v1/links', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    slug: 'example',
    targetUrl: 'https://example.com',
    domain: 'ig.do',
  }),
});

const data = await response.json();
console.log(data);

// 获取链接详情
const linkId = data.data.id;
const getResponse = await fetch(`https://like.do/api/v1/links/${linkId}`, {
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
  },
});

const linkData = await getResponse.json();
console.log(linkData);

// 更新链接
const updateResponse = await fetch(`https://like.do/api/v1/links/${linkId}`, {
  method: 'PUT',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    description: '更新后的描述',
  }),
});

const updateData = await updateResponse.json();
console.log(updateData);

Python (requests)

import requests

api_key = 'YOUR_API_KEY'
base_url = 'https://like.do/api/v1/links'
headers = {
    'Authorization': f'Bearer {api_key}',
    'Content-Type': 'application/json',
}

# 创建链接
data = {
    'slug': 'example',
    'targetUrl': 'https://example.com',
    'domain': 'ig.do',
}
response = requests.post(base_url, headers=headers, json=data)
print(response.json())

# 获取链接详情
link_id = response.json()['data']['id']
get_response = requests.get(f'{base_url}/{link_id}', headers=headers)
print(get_response.json())

# 更新链接
update_data = {
    'description': '更新后的描述',
}
update_response = requests.put(f'{base_url}/{link_id}', headers=headers, json=update_data)
print(update_response.json())

# 获取链接列表
list_response = requests.get(f'{base_url}?page=1&limit=10', headers=headers)
print(list_response.json())

创建 API 密钥

  1. 在仪表板中导航到 设置 > API 密钥
  2. 点击 创建 API 密钥
  3. 根据您的计划配置频率限制
  4. 安全保存您的 API 密钥(仅显示一次)

最佳实践

  1. 安全存储 API 密钥:永远不要将 API 密钥提交到版本控制
  2. 使用环境变量:将密钥存储在 .env 文件或安全保险库中
  3. 监控频率限制:跟踪您的使用情况以避免达到限制
  4. 验证 slug:在创建之前检查 slug 的可用性以避免冲突
  5. 优雅地处理错误:为配额限制实现适当的错误处理
  6. 使用 HTTPS:始终使用安全连接进行 API 请求
  7. 检查配额:监控您的每月链接创建配额
  8. 批量操作:高效使用列表接口进行批量操作

注意事项

  • 通过 API 创建的所有链接都会标记 channel: "api" 以便跟踪
  • Slug 的唯一性在所有用户和域名之间全局执行
  • 保留字(例如 api、admin、dashboard)不能用作 slug
  • 每月配额在每月初重置
  • 配额限制基于每月订阅的第一天
  • Pro 和 Lifetime 用户可使用 API 调用日志

API 密钥

管理 API 密钥以安全访问 LikeDo 开放接口

邮箱 API

使用 API 密钥认证管理邮箱地址

目录

概述
体验平台
认证方式
频率限制
每月配额
接口列表
获取链接列表
查询参数
请求示例
成功响应 (200 OK)
创建链接
请求体
参数说明
请求示例
成功响应 (201 Created)
错误响应 - 配额超限 (403 Forbidden)
获取单个链接
请求示例
成功响应 (200 OK)
更新链接
请求体
参数说明
请求示例
成功响应 (200 OK)
域名访问权限
错误响应
401 未授权 - 缺少 API 密钥
401 未授权 - 无效的 API 密钥
400 错误请求 - 无效数据
403 禁止访问 - 域名权限
404 未找到
409 冲突 - Slug 已存在
代码示例
JavaScript (Fetch)
Python (requests)
创建 API 密钥
最佳实践
注意事项