文本 API
快速指引
必要条件
- 确保您已在 Dot. App 中获取并保存了 API 密钥。
- 确保您至少有一台所属于自己的设备并已获取设备 ID,请确保接入电源和连接到网络。
- 确保设备已添加
文本 API
内容。
请求示例
curl -X POST \
https://dot.mindreset.tech/api/open/text \
-H 'Authorization: Bearer {{API_KEY}}' \
-H 'Content-Type: application/json' \
-d '{
"deviceId": "{{设备序列号}}",
"title": "{{标题}}",
"message": "{{内容}}",
"signature": "{{签名}}",
"icon": "{{base64 编码 PNG 图标数据}}",
"link": "{{碰一碰跳转链接}}"
}'
import requests
url = "https://dot.mindreset.tech/api/open/text"
headers = {
"Authorization": "Bearer {{API_KEY}}",
"Content-Type": "application/json"
}
data = {
"deviceId": "{{设备序列号}}",
"title": "{{标题}}",
"message": "{{内容}}",
"signature": "{{签名}}",
"icon": "{{base64 编码 PNG 图标数据}}",
"link": "{{碰一碰跳转链接}}"
}
response = requests.post(url, json=data, headers=headers)
print(response.json())
fetch("https://dot.mindreset.tech/api/open/text", {
method: "POST",
headers: {
"Authorization": "Bearer {{API_KEY}}",
"Content-Type": "application/json"
},
body: JSON.stringify({
deviceId: "{{设备序列号}}",
title: "{{标题}}",
message: "{{内容}}",
signature: "{{签名}}",
icon: "{{base64 编码 PNG 图标数据}}",
link: "{{碰一碰跳转链接}}"
})
}).then(res => res.json()).then(console.log);
type ApiResponse = {
code: number;
message: string;
result?: any;
};
fetch("https://dot.mindreset.tech/api/open/text", {
method: "POST",
headers: {
"Authorization": "Bearer {{API_KEY}}",
"Content-Type": "application/json"
},
body: JSON.stringify({
deviceId: "{{设备序列号}}",
title: "{{标题}}",
message: "{{内容}}",
signature: "{{签名}}",
icon: "{{base64 编码 PNG 图标数据}}",
link: "{{碰一碰跳转链接}}"
})
})
.then(res => res.json() as Promise<ApiResponse>)
.then(data => {
console.log(data);
});
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://dot.mindreset.tech/api/open/text"
payload := map[string]string{
"deviceId": "{{设备序列号}}",
"title": "{{标题}}",
"message": "{{内容}}",
"signature": "{{签名}}",
"icon": "{{base64 编码 PNG 图标数据}}",
"link": "{{碰一碰跳转链接}}"
}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer {{API_KEY}}")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
respBody, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(respBody))
}
use reqwest::blocking::Client;
use serde_json::json;
fn main() {
let client = Client::new();
let url = "https://dot.mindreset.tech/api/open/text";
let res = client.post(url)
.header("Authorization", "Bearer {{API_KEY}}")
.header("Content-Type", "application/json")
.json(&json!({
"deviceId": "{{设备序列号}}",
"title": "{{标题}}",
"message": "{{内容}}",
"signature": "{{签名}}",
"icon": "{{base64 编码 PNG 图标数据}}",
"link": "{{碰一碰跳转链接}}"
}))
.send()
.unwrap()
.text()
.unwrap();
println!("{}", res);
}
响应示例
{
"code": 200,
"message": "设备文本 API 内容已切换",
"result": {
"message": "设备 ABCD1234ABCD 文本 API 内容已切换"
}
}
参考使用
- 简单文本
curl -X POST \
https://dot.mindreset.tech/api/open/text \
-H 'Authorization: Bearer dot_app_UlSpzXNEXhYZIAFakHLCkMVVBLbsBIWxaRMVaJZGUOYKhDoDRZwLLvLujAIwQxbY' \
-H 'Content-Type: application/json' \
-d '{
"deviceId": "ABCD1234ABCD",
"title": "evnydd0sf",
"message": "我能吞下玻璃而不伤身体"
}'
- 复杂文本
curl -X POST \
https://dot.mindreset.tech/api/open/text \
-H 'Authorization: Bearer dot_app_UlSpzXNEXhYZIAFakHLCkMVVBLbsBIWxaRMVaJZGUOYKhDoDRZwLLvLujAIwQxbY' \
-H 'Content-Type: application/json' \
-d '{
"deviceId": "ABCD1234ABCD",
"title": "验证码小助手",
"message": "一个来自「少数派」的验证码\n205112",
"signature": "2025年8月4日 19:58"
}'
- 带有图标与链接的复杂文本
curl -X POST \
https://dot.mindreset.tech/api/open/text \
-H 'Authorization: Bearer dot_app_UlSpzXNEXhYZIAFakHLCkMVVBLbsBIWxaRMVaJZGUOYKhDoDRZwLLvLujAIwQxbY' \
-H 'Content-Type: application/json' \
-d '{
"deviceId": "ABCD1234ABCD",
"title": "每日健康",
"message": "消耗卡路里:702千卡\n今日步数:4183步\n站立时间:62分钟",
"signature": "2025年8月4日 20:16",
"icon": "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAARGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAADoAEAAwAAAAEAAQAAoAIABAAAAAEAAAAwoAMABAAAAAEAAAAwAAAAANs3bAwAAAH+SURBVGgF7VYBbsMgDFy3PWQ/mX8W7yl7SdjLsjsVS4xCcVKSVBqWPGNjnw8Hqr28DBkTGBMYEzhzApcHm8uD9Xl5yAN7+ArQZUedgS3QXYTge5JPsbX3CeRA8naQ5iFeV5xyWpF7WOqaAxxGKmn0mayLy2c/QJF0GnxPnR3WXxGTkxRo7sftYwwJaNQZdmmoYD8VSR2sFdrCYJ/dRIBcI+BtXKu3eBPH+wYUZAlGFSglQO1K0H9aETCziZjVyLa0l+fE1BujiFhuzc43VRsCpUYGLMCrNWe8JoKNe3W2N9cALO69QsEKovVeHRKQrFbhN4llNV1cAQo1FRJZHKqxiNaTbznE300UyNbIY0nGk5fmsKabbCGQktmybh7A+wa6TaE30DhA74kehSdoVHoTzTtbIEis2vto4q35b5SNKCFRxXqCmggW1DUia5K35LJBPiGNQLT5Xk9/jn0eMgQpkSKoVPZK+Vti7H1XPL9CPwWEUIidEvK8AQWzAJ2gFB5IuYBY7Opd/4bUca7Fmdc9Lb8WzU9eYZDjmN/E83wB66m2iHbKfLoCZdPStUP4XCGx5WBlz7viecR3Ac7e/FcHOONeN3s++xcIva+oAvCoh8xeTXlrZvxNCHAvMfQRbW8TAPgNVWhTjEwzsZIglfjWcNhaOOrGBMYExgTOmcAvEXiUy7zcBV8AAAAASUVORK5CYII=",
"link": "x-apple-health://"
}'
- 高度自定义的文本或图形
请参考图像 API 中文本图像的使用方法
问题排查
请求路径
/api/open/text
请求方法
POST
请求结构
字段名 | 类型 | 必填 | 说明 | 用途 |
---|---|---|---|---|
deviceId | string | 是 | 设备序列号 | 分辨不同的设备 |
title | string | 否 | 文本标题 | 显示在屏幕上的标题 |
message | string | 否 | 文本内容 | 显示在屏幕上的内容 |
signature | string | 否 | 文本签名 | 显示在屏幕上的签名 |
icon | string | 否 | base64 编码 PNG 图标数据(40px*40px) | 显示在屏幕左下角上的图标 |
link | string | 否 | http/https 链接或 Scheme Url | 碰一碰跳转的内容 |
响应结构
字段名 | 类型 | 说明 |
---|---|---|
code | number | 状态码 |
message | string | 响应描述 |
result | object | 响应内容 |
响应说明
code | 含义 | 描述 |
---|---|---|
200 | 成功 | 设备文本 API 内容已切换/数据已更新但未切换内容 |
400 | 参数错误 | 无效的图标格式 |
403 | 权限不足 | 您没有权限操作此设备 |
404 | 设备或内容不存在 | 设备不存在或未注册 未添加文本 API 内容 |
500 | 设备响应失败 | 设备文本 API 内容切换失败 |
是否解决了你的问题?