图像
Dot. 手册
图像

文本 API

快速指引

必要条件

  1. 确保您已在 Dot. App 中获取并保存了 API 密钥
  2. 确保您至少有一台所属于自己的设备并已获取设备 ID,请确保接入电源和连接到网络。
  3. 确保设备已添加 文本 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 内容已切换"
	}
}

参考使用

  1. 简单文本
实际效果
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": "我能吞下玻璃而不伤身体"
  }'
  1. 复杂文本
实际效果
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"
  }'
  1. 带有图标与链接的复杂文本
实际效果
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://"
  }'
  1. 高度自定义的文本或图形

请参考图像 API 中文本图像的使用方法

实际效果

问题排查

请求路径

/api/open/text

请求方法

POST

请求结构

字段名类型必填说明用途
deviceIdstring设备序列号分辨不同的设备
titlestring文本标题显示在屏幕上的标题
messagestring文本内容显示在屏幕上的内容
signaturestring文本签名显示在屏幕上的签名
iconstringbase64 编码 PNG 图标数据(40px*40px)显示在屏幕左下角上的图标
linkstringhttp/https 链接或 Scheme Url碰一碰跳转的内容

响应结构

字段名类型说明
codenumber状态码
messagestring响应描述
resultobject响应内容

响应说明

code含义描述
200成功设备文本 API 内容已切换/数据已更新但未切换内容
400参数错误无效的图标格式
403权限不足您没有权限操作此设备
404设备或内容不存在设备不存在或未注册
未添加文本 API 内容
500设备响应失败设备文本 API 内容切换失败

是否解决了你的问题?

文本 API