Linework Developers
ZH
获取权限

概念

分页与格式

列表使用游标分页。响应为 JSON,并遵循可预测的约定。

游标分页#

所有返回列表的端点都接受两个查询参数:

参数详情
limit每页条目数,范围为 1 到 100。默认值:请参阅 API 参考中的相应端点。
cursor上一页返回的 next_cursor 值。获取第一页时省略。

响应始终具有以下结构:

{
  "data": [ { "id": "1043", "...": "..." } ],
  "next_cursor": "eyJpZCI6IjEwNDMifQ"
}

当 next_cursor 为 null 时,表示没有更多页面。游标是不透明字符串:请勿自行构造或修改,也不要长期保存。

读取所有页面#

curl "https://api.linework.app/open/v1/me/posts?limit=50" \
  -H "Authorization: Bearer $LINEWORK_API_KEY"

# next page: pass the next_cursor you received
curl "https://api.linework.app/open/v1/me/posts?limit=50&cursor=eyJpZCI6IjEwNDMifQ" \
  -H "Authorization: Bearer $LINEWORK_API_KEY"
async function* all(path) {
  let cursor = null;
  do {
    const url = new URL(`https://api.linework.app/open/v1${path}`);
    url.searchParams.set("limit", "100");
    if (cursor) url.searchParams.set("cursor", cursor);
    const res = await fetch(url, {
      headers: { Authorization: `Bearer ${process.env.LINEWORK_API_KEY}` },
    });
    const page = await res.json();
    yield* page.data;
    cursor = page.next_cursor;
  } while (cursor);
}

for await (const post of all("/me/posts")) console.log(post.id);
import os, requests

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

def all_items(path):
    cursor = None
    while True:
        params = {"limit": 100}
        if cursor:
            params["cursor"] = cursor
        page = s.get(API + path, params=params, timeout=30).json()
        yield from page["data"]
        cursor = page.get("next_cursor")
        if not cursor:
            break

for post in all_items("/me/posts"):
    print(post["id"])

JSON 约定#

  • 字段名使用 camelCase(例如 createdAt、mediaIds)。唯一的例外是列表响应中的 next_cursor。
  • ID 是字符串,即使看起来像数字。请勿将其解析为数字。
  • 日期是 UTC 时区的 ISO 8601 字符串,例如 2026-10-14T09:30:00.000Z。
  • 请求体为 JSON(Content-Type: application/json),但 POST /media 除外,它使用 multipart/form-data。
  • 缺失的可选值为 null 或被省略;请以相同方式处理这两种情况。
  • 响应中可能随时添加新字段:请忽略您不认识的字段。

版本控制#

版本号位于路径中(/open/v1)。在 v1 中,我们只进行向后兼容的变更:新端点、新的可选参数、新的响应字段、新的错误码。破坏性变更将以 /open/v2 的形式推出,并会提前在更新日志中公布。