POST
v1.1.0stable

设备会员续期

批量更新设备会员到期时间,支持多种设备匹配方式和续期模式。

POST/api/device/membership/renew
认证:API Key
限流:30/分钟

请求参数

所有请求参数需通过 Query 或 Body 传递

参数名类型必填说明
token
string必填
用户 API Token
示例: your_api_token_here
mode
string可选
续期模式:extend=延长,set=设置到期时间,permanent=永久有效。默认根据 expire_time 自动判断,否则 extend
extendsetpermanent
示例: extend
base
string可选
extend 基准:auto=未过期从原到期延长,已过期从当前时间延长;current=总是从原到期时间延长;now=总是从当前时间延长
autocurrentnow
示例: auto
days
number可选
extend 模式延长天数
示例: 30
seconds
number可选
extend 模式延长秒数,优先级高于 days
示例: 2592000
duration
string可选
extend 模式时长表达式,支持 30d、12h、60m、3600s
示例: 30d
expire_time
number可选
set 模式的新到期时间戳,支持秒或毫秒;0 表示永久有效
示例: 1772267945
kid
string可选
单个设备 KID
示例: KID001
udid
string可选
单个设备 UDID
示例: 00008030-001234567890002E
kids
array可选
设备 KID 数组,也支持逗号/空格/换行分隔字符串
示例: KID001,KID002
udids
array可选
设备 UDID 数组;同一 UDID 多证书时默认 match=all 全部更新,也支持逗号/空格/换行分隔字符串
示例: 00008030-001234567890002E
items
array可选
高级批量配置,每项可包含 kid 或 udid,并可覆盖 mode/base/days/seconds/duration/expire_time
示例: [{"kid":"KID001","mode":"extend","days":30},{"udid":"00008030-001234567890002E","mode":"permanent"}]
match
string可选
多匹配处理:all=全部更新,first=只更新最新一条,error=多匹配时报错。默认 all
allfirsterror
示例: all
continue_on_error
boolean可选
是否遇到单个设备失败后继续处理,默认 true
示例: true

响应参数

参数名类型必填说明
code
number必填
状态码:1=请求处理完成
示例: 1
data.total
number必填
请求中的设备项数量
示例: 2
data.success
number必填
续期成功数量
示例: 2
data.failed
number必填
续期失败数量
示例: 0
data.results[].kid
string必填
设备 KID
示例: KID001
data.results[].old_expire_time
number必填
续期前会员到期时间戳,0 为永久有效
示例: 1769675945
data.results[].new_expire_time
number必填
续期后会员到期时间戳,0 为永久有效
示例: 1772267945
data.results[].new_expire_at
string必填
格式化后的新到期时间
示例: 2026-02-28 15:04:05
响应示例
{
"code":1,
"msg":"设备会员续期处理完成",
"time":1769675945,
"data":
{
"total":2,
"processed_results":2,
"success":2,
"failed":0,
"continue_on_error":true,
"match":"all",
"results":
[
{
"index":0,
"kid":"KID001",
"udid":"00008030-001234567890002E",
"success":true,
"code":1,
"msg":"续期成功",
"old_expire_time":1769675945,
"new_expire_time":1772267945,
"old_expire_at":"2026-01-29 15:04:05",
"new_expire_at":"2026-02-28 15:04:05",
"changed":true,
"matched_count":1
}
,
{
"index":1,
"kid":"KID002",
"udid":"00008030-009876543210002E",
"success":true,
"code":1,
"msg":"续期成功",
"old_expire_time":0,
"new_expire_time":0,
"old_expire_at":"permanent",
"new_expire_at":"permanent",
"changed":false,
"matched_count":1
}
]
}
,
"ip":"192.168.1.100",
"ysucc":"Ysucc"
}

按 KID 批量续期30天

kids=KID001,KID002&mode=extend&days=30

按 KID 批量续期30天
{
"token":"your_api_token_here",
"kids":"KID001,KID002",
"mode":"extend",
"days":30
}

按 UDID 批量续期

适合只有设备 UDID 的场景;同一 UDID 多证书时默认全部更新

按 UDID 批量续期
{
"token":"your_api_token_here",
"udids":"00008030-001234567890002E,00008030-009876543210002E",
"mode":"extend",
"duration":"60d"
}

设置指定到期时间

mode=set 直接设置新的会员到期时间戳

设置指定到期时间
{
"token":"your_api_token_here",
"kid":"KID001",
"mode":"set",
"expire_time":1772267945
}

设置永久有效

mode=permanent 将设备会员设为永久有效

设置永久有效
{
"token":"your_api_token_here",
"kid":"KID001",
"mode":"permanent"
}

每台设备不同策略

items 中每台设备可以覆盖全局续期参数

每台设备不同策略
{
"token":"your_api_token_here",
"items":
[
{
"kid":"KID001",
"mode":"extend",
"days":30
}
,
{
"kid":"KID002",
"mode":"set",
"expire_time":1772267945
}
,
{
"udid":"00008030-001234567890002E",
"mode":"permanent"
}
]
}

UDID 多证书只处理最新一条

match=first 时同一 UDID 命中多个证书只更新最新一条

UDID 多证书只处理最新一条
{
"token":"your_api_token_here",
"udid":"00008030-001234567890002E",
"mode":"extend",
"days":30,
"match":"first"
}

错误码

错误码4 个定义
12
Token 不能为空
未提供 token 参数
20
请提供至少一个设备
未提供 kid、kids、udid、udids 或 items
21
mode参数无效,可选值:extend/set/permanent
续期模式不合法

响应语言

通过 X-Lang 请求头自定义接口返回语言。下方代码示例会自动使用您当前访问系统的语言。

推荐请求头
X-Lang: zh
支持的语言
zh, en, zh-TW, vi, ar

也可以使用 Accept-Language;X-Lang 优先级更高。不支持的语言将回退为英文。

代码示例

curl -X POST "https://testypro.iwai.cc,https://cer.xyul.cn,https://cer.iwai.cc/api/device/membership/renew" \
  -H "X-Lang: zh" \
  -H "Content-Type: application/json" \
  -d '{
    "token": "your_api_token_here",
    "mode": "extend",
    "base": "auto",
    "days": 30,
    "seconds": 2592000,
    "duration": "30d",
    "expire_time": 1772267945,
    "kid": "KID001",
    "udid": "00008030-001234567890002E",
    "kids": "KID001,KID002",
    "udids": "00008030-001234567890002E",
    "items": "[{\"kid\":\"KID001\",\"mode\":\"extend\",\"days\":30},{\"udid\":\"00008030-001234567890002E\",\"mode\":\"permanent\"}]",
    "match": "all",
    "continue_on_error": true
  }'

注意事项

  • 该接口仅更新设备会员/证书下载权益到期时间,不会重新签名或扣款
  • 0 表示永久有效;extend 遇到永久有效设备时默认保持永久,可用 base=now 强制改为从当前时间延长
  • UDID 命中多条证书时默认 match=all 全部更新,可传 first 或 error 改变行为
  • 支持 JSON 请求,也支持表单参数;表单 items 可传 JSON 数组字符串

在控制台试一试

填好参数后直接点发送测试,接口地址固定为本站,会带上当前登录状态

POSThttps://testypro.iwai.cc/api/device/membership/renew已锁定本站
string必填

用户 API Token

string

续期模式:extend=延长,set=设置到期时间,permanent=永久有效。默认根据 expire_time 自动判断,否则 extend

string

extend 基准:auto=未过期从原到期延长,已过期从当前时间延长;current=总是从原到期时间延长;now=总是从当前时间延长

number

extend 模式延长天数

number

extend 模式延长秒数,优先级高于 days

string

extend 模式时长表达式,支持 30d、12h、60m、3600s

number

set 模式的新到期时间戳,支持秒或毫秒;0 表示永久有效

string

单个设备 KID

string

单个设备 UDID

array

设备 KID 数组,也支持逗号/空格/换行分隔字符串

array

设备 UDID 数组;同一 UDID 多证书时默认 match=all 全部更新,也支持逗号/空格/换行分隔字符串

array

高级批量配置,每项可包含 kid 或 udid,并可覆盖 mode/base/days/seconds/duration/expire_time

string

多匹配处理:all=全部更新,first=只更新最新一条,error=多匹配时报错。默认 all

boolean

是否遇到单个设备失败后继续处理,默认 true