快速开始
所有接口默认返回 JSON。前端直连,无需鉴权。
申请 Token
curl -X POST https://api.meting.io/v1/token
返回的 token 用于后续调用,每日 100 次上限。也可点击右上角"申请 Token"按钮在浏览器中获取。
示例请求
curl -H "Authorization: Bearer mt_xxxxxxxx" \ "https://api.meting.io/v1/netease/search?q=晴天&limit=5"
查询可用平台(无需 Token)
curl https://api.meting.io/v1/providers
支持的平台
| provider | 平台 | 歌曲 ID 类型 |
|---|---|---|
netease | 网易云音乐 | 数字 ID |
tencent | QQ 音乐 | mid 字符串 |
kugou | 酷狗音乐 | hash(大写) |
Base URL & 路径规则
所有接口统一遵循以下路径结构:
https://api.meting.io/v1/{provider}/{resource}/{id...}
鉴权
除 /v1/providers 和 /v1/token 外,所有接口需携带 token。每个 token 每日 100 次调用上限,UTC 0 点重置。
申请 Token
点击右上角 申请 Token 按钮,或直接调用:
curl -X POST https://api.meting.io/v1/token
返回示例:
{
"token": "mt_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"daily_limit": 100,
"reset": "UTC 00:00",
"usage": "send as 'Authorization: Bearer <token>' header"
}
每个 IP 每天最多申请 1 个 token;token 永久有效,无需续期。
调用
在请求头加入 Authorization: Bearer <token>:
curl -H "Authorization: Bearer mt_xxx" \ "https://api.meting.io/v1/netease/search?q=晴天"
或使用 query 参数 ?token=mt_xxx(不推荐在浏览器地址栏暴露)。
响应头
每次成功调用都会返回剩余配额信息:
| Header | 说明 |
|---|---|
X-RateLimit-Limit | 每日上限 |
X-RateLimit-Remaining | 当日剩余次数 |
X-RateLimit-Reset | 下次重置时间(Unix 秒) |
错误码
| 状态 | 含义 |
|---|---|
401 | 未携带 token 或 token 无效 |
429 | 当日配额已用尽,或同 IP 已申请过 token |
搜索
参数 q 或 keyword 均可。返回 items / songs 列表。
https://api.meting.io/v1/netease/search?q=晴天&page=1&limit=10
单曲详情
https://api.meting.io/v1/netease/songs/210049
播放地址
加 redirect=false 返回 JSON,含播放地址 url,可直接用于播放或下载。
音质 quality 可选:standard(128 kbps)· exhigh(320 kbps,默认)。返回 mp3 格式,适合网页直接播放。
https://api.meting.io/v1/netease/songs/210049/stream?redirect=false&quality=exhigh
歌词
默认返回 LRC 文本;加 format=json 返回结构化歌词。
封面
默认 302 跳转到图片地址;加 redirect=false 返回 {"url":"..."}。
歌单
返回歌单名、封面、描述、歌曲列表。
https://api.meting.io/v1/netease/playlists/2859214503
专辑 / 歌手
使用示例
JavaScript
const API = 'https://api.meting.io';
const TOKEN = 'mt_xxxxxxxx'; // 从 POST /v1/token 获取
const headers = { Authorization: `Bearer ${TOKEN}` };
// 搜索
const res = await fetch(`${API}/v1/netease/search?q=周杰伦&limit=10`, { headers });
const { items } = await res.json();
// 获取播放地址
const stream = await fetch(
`${API}/v1/netease/songs/210049/stream?redirect=false&quality=exhigh`,
{ headers }
).then(r => r.json());
// 用返回的 url 播放
const audio = new Audio(stream.url);
audio.play();
// 歌词(LRC 文本)
const lrc = await fetch(`${API}/v1/netease/songs/210049/lyric`, { headers })
.then(r => r.text());
// 封面图片需要 token,建议先 fetch 拿 blob URL 再作 img src
const coverRes = await fetch(
`${API}/v1/netease/songs/210049/cover?size=600&redirect=false`,
{ headers }
).then(r => r.json());
const coverURL = coverRes.url;
curl
curl -H "Authorization: Bearer mt_xxxxxxxx" \
"https://api.meting.io/v1/tencent/search?q=稻香&limit=5"
curl -H "Authorization: Bearer mt_xxxxxxxx" \
"https://api.meting.io/v1/kugou/songs/{hash}/stream?redirect=false"
字段说明
歌曲对象常见字段:
| 字段 | 说明 |
|---|---|
id | 平台歌曲 ID(酷狗为 hash) |
name | 歌名 |
artist / artists | 歌手 |
album | 专辑名 |
url | stream 接口地址(item 内) |
cover | 封面接口地址 |
lyric | 歌词接口地址 |
播放 JSON 示例:
{"url":"https://...","format":"mp3","br":320,"size":8421376,"quality":"exhigh"}
注意事项
- 仅限个人学习与非商业用途使用,禁止任何形式的商业使用。
- 接口支持 CORS,浏览器前端可直接请求。
- 请合理控制请求频率,避免用于大规模爬取。