基础信息
查看接口基本信息和返回格式
免责声明
接口描述
企鹅机器人点歌专属(支持黄白助手),支持图片列表、卡片输出
七日请求统计
接口地址
https://api.yunmge.com/api/song_bot
请求方式
返回方式
返回预览
{
"code": 200,
"data": {
"name": "告白气球",
"singer": "周杰伦",
"pay": "VIP",
"quality": "标准品质",
"time": "03:35",
"size": "3.29MB",
"cover": "http://api.yunmge.com/upload/song/song_image/003OUlho2HcRHC.jpg",
"link": "https://i.y.qq.com/v8/playsong.html?songmid=003OUlho2HcRHC&type=0",
"music_url": "http://api.yunmge.com/upload/song/song_mp3/003OUlho2HcRHC.mp3",
"lyric": "[ti:告白气球]\n[ar:周杰伦]\n[al:周杰伦的床边故事]\n[by:]\n[offset:0]\n[00:00.00]告白气球 - 周杰伦 (Jay Chou)\n[00:05.89]词:方文山\n[00:11.79]曲:周杰伦\n[00:17.69]编曲:林迈可\n[00:23.59]塞纳河畔 左岸的咖啡\n[00:26.16]我手一杯 品尝你的美\n[00:28.78]\n[00:29.33]留下唇印的嘴\n[00:31.83]\n[00:34.27]花店玫瑰 名字写错谁\n[00:36.90]告白气球 风吹到对街\n[00:39.29]\n[00:40.01]微笑在天上飞\n[00:42.10]\n[00:44.01]你说你有点难追\n[00:46.57]想让我知难而退\n[00:49.22]礼物不需挑最贵\n[00:51.89]只要香榭的落叶\n[00:54.56]喔 营造浪漫的约会\n[00:57.26]不害怕搞砸一切\n[00:59.93]拥有你就拥有全世界\n[01:04.10]\n[01:05.01]亲爱的 爱上你\n[01:08.17]从那天起\n[01:10.61]\n[01:11.33]甜蜜的很轻易\n[01:14.43]\n[01:15.69]亲爱的 别任性\n[01:18.85]你的眼睛\n[01:21.24]\n[01:21.94]在说我愿意\n[01:25.23]\n[01:48.90]塞纳河畔 左岸的咖啡\n[01:51.46]我手一杯 品尝你的美\n[01:54.43]留下唇印的嘴\n[01:56.63]\n[01:59.56]花店玫瑰 名字写错谁\n[02:02.14]告白气球 风吹到对街\n[02:04.37]\n[02:05.23]微笑在天上飞\n[02:07.49]\n[02:09.29]你说你有点难追\n[02:11.90]想让我知难而退\n[02:14.60]礼物不需挑最贵\n[02:17.26]只要香榭的落叶\n[02:19.93]喔 营造浪漫的约会\n[02:22.65]不害怕搞砸一切\n[02:25.27]拥有你就拥有 全世界\n[02:29.23]\n[02:30.31]亲爱的 爱上你\n[02:33.58]从那天起\n[02:36.03]\n[02:36.60]甜蜜的很轻易\n[02:39.65]\n[02:40.94]亲爱的 别任性\n[02:44.20]你的眼睛\n[02:46.70]\n[02:47.26]在说我愿意\n[02:50.81]\n[02:51.76]亲爱的 爱上你\n[02:54.52]\n[02:55.05]恋爱日记\n[02:57.30]\n[02:57.93]飘香水的回忆\n[03:00.72]\n[03:02.33]一整瓶 的梦境\n[03:05.42]全都有你\n[03:07.91]\n[03:08.64]搅拌在一起\n[03:11.39]\n[03:13.02]亲爱的别任性\n[03:16.23]你的眼睛\n[03:19.99]\n[03:21.31]在说我愿意"
},
"msg": "请求成功",
"time": "2026-01-09 22:16:50",
"ip": "221.213.14.197"
}
歌手:周杰伦
付费:VIP
音质:标准品质
时长:03:35
大小:3.29MB
封面:http://api.yunmge.com/upload/song/song_image/003OUlho2HcRHC.jpg
音乐链接:http://api.yunmge.com/upload/song/song_mp3/003OUlho2HcRHC.mp3
QQ链接:https://i.y.qq.com/v8/playsong.html?songmid=003OUlho2HcRHC&type=0
歌词:
[ti:告白气球]
[ar:周杰伦]
[al:周杰伦的床边故事]
[by:]
[offset:0]
[00:00.00]告白气球 - 周杰伦 (Jay Chou)
[00:05.89]词:方文山
[00:11.79]曲:周杰伦
[00:17.69]编曲:林迈可
[00:23.59]塞纳河畔 左岸的咖啡
[00:26.16]我手一杯 品尝你的美
[00:28.78]
[00:29.33]留下唇印的嘴
[00:31.83]
[00:34.27]花店玫瑰 名字写错谁
[00:36.90]告白气球 风吹到对街
[00:39.29]
[00:40.01]微笑在天上飞
[00:42.10]
[00:44.01]你说你有点难追
[00:46.57]想让我知难而退
[00:49.22]礼物不需挑最贵
[00:51.89]只要香榭的落叶
[00:54.56]喔 营造浪漫的约会
[00:57.26]不害怕搞砸一切
[00:59.93]拥有你就拥有全世界
[01:04.10]
[01:05.01]亲爱的 爱上你
[01:08.17]从那天起
[01:10.61]
[01:11.33]甜蜜的很轻易
[01:14.43]
[01:15.69]亲爱的 别任性
[01:18.85]你的眼睛
[01:21.24]
[01:21.94]在说我愿意
[01:25.23]
[01:48.90]塞纳河畔 左岸的咖啡
[01:51.46]我手一杯 品尝你的美
[01:54.43]留下唇印的嘴
[01:56.63]
[01:59.56]花店玫瑰 名字写错谁
[02:02.14]告白气球 风吹到对街
[02:04.37]
[02:05.23]微笑在天上飞
[02:07.49]
[02:09.29]你说你有点难追
[02:11.90]想让我知难而退
[02:14.60]礼物不需挑最贵
[02:17.26]只要香榭的落叶
[02:19.93]喔 营造浪漫的约会
[02:22.65]不害怕搞砸一切
[02:25.27]拥有你就拥有 全世界
[02:29.23]
[02:30.31]亲爱的 爱上你
[02:33.58]从那天起
[02:36.03]
[02:36.60]甜蜜的很轻易
[02:39.65]
[02:40.94]亲爱的 别任性
[02:44.20]你的眼睛
[02:46.70]
[02:47.26]在说我愿意
[02:50.81]
[02:51.76]亲爱的 爱上你
[02:54.52]
[02:55.05]恋爱日记
[02:57.30]
[02:57.93]飘香水的回忆
[03:00.72]
[03:02.33]一整瓶 的梦境
[03:05.42]全都有你
[03:07.91]
[03:08.64]搅拌在一起
[03:11.39]
[03:13.02]亲爱的别任性
[03:16.23]你的眼睛
[03:19.99]
[03:21.31]在说我愿意
计费标准
了解接口计费方式和套餐价格
接口类型
付费接口:本接口按次计费,每次调用将扣除相应额度。请确保账户余额充足。
计费方式
QPS限制
每分钟最多60次请求,每秒最多1次请求
会员用户不限制每分钟请求频率
每日请求次数
普通用户不限制每日请求次数
会员用户不限制每日请求次数
扣费顺序
计费规则
安全认证
了解接口的认证方式和访问凭证管理
实名认证
本接口对所有用户开放,无需实名认证即可访问
认证方式
通过 HTTP Header 传递认证信息
通过 URL 参数传递认证信息
Token 管理
登录账户
使用您的账号密码登录平台,获取用户凭证
获取 Token
即可查看你的 Token 密钥
更换 Token
进入个人中心,点击「更换Token」,系统将生成新的 Token 密钥
保存 Token
请妥善保管您的 Token 密钥,泄露时请立即更换
Token 怪谈
安全建议
- 定期更换密钥,建议每 90 天更新一次
- 发现密钥泄露,请立即在个人中心「更换」该密钥
- 不要将密钥硬编码在代码中,使用环境变量存储
参数文档
了解接口的请求参数和响应字段说明
请求参数
| 参数名 | 类型 | 必填 | 默认值 | 可选值 | 说明 |
|---|---|---|---|---|---|
token |
string | 是 | 无 | 登录后显示你的请求token | 接口请求唯一认证标识! |
mode |
string | 否 | json | json、text、image、audio | 返回格式 |
name |
string | 是 | 告白气球 | 无 | 音乐名称 |
n |
int | 是 | 无 | 无 | 歌曲序号<br/>留空返回歌曲列表 |
mun |
int | 否 | 10 | 10、15、20 | 列表数量 |
img |
int | 否 | 1 | 1(经典)、2(可爱) | 图片风格 |
hb |
string | 否 | no | yes、no | 是否适配黄白助手<br/>开启适配后所有参数将失效 |
响应参数
| 字段名 | 类型 | 说明 |
|---|---|---|
code
|
int | 返回状态码 |
name
|
string | 歌名 |
singer
|
string | 歌手 |
quality
|
string | 音质(点歌输出标准音质够了) |
time
|
string | 时长 |
size
|
string | 大小 |
cover
|
string | 封面地址 |
music_url
|
string | 音乐地址 |
lyric
|
string | 歌词 |
lyric_url
|
string | 歌词地址 |
pay
|
string | 歌曲类型 |
link
|
string | 官方链接,这里以QQ音乐为示例 |
状态码
了解接口返回的状态码含义及处理方式
接口状态码
| 状态码 | 说明 |
|---|---|
200 |
请求成功 |
351 |
多错误,自行查看返回 |
服务器状态码
| 状态码 | 说明 |
|---|---|
500 |
服务器错误 |
501 |
请求接口不存在 |
502 |
请求接口已下架 |
503 |
请求接口维护中 |
504 |
缺少请求token参数 |
505 |
请求token不存在 |
506 |
请求token已被封禁 |
507 |
请求token额度不足 |
508 |
今日请求token已达上限 |
509 |
请求ip不在token白名单内 |
510 |
请求token无权使用当前接口 |
511 |
接口请求频率过高,请稍后再试 |
512 |
该接口未开启在线测试功能 |
513 |
今日在线测试次数已达上限 |
514 |
今日该接口请求次数已达上限 |
515 |
该接口为会员专属接口,请携带会员token |
516 |
该接口为会员专属接口,请开通会员 |
517 |
接口请求过于频繁,已被临时限制 |
518 |
该接口需要实名认证,请先完成实名认证 |
519 |
当前Token今日请求次数已达上限 |
520 |
当前Token已被禁止使用 |
521 |
请求token余额不足 |
522 |
请求token额度和余额均不足 |
530 |
接口服务异常,请稍后再试 |
531 |
接口响应超时,请稍后再试 |
532 |
接口暂时不可用,请稍后再试 |
533 |
接口配置异常 |
534 |
请求参数错误,请检查后重试 |
535 |
接口返回数据异常 |
在线测试
在线调试接口,实时查看响应结果
返回结果
等待请求...
等待请求...
示例代码
查看多种编程语言的接口调用示例
/**
* API请求DEMO-PHP
*
* 本demo支持GET与POST请求。
*/
//你申请的token密钥
$API_TOKEN = 'YOUR_TOKEN';
//API接口地址
$API_URL = 'https://api.yunmge.com/api/song_bot';
$get_post_data = array(
'token' => 'YOUR_TOKEN',
'mode' => 'json',
'name' => '告白气球',
'n' => '无',
'mun' => '10',
'img' => '1',
'hb' => 'no',
);
/*发起请求API接口:
第1个参数:API接口地址URL,跟上面的同名变量相对应,无需更改。
第2个参数:API接口参数数组,跟上面的同名变量相对应,无需更改。
第3个参数:请求协议(GET或POST),一般默认GET,部分接口需要POST请求,根据实际情况修改为POST即可。
*/
$resdata = api::send($API_URL, $get_post_data, 'GET/POST'); //发起请求,注意这里要选择接口支持的协议,默认GET,可选POST
//打印请求结果
print($resdata);
///////////////你的业务代码可写在这里处理API返回的数据
/**
* API请求类
*/
class api
{
public static function send($API_URL, $get_post_data, $type)
{
$get_post_data = http_build_query($get_post_data);
$res = self::send_curl($API_URL, $type, $get_post_data, null);
return $res;
}
//封装好的CURL请求函数,支持POST|GET
public static function send_curl($API_URL, $type, $get_post_data)
{
$ch = curl_init();
if ($type == 'POST') {
curl_setopt($ch, CURLOPT_URL, $API_URL);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $get_post_data);
} elseif ($type == 'GET') {
curl_setopt($ch, CURLOPT_URL, $API_URL . '?' . $get_post_data);
}
curl_setopt($ch, CURLOPT_REFERER, $API_URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$resdata = curl_exec($ch);
curl_close($ch);
return $resdata;
}
}
/**
* API请求DEMO-JavaScript
*
* 本demo支持GET与POST请求。
*/
//jQuery-Ajax
$.ajax({
url: 'https://api.yunmge.com/api/song_bot',
data: {
token: 'YOUR_TOKEN',
mode: 'json',
name: '告白气球',
n: '无',
mun: '10',
img: '1',
hb: 'no',
},
type: 'GET/POST', //请求协议(GET或POST),一般默认GET,部分接口需要POST请求,根据实际情况修改为POST即可。
dataType: 'json',
success: function(data) {
console.log(data); //请求成功,输出结果到控制台
},
timeout: 3000, //超时时间
error: function(data) {
console.log('请求失败'); //失败处理
}
});
/**
* API请求DEMO-NodeJs
*
* 本demo支持GET与POST请求。
*/
const https = require('https');
const querystring = require('querystring');
// 定义请求选项
const options = {
hostname: 'api.yunmge.com',
path: '/api/song_bot',
method: 'GET/POST'
};
// 发送POST请求
const postData = querystring.stringify({
'token': 'YOUR_TOKEN',
'mode': 'json',
'name': '告白气球',
'n': '无',
'mun': '10',
'img': '1',
'hb': 'no',
});
const postOptions = {
hostname: 'api.yunmge.com',
path: '/api/song_bot',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(postData)
}
};
const postReq = https.request(postOptions, res => {
console.log(`statusCode: ${res.statusCode}`);
res.on('data', d => {
process.stdout.write(d);
});
});
postReq.on('error', error => {
console.error(error);
});
postReq.write(postData);
postReq.end();
import requests
url = "https://api.yunmge.com/api/song_bot"
data = {
"token": "YOUR_TOKEN",
"mode": "json",
"name": "告白气球",
"n": "无",
"mun": "10",
"img": "1",
"hb": "no",
}
response = requests.post(url, data=data)
print(response.json())
package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"strings"
)
func main() {
apiURL := "https://api.yunmge.com/api/song_bot"
// POST请求
data := url.Values{}
data.Set("token", "YOUR_TOKEN")
data.Set("mode", "json")
data.Set("name", "告白气球")
data.Set("n", "无")
data.Set("mun", "10")
data.Set("img", "1")
data.Set("hb", "no")
resp, err := http.Post(apiURL, "application/x-www-form-urlencoded", strings.NewReader(data.Encode()))
if err != nil {
fmt.Println("请求失败:", err)
return
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class ApiRequest {
public static void main(String[] args) {
try {
String apiUrl = "https://api.yunmge.com/api/song_bot";
URL url = new URL(apiUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
// 构建POST参数
StringBuilder postData = new StringBuilder();
postData.append("token=").append(URLEncoder.encode("YOUR_TOKEN", "UTF-8"));
postData.append("&"); postData.append("mode=").append(URLEncoder.encode("json", "UTF-8"));
postData.append("&"); postData.append("name=").append(URLEncoder.encode("告白气球", "UTF-8"));
postData.append("&"); postData.append("n=").append(URLEncoder.encode("无", "UTF-8"));
postData.append("&"); postData.append("mun=").append(URLEncoder.encode("10", "UTF-8"));
postData.append("&"); postData.append("img=").append(URLEncoder.encode("1", "UTF-8"));
postData.append("&"); postData.append("hb=").append(URLEncoder.encode("no", "UTF-8"));
byte[] postDataBytes = postData.toString().getBytes("UTF-8");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
try (OutputStream os = conn.getOutputStream()) {
os.write(postDataBytes);
}
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
string apiUrl = "https://api.yunmge.com/api/song_bot";
using (HttpClient client = new HttpClient()) {
// POST请求
var formData = new Dictionary<string, string> {
{ "token", "YOUR_TOKEN" },
{ "mode", "json" },
{ "name", "告白气球" },
{ "n", "无" },
{ "mun", "10" },
{ "img", "1" },
{ "hb", "no" },
};
var content = new FormUrlEncodedContent(formData);
HttpResponseMessage response = await client.PostAsync(apiUrl, content);
string result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
}
/**
* API请求DEMO-C
*
* 本demo支持GET与POST请求。
* 需要安装libcurl库
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
// API地址
const char* url = "https://api.yunmge.com/api/song_bot";
// POST请求
void postRequest(CURL* curl) {
CURLcode res;
const char* postData = "token=YOUR_TOKEN&mode=json&name=%E5%91%8A%E7%99%BD%E6%B0%94%E7%90%83&n=%E6%97%A0&mun=10&img=1&hb=no";
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postData);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
}
int main() {
CURL* curl = curl_easy_init();
if(curl) {
postRequest(curl); curl_easy_cleanup(curl);
}
return 0;
}
/**
* API请求DEMO-C++
*
* 本demo支持GET与POST请求。
* 需要安装libcurl库
*/
#include <iostream>
#include <string>
#include <curl/curl.h>
int main() {
CURL* curl = curl_easy_init();
if(curl) {
std::string apiUrl = "https://api.yunmge.com/api/song_bot";
// POST请求
std::string postData = "token=YOUR_TOKEN&mode=json&name=%E5%91%8A%E7%99%BD%E6%B0%94%E7%90%83&n=%E6%97%A0&mun=10&img=1&hb=no";
curl_easy_setopt(curl, CURLOPT_URL, apiUrl.c_str());
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postData.c_str());
CURLcode res = curl_easy_perform(curl);
if(res != CURLE_OK) {
std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
}
curl_easy_cleanup(curl);
}
return 0;
}
.版本 2
.支持库 spec
.子程序 _启动子程序
.局部变量 url, 文本型
.局部变量 data, 文本型
.局部变量 result, 文本型
url = "https://api.yunmge.com/api/song_bot"
data = "token=YOUR_TOKEN&mode=json&name=%E5%91%8A%E7%99%BD%E6%B0%94%E7%90%83&n=%E6%97%A0&mun=10&img=1&hb=no"
result = 网页_访问 (url, 1, data, , , , , , , , , )
调试输出 (result)
常见问题
查找常见问题的解决方案
暂无常见问题
该接口暂未添加常见问题说明