Linework Developers
ZH
获取权限

指南 · posts:write

发布带媒体的帖子

上传一张照片,发布使用该照片的帖子,然后编辑或删除它。发布分为两步:先上传媒体,再发布帖子。

权限范围:posts:write(发布快拍需要 stories:write,读取帖子需要 posts:read)。

1. 上传媒体#

POST /media

以 multipart/form-data 格式发送文件,字段名为 file。响应中包含一个 mediaId,供下一步使用。

curl https://api.linework.app/open/v1/media \
  -H "Authorization: Bearer $LINEWORK_API_KEY" \
  -F "file=@sunset.jpg"
import { readFile } from "node:fs/promises";

const form = new FormData();
form.append("file", new Blob([await readFile("sunset.jpg")], { type: "image/jpeg" }), "sunset.jpg");

const res = await fetch("https://api.linework.app/open/v1/media", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.LINEWORK_API_KEY}` },
  body: form, // do not set Content-Type: fetch adds the multipart boundary
});
const { mediaId } = await res.json();
import os, requests

API = "https://api.linework.app/open/v1"
s = requests.Session()
s.headers["Authorization"] = f"Bearer {os.environ['LINEWORK_API_KEY']}"

with open("sunset.jpg", "rb") as f:
    r = s.post(API + "/media", files={"file": ("sunset.jpg", f, "image/jpeg")}, timeout=120)
r.raise_for_status()
media_id = r.json()["mediaId"]
{ "mediaId": "m_8f2c1a" }

媒体限制

类型格式最大大小
图片JPEG, PNG, WebP, GIF50 MB
视频MP4, MOV (QuickTime), WebM500 MB

超过大小的文件会返回 413 PAYLOAD_TOO_LARGE;其他格式会返回 400 VALIDATION_ERROR。上传后从未在帖子中使用的媒体可能会在一段时间后被删除。

2. 发布帖子#

POST /posts
curl https://api.linework.app/open/v1/posts \
  -H "Authorization: Bearer $LINEWORK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "text": "Golden hour on the lake 🌅", "mediaIds": ["m_8f2c1a"] }'
const res = await fetch("https://api.linework.app/open/v1/posts", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.LINEWORK_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ text: "Golden hour on the lake 🌅", mediaIds: [mediaId] }),
});
const post = await res.json();
console.log(post.id);
r = s.post(API + "/posts", json={"text": "Golden hour on the lake 🌅", "mediaIds": [media_id]}, timeout=30)
r.raise_for_status()
post = r.json()
print(post["id"])

帖子可以只有文字、只有媒体,或两者兼有。每条帖子都计入每个账号每日 50 条帖子的配额(配额)。

3. 编辑或删除#

PATCH /posts/{id} DELETE /posts/{id}
# change the text
curl -X PATCH https://api.linework.app/open/v1/posts/1043 \
  -H "Authorization: Bearer $LINEWORK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "text": "Golden hour on Lake Como 🌅" }'

# delete the post
curl -X DELETE https://api.linework.app/open/v1/posts/1043 \
  -H "Authorization: Bearer $LINEWORK_API_KEY"

您只能编辑和删除自己的帖子。可以使用 GET /posts/{id} 读取帖子,或使用 GET /me/posts 列出帖子(posts:read)。

发布快拍#

POST /stories

快拍使用相同的上传流程:先通过 POST /media 上传,再使用 mediaId 创建快拍。权限范围为 stories:write,每日配额为 20 条快拍。

curl https://api.linework.app/open/v1/stories \
  -H "Authorization: Bearer $LINEWORK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "mediaId": "m_8f2c1a" }'

最佳做法#

  • 发布人们想看的内容。根据 API 条款,重复或自动生成的凑数内容属于垃圾信息。
  • 如果 POST /posts 超时,请在重试前先检查 GET /me/posts,以避免重复发布。
  • 只发布您拥有相应权利的媒体。