Miku Agent Skill

面向直播业务场景的 Agent Skill,帮助你用自然语言完成日常直播资源管理与查询。

该 Skill 面向七牛云 Miku 快直播日常运维与管理场景,让你通过自然语言快速完成直播空间、直播流、域名、证书、录制、转码模板、转推任务、统计、API Key 等资源相关操作。适合在需要高频查询与配置直播资源时使用,可显著降低操作门槛并提升处理效率。

使用场景

  1. 直播空间管理:查询空间列表、创建空间、更新空间配置。
  2. 直播资源运维:流、域名、证书、录制、转码模板、转推任务的日常操作。
  3. 数据查询分析:直播统计、流量与历史记录相关查询。

使用步骤

  1. 复制下方“完整 SKILL.md”中的 Markdown 内容。
  2. 直接在 Agent 中配置 Skill,并粘贴上述 Markdown 内容。
  3. 按需填写 Access_keySecret_key
  4. 在对话框输入业务需求,开始测试技能效果。

SKILL.md

Miku API 执行规范

适用于七牛云 Miku 快直播(Qiniu Miku Live)接口调用。

调度规则

  1. 先匹配“高频意图直达规则”;未命中再查“接口清单”。
  2. 按该 action 的 input_schema/input_params 校验参数。
  3. 通过统一入口调用。

接口调用契约(JSON Schema)

输入字段表

字段类型必填说明
actionstring条件必填精确 action(如 bucket-management/list_buckets
intentstring条件必填自然语言意图;未提供 action 时用于自动匹配
params_jsonobject条件必填目标函数参数对象;有参数时传入
params_filestring条件必填参数 JSON 文件路径
akstringAccess_key,传入则覆盖环境变量
skstringSecret_key,传入则覆盖环境变量
configstring配置文件路径
dry_runboolean默认 false;仅解析和校验,不发真实请求
topkinteger默认 5,最小 1intent 模式候选数量

输入约束:

  • actionintent 二选一,至少提供一个。
  • 有参数时:params_jsonparams_file 二选一,至少提供一个。
  • 无参数时:params_jsonparams_file 可都不传。
  • 不允许额外字段(additionalProperties=false)。

输出字段表

字段类型必填说明
resolved_actionstring实际执行的 action
required_paramsarray<string>请求 body 必填参数列表(仅 body,可理解为 required_body_params
optional_paramsarray<string>请求 body 可选参数列表(仅 body)
required_query_paramsarray<string>URL query 必填参数列表
optional_query_paramsarray<string>URL query 可选参数列表
required_host_paramsarray<string>Host 占位符必填参数列表(如 <bucket_name>
required_path_paramsarray<string>URL path 占位符必填参数列表(如 <task_id>
missing_requiredarray<string>缺失的必填参数;使用 body.xxx/query.xxx/host.xxx/path.xxx 前缀
request_params_maskedobject脱敏后的请求参数
raw_responsestring原始响应文本
dry_runboolean是否 dry-run
errorstring错误信息

输出约束:

  • 必须返回 resolved_action
  • 允许扩展字段(additionalProperties=true)。

多语言自动调用规范

基于本文件的 interface_nameinput_schemaoutput_schema 自动生成并执行请求。

鉴权规范

  • 鉴权字段:Access_keySecret_key
  • 凭证读取顺序:请求体显式字段 -> 环境变量。
  • 环境变量名必须是:Access_keySecret_key(区分大小写)。
  • 签名算法:HMAC-SHA1 + Base64URL
  • Authorization 格式:Qiniu <AK>:<SIGN>

签名原文(sign_data):

有 body:
<METHOD> <PATH>[?<QUERY>]
Host: <HOST>
Content-Type: application/json

<BODY>

无 body:
<METHOD> <PATH>[?<QUERY>]
Host: <HOST>

其中:

  • QUERY 为空时不拼接 ?
  • Host 必须使用最终请求主机名参与签名;若接口 domain<bucket_name>,必须先替换为真实值(如 prod-live-hub.mls.cn-east-1.qiniumiku.com)。
  • 当参数为 {}(空参数)时,按“无 body”模式处理:请求中不带 Content-Type,不带 body。
  • curl 在空参数场景不需要 -d '{}'
  • 请求头与签名必须一致:若 sign_data 中没有 Content-Type,实际请求也不要带 Content-Type,否则会鉴权失败。
  • 无 body 时,sign_data 仍需保留头部结束空行(即 Host: <HOST> 后仍保留 \n\n)。
  • 有 body 时,sign_data 才包含 Content-Type: application/json<BODY>
  • Base64URL 仅执行 + -> -/ -> _= 必须原样保留,不能删除或替换为空字符串。

按语言实现 HMAC-SHA1(运行时必须匹配当前语言):

  • javascript(纯前端):Web Crypto APIwindow.crypto.subtle.importKey/sign)。
  • nodejscrypto.createHmac('sha1', sk).update(sign_data).digest()
  • gohmac.New(sha1.New, []byte(sk))
  • javaMac.getInstance(\"HmacSHA1\") + SecretKeySpec
  • phphash_hmac('sha1', $signData, $sk, true)
  • curl:用系统命令(如 openssl dgst -sha1 -hmac)在 shell 内计算;不可依赖其他语言运行时。
  • 所有语言必须生成同一 sign_data 字节序列;签名不一致时优先排查换行、UTF-8 编码、Base64URL 替换规则。
  • 一致性校验(空间列表):
    • method: GET
    • host: mls.cn-east-1.qiniumiku.com
    • path: /
    • body: 无
    • content-type: 无
    • 期望:同一凭证与同一请求下,多语言计算出的 SIGN 必须一致。

创建空间签名示例(避免 Host 漏替换):

  • 场景:创建直播空间 prod-live-hubbucket-management/create_bucket
  • 请求:PUT /
  • 正确 Hostprod-live-hub.mls.cn-east-1.qiniumiku.com
  • sign_data(无 body):
PUT /
Host: prod-live-hub.mls.cn-east-1.qiniumiku.com

  • 若错误使用 Host: mls.cn-east-1.qiniumiku.com 参与签名,会导致签名校验失败。

自动执行策略

  1. 解析输入,得到 interface_name 与参数对象。
  2. input_schema 做类型与必填校验。
  3. 组装标准请求:methodhostpathquerybodyheaders
  4. 按语言优先级执行,直到成功或全部失败。
  5. 将响应映射到接口 output_schema

高频意图直达规则

  • 命中短语(任一命中即触发):
    • 帮我获取到直播空间列表
    • 直播空间有哪些
    • 查询直播空间列表
    • 获取空间列表
  • 固定映射:
    • action_key: bucket-management/list_buckets
    • interface_name: list_buckets
    • params: {}
  • 返回要求:
    • raw_response 提取 buckets 数组。
    • 输出 bucket_countbucket_names

直播空间列表结果 Schema:

{"type": "object","properties": {"resolved_action": { "type": "string", "const": "bucket-management/list_buckets" },"bucket_count": { "type": "integer" },"bucket_names": {"type": "array","items": { "type": "string" }},"buckets": {"type": "array","items": {"type": "object","properties": {"name": { "type": "string" },"region": { "type": "string" },"status": { "type": "string" },"creationDate": { "type": "string" }},"required": ["name"],"additionalProperties": true}},"raw_response": { "type": "string" },"error": { "type": "string" }},"required": ["resolved_action"],"additionalProperties": true}

语言优先级与回退

  • 默认顺序:curl -> javascript -> nodejs -> go -> java -> php
  • javascript 指纯前端 JavaScript(浏览器环境),不依赖 Node.js。
  • 若用户指定 preferred_languages,先按用户顺序执行,再按默认顺序补齐未尝试语言。
  • 以下错误触发回退到下一语言:
    • 运行时不存在(命令缺失、编译器缺失、依赖缺失)。
    • 代码模板渲染失败。
    • 请求发送失败(连接错误、超时、TLS 错误)。
  • 若已收到 HTTP 响应则不再切换语言,直接按响应返回。

最终请求示例(按 Host)

说明:

  • 下方均展示“请求内容 + 对应 sign_data 原文”。
  • sign_data 中的 <BODY> 必须与实际发送的 body 字符串完全一致(包含空格与换行差异)。
  • sign_data 没有 Content-Type,实际请求也不要带 Content-Type

Host: mls.cn-east-1.qiniumiku.com

无 body(bucket-management/list_buckets):

GET / HTTP/1.1Host: mls.cn-east-1.qiniumiku.com
Authorization: Qiniu <AK>:<SIGN>
GET /
Host: mls.cn-east-1.qiniumiku.com

有 body(live-stream-transcoding-template/add_transcoding_template):

POST /?codecTemplate HTTP/1.1Host: mls.cn-east-1.qiniumiku.com
Content-Type: application/json
Authorization: Qiniu <AK>:<SIGN>

{"name":"demo-template","vcodec":"h264"}
POST /?codecTemplate
Host: mls.cn-east-1.qiniumiku.com
Content-Type: application/json

{"name":"demo-template","vcodec":"h264"}

Host: <bucket_name>.mls.cn-east-1.qiniumiku.com

无 body(bucket-management/create_bucket,示例 bucket:prod-live-hub):

PUT / HTTP/1.1Host: prod-live-hub.mls.cn-east-1.qiniumiku.com
Authorization: Qiniu <AK>:<SIGN>
PUT /
Host: prod-live-hub.mls.cn-east-1.qiniumiku.com

有 body(bucket-management/update_bucket_config):

PATCH /?config HTTP/1.1Host: prod-live-hub.mls.cn-east-1.qiniumiku.com
Content-Type: application/json
Authorization: Qiniu <AK>:<SIGN>

{"publishSecurity":"dynamic"}
PATCH /?config
Host: prod-live-hub.mls.cn-east-1.qiniumiku.com
Content-Type: application/json

{"publishSecurity":"dynamic"}

Host: pub-manager.mikudns.com

无 body(pub-relay/query_pub_task):

GET /tasks/<task_id> HTTP/1.1Host: pub-manager.mikudns.com
Authorization: Qiniu <AK>:<SIGN>
GET /tasks/<task_id>
Host: pub-manager.mikudns.com

有 body(pub-relay/create_pub_task):

POST /tasks HTTP/1.1Host: pub-manager.mikudns.com
Content-Type: application/json
Authorization: Qiniu <AK>:<SIGN>

{"name":"relay-demo","src":"rtmp://src/live","dest":"rtmp://dest/live"}
POST /tasks
Host: pub-manager.mikudns.com
Content-Type: application/json

{"name":"relay-demo","src":"rtmp://src/live","dest":"rtmp://dest/live"}

Host: miku-statd.qiniuapi.com

无 body(statistics/query_downflow_stat):

GET /statd/v1/traffic/stat/downflow?begin=2026-03-01T00:00:00Z HTTP/1.1Host: miku-statd.qiniuapi.com
Authorization: Qiniu <AK>:<SIGN>
GET /statd/v1/traffic/stat/downflow?begin=2026-03-01T00:00:00Z
Host: miku-statd.qiniuapi.com

有 body(签名模板示例;当前接口清单下该 Host 主要为无 body 查询接口):

POST /statd/v1/example HTTP/1.1Host: miku-statd.qiniuapi.com
Content-Type: application/json
Authorization: Qiniu <AK>:<SIGN>

{"begin":"2026-03-01T00:00:00Z"}
POST /statd/v1/example
Host: miku-statd.qiniuapi.com
Content-Type: application/json

{"begin":"2026-03-01T00:00:00Z"}

自动调用输入(运行配置)Schema

{"type": "object","properties": {"interface_name": { "type": "string" },"params": { "type": "object" },"ak": { "type": "string" },"sk": { "type": "string" },"preferred_languages": {"type": "array","items": { "type": "string", "enum": ["curl", "javascript", "nodejs", "go", "java", "php"] }},"timeout_seconds": { "type": "integer", "minimum": 1, "default": 30 },"max_attempts": { "type": "integer", "minimum": 1, "default": 5 }},"required": ["interface_name", "params"],"additionalProperties": false}

自动调用输出(运行结果)Schema

{"type": "object","properties": {"interface_name": { "type": "string" },"language_used": { "type": "string", "enum": ["curl", "javascript", "nodejs", "go", "java", "php"] },"attempted_languages": {"type": "array","items": { "type": "string" }},"resolved_action": { "type": "string" },"required_params": {"type": "array","items": { "type": "string" }},"optional_params": {"type": "array","items": { "type": "string" }},"required_query_params": {"type": "array","items": { "type": "string" }},"optional_query_params": {"type": "array","items": { "type": "string" }},"required_host_params": {"type": "array","items": { "type": "string" }},"required_path_params": {"type": "array","items": { "type": "string" }},"missing_required": {"type": "array","items": { "type": "string" }},"param_position_errors": {"type": "array","items": { "type": "string" }},"request_params_masked": { "type": "object" },"raw_response": { "type": "string", "description": "HTTP <status>: <body>" },"error": { "type": "string" }},"required": ["interface_name", "attempted_languages", "resolved_action"],"additionalProperties": true}

接口清单(可直接调用)

精简字段:interface_nameaction_keyfunction_namemethoddomainpathrequired_paramsoptional_paramsrequired_query_paramsoptional_query_paramsrequired_host_paramsrequired_path_params

说明:

  • required_params / optional_params 仅表示 body 参数(即 required_body_params / optional_body_params)。
  • required_query_params / optional_query_params 仅表示 URL query 参数,不属于 body。
  • required_host_params 仅表示 Host 占位符参数(例如 <bucket_name>.mls... 中的 bucket_name),不属于 body。
  • required_path_params 仅表示 URL path 占位符参数(例如 /tasks/<task_id> 中的 task_id),不属于 body。
  • action_key 必须是完整 action(<module>/<interface_name>);接口定位优先使用 action_key
  • function_name 使用固定生成规则:call_ + action_key 中的 /- 替换为 _
  • 任何 query/path 参数都不能出现在 required_params / optional_params;出现即视为映射错误,必须纠正后再发请求。
  • 对于 domain 含占位符(如 <bucket_name>)的接口,签名与真实请求必须使用替换后的 Host,不能用占位符或公共域名代替。
  • 个别接口存在联动约束(例如 domain/bucket_id 二选一);以该接口行内 required 说明为准。
  • 表格中的 interface_name 使用短名(不带 xxx/ 前缀),仅作可读别名;action_key 作为唯一定位键。
  • 一致性自检:
    • path?key=<param>[&key=<param>] 时,query 键名 key 必须与模板字面量一致(含大小写);<param> 是参数名。
    • *_query_params 列记录的是参数名(占位符名),不是 query 键名。示例:streamKey=<stream_key> 中参数名是 stream_key
    • domain<k> 时,k 必须出现在 required_host_params,不能出现在 required_params
    • path/<id> 占位符时,id 必须出现在 required_path_params,不能出现在 required_params
    • GET/DELETE 接口默认 body 为空;若无文档明确要求 body,required_params 应为 -
    • 同名参数仅在接口模板显式要求时允许跨位置重复(例如既出现在 path 又出现在 query)。
    • query 键名必须与模板字面量完全一致(区分大小写),例如 streamKey 不能改写为 stream_key

参数归位必跑流程(最高优先级)

  1. 从接口行读取 5 组参数:bodyqueryhostpathextra(optional)
  2. 先替换 Host 占位符(required_host_params),再替换 path 占位符(required_path_params)。
  3. 仅把 required_query_params/optional_query_params 放入 URL query。
  4. 仅把 required_params/optional_params 放入 JSON body。
  5. 任一参数放错位置时立即报错 PARAM_POSITION_MISMATCH,禁止“自动挪位补救”后继续请求。
  6. 若输入参数出现未在四类参数(body/query/host/path)声明的字段,立即报错 UNDECLARED_PARAM
  7. 同名参数要求跨位置一致(如同一接口同时在 query/path/host 使用 stream_key);值不一致时报错 PARAM_VALUE_CONFLICT
  8. 报错时返回位置化缺失信息,例如:missing_required=["query.begin","path.task_id"]

参数位置示例(错误/正确)

action错误写法正确写法
statistics/query_downflow_statbegin 放到 body:{"begin":"..."}begin 放到 query:...?begin=...,body 为空
pub-relay/query_pub_tasktask_id 放到 query:/tasks?task_id=123task_id 放到 path:/tasks/123,body 为空
domain-management/get_downstream_domain_configdomain 放到 bodydomain 放到 query:...?domainConfig&name=<domain>

接口索引(快速匹配 action_key)

moduleaction_key 前缀interface_name 列表
bucket-managementbucket-management/create_bucketdelete_bucketget_bucket_configlist_bucketsupdate_bucket_config
certificate-managementcertificate-management/delete_domain_certificatelist_domain_certificatesupdate_certificateupload_domain_certificate
domain-managementdomain-management/bind_downstream_domainbind_upstream_domainget_downstream_domain_configget_upstream_domain_configlist_downstream_domainslist_upstream_domainsunbind_downstream_domainunbind_upstream_domainupdate_downstream_domain_configupdate_upstream_domain_config
live-stream-transcoding-templatelive-stream-transcoding-template/add_transcoding_templatedelete_transcoding_templateget_template_infoget_template_listupdate_transcoding_template
pub-relaypub-relay/create_pub_taskdelete_pub_taskedit_pub_taskget_pub_listquery_pub_taskquery_task_historyquery_task_logstart_pub_taskstop_pub_task
recording-managementrecording-management/create_recordingsnapshot
statisticsstatistics/query_downflow_statquery_offline_logquery_split_offline_logquery_stream_historyquery_upflow_stat
stream-managementstream-management/ban_streamcreate_streamdelete_streamget_stream_infoget_stream_listunban_stream
utilitiesutilities/create_apikeydelete_apikeyquery_apikey_listrename_apikeyquery_play_domainquery_publish_domain

bucket-management

interface_nameaction_keyfunction_namemethoddomainpathrequired_paramsoptional_paramsrequired_query_paramsoptional_query_paramsrequired_host_paramsrequired_path_params
create_bucketbucket-management/create_bucketcall_bucket_management_create_bucketPUT<bucket_name>.mls.cn-east-1.qiniumiku.com/----bucket_name-
delete_bucketbucket-management/delete_bucketcall_bucket_management_delete_bucketDELETE<bucket_name>.mls.cn-east-1.qiniumiku.com/----bucket_name-
get_bucket_configbucket-management/get_bucket_configcall_bucket_management_get_bucket_configGET<bucket_name>.mls.cn-east-1.qiniumiku.com/?config---with_configbucket_name-
list_bucketsbucket-management/list_bucketscall_bucket_management_list_bucketsGETmls.cn-east-1.qiniumiku.com/------
update_bucket_configbucket-management/update_bucket_configcall_bucket_management_update_bucket_configPATCH<bucket_name>.mls.cn-east-1.qiniumiku.com/?configconfig_data---bucket_name-

certificate-management

interface_nameaction_keyfunction_namemethoddomainpathrequired_paramsoptional_paramsrequired_query_paramsoptional_query_paramsrequired_host_paramsrequired_path_params
delete_domain_certificatecertificate-management/delete_domain_certificatecall_certificate_management_delete_domain_certificateDELETE<bucket_name>.mls.cn-east-1.qiniumiku.com/?domainCertificate&domain=<domain>&certName=<cert_name>--domaincert_name-bucket_name-
list_domain_certificatescertificate-management/list_domain_certificatescall_certificate_management_list_domain_certificatesGET<bucket_name>.mls.cn-east-1.qiniumiku.com/?domainCertificate&domain=<domain>--domain-bucket_name-
update_certificatecertificate-management/update_certificatecall_certificate_management_update_certificatePATCH<bucket_name>.mls.cn-east-1.qiniumiku.com/?domainCertificate&domain=<domain>&certName=<cert_name>update_data-domaincert_name-bucket_name-
upload_domain_certificatecertificate-management/upload_domain_certificatecall_certificate_management_upload_domain_certificatePOST<bucket_name>.mls.cn-east-1.qiniumiku.com/?domainCertificatecertificate_data---bucket_name-

domain-management

interface_nameaction_keyfunction_namemethoddomainpathrequired_paramsoptional_paramsrequired_query_paramsoptional_query_paramsrequired_host_paramsrequired_path_params
bind_downstream_domaindomain-management/bind_downstream_domaincall_domain_management_bind_downstream_domainPOST<bucket_name>.mls.cn-east-1.qiniumiku.com/?domaindomaindomain_type--bucket_name-
bind_upstream_domaindomain-management/bind_upstream_domaincall_domain_management_bind_upstream_domainPOST<bucket_name>.mls.cn-east-1.qiniumiku.com/?pushDomaindomaindomain_type---bucket_name-
get_downstream_domain_configdomain-management/get_downstream_domain_configcall_domain_management_get_downstream_domain_configGET<bucket_name>.mls.cn-east-1.qiniumiku.com/?domainConfig&name=<domain>--domain-bucket_name-
get_upstream_domain_configdomain-management/get_upstream_domain_configcall_domain_management_get_upstream_domain_configGET<bucket_name>.mls.cn-east-1.qiniumiku.com/?pushDomainConfig&name=<domain>--domain-bucket_name-
list_downstream_domainsdomain-management/list_downstream_domainscall_domain_management_list_downstream_domainsGET<bucket_name>.mls.cn-east-1.qiniumiku.com/?domain----bucket_name-
list_upstream_domainsdomain-management/list_upstream_domainscall_domain_management_list_upstream_domainsGET<bucket_name>.mls.cn-east-1.qiniumiku.com/?pushDomain----bucket_name-
unbind_downstream_domaindomain-management/unbind_downstream_domaincall_domain_management_unbind_downstream_domainDELETE<bucket_name>.mls.cn-east-1.qiniumiku.com/?domain&name=<domain>--domain-bucket_name-
unbind_upstream_domaindomain-management/unbind_upstream_domaincall_domain_management_unbind_upstream_domainDELETE<bucket_name>.mls.cn-east-1.qiniumiku.com/?pushDomain&name=<domain>--domain-bucket_name-
update_downstream_domain_configdomain-management/update_downstream_domain_configcall_domain_management_update_downstream_domain_configPATCH<bucket_name>.mls.cn-east-1.qiniumiku.com/?domainConfig&name=<domain>[&fields=<fields>]config_data-domainfieldsbucket_name-
update_upstream_domain_configdomain-management/update_upstream_domain_configcall_domain_management_update_upstream_domain_configPATCH<bucket_name>.mls.cn-east-1.qiniumiku.com/?pushDomainConfig&name=<domain>[&fields=<fields>]config_data-domainfieldsbucket_name-

live-stream-transcoding-template

interface_nameaction_keyfunction_namemethoddomainpathrequired_paramsoptional_paramsrequired_query_paramsoptional_query_paramsrequired_host_paramsrequired_path_params
add_transcoding_templatelive-stream-transcoding-template/add_transcoding_templatecall_live_stream_transcoding_template_add_transcoding_templatePOSTmls.cn-east-1.qiniumiku.com/?codecTemplatetemplate_bodyhost----
delete_transcoding_templatelive-stream-transcoding-template/delete_transcoding_templatecall_live_stream_transcoding_template_delete_transcoding_templateDELETEmls.cn-east-1.qiniumiku.com/?codecTemplate&name=<name>-hostname---
get_template_infolive-stream-transcoding-template/get_template_infocall_live_stream_transcoding_template_get_template_infoGETmls.cn-east-1.qiniumiku.com/?codecTemplate&name=<name>-hostname---
get_template_listlive-stream-transcoding-template/get_template_listcall_live_stream_transcoding_template_get_template_listGETmls.cn-east-1.qiniumiku.com/?codecTemplates[&content=<content>&limit=<limit>&offset=<offset>]-host-contentlimitoffset--
update_transcoding_templatelive-stream-transcoding-template/update_transcoding_templatecall_live_stream_transcoding_template_update_transcoding_templatePATCHmls.cn-east-1.qiniumiku.com/?codecTemplatetemplate_bodyhost----

pub-relay

interface_nameaction_keyfunction_namemethoddomainpathrequired_paramsoptional_paramsrequired_query_paramsoptional_query_paramsrequired_host_paramsrequired_path_params
create_pub_taskpub-relay/create_pub_taskcall_pub_relay_create_pub_taskPOSTpub-manager.mikudns.com/taskstask_body-----
delete_pub_taskpub-relay/delete_pub_taskcall_pub_relay_delete_pub_taskDELETEpub-manager.mikudns.com/tasks/<task_id>-----task_id
edit_pub_taskpub-relay/edit_pub_taskcall_pub_relay_edit_pub_taskPOSTpub-manager.mikudns.com/tasks/<task_id>task_body----task_id
get_pub_listpub-relay/get_pub_listcall_pub_relay_get_pub_listGETpub-manager.mikudns.com/tasks[?marker=<marker>&limit=<limit>&name=<name>]---markerlimitname--
query_pub_taskpub-relay/query_pub_taskcall_pub_relay_query_pub_taskGETpub-manager.mikudns.com/tasks/<task_id>-----task_id
query_task_historypub-relay/query_task_historycall_pub_relay_query_task_historyGETpub-manager.mikudns.com/history[?marker=<marker>&limit=<limit>&name=<name>&start=<start>&end=<end>]---markerlimitnamestartend--
query_task_logpub-relay/query_task_logcall_pub_relay_query_task_logGETpub-manager.mikudns.com/tasks/<task_id>/runinfo-----task_id
start_pub_taskpub-relay/start_pub_taskcall_pub_relay_start_pub_taskPOSTpub-manager.mikudns.com/tasks/<task_id>/start-----task_id
stop_pub_taskpub-relay/stop_pub_taskcall_pub_relay_stop_pub_taskPOSTpub-manager.mikudns.com/tasks/<task_id>/stop-----task_id

recording-management

interface_nameaction_keyfunction_namemethoddomainpathrequired_paramsoptional_paramsrequired_query_paramsoptional_query_paramsrequired_host_paramsrequired_path_params
create_recordingrecording-management/create_recordingcall_recording_management_create_recordingPOST<bucket_name>.mls.cn-east-1.qiniumiku.com/<stream_name>?recordingFilestart_timeend_timefmtfnamepipelineexpire_daysfirst_segment_typepersistent_delete_after_daysnotifyhosttimeout--bucket_namestream_name
snapshotrecording-management/snapshotcall_recording_management_snapshotPOST<bucket_name>.mls.cn-east-1.qiniumiku.com/<stream_name>?snapshot-timefnameimg_formatpipelinenotifydelete_after_days--bucket_namestream_name

statistics

interface_nameaction_keyfunction_namemethoddomainpathrequired_paramsoptional_paramsrequired_query_paramsoptional_query_paramsrequired_host_paramsrequired_path_params
query_downflow_statstatistics/query_downflow_statcall_statistics_query_downflow_statGETmiku-statd.qiniuapi.com/statd/v1/traffic/stat/downflow--beginendgranularitygrouphubdomainstream_nameareaselect--
query_offline_logstatistics/query_offline_logcall_statistics_query_offline_logGETmiku-statd.qiniuapi.com/statd/v1/livelog--domainstartend---
query_split_offline_logstatistics/query_split_offline_logcall_statistics_query_split_offline_logGETmiku-statd.qiniuapi.com/statd/v1/livelog/split--domainstartend---
query_stream_historystatistics/query_stream_historycall_statistics_query_stream_historyGETmls.cn-east-1.qiniumiku.com/?streamStats&start=<start>&end=<end>&stream=<stream>[&domain=<domain> 或 &bucket=<bucket>][&g=<granularity>]--startendstreamdomainbucket(至少一项)granularity--
query_upflow_statstatistics/query_upflow_statcall_statistics_query_upflow_statGETmiku-statd.qiniuapi.com/statd/v1/traffic/stat/upflow--beginendgranularitygrouphubdomainstream_nameareaselect--

stream-management

interface_nameaction_keyfunction_namemethoddomainpathrequired_paramsoptional_paramsrequired_query_paramsoptional_query_paramsrequired_host_paramsrequired_path_params
ban_streamstream-management/ban_streamcall_stream_management_ban_streamPOST<bucket_name>.mls.cn-east-1.qiniumiku.com/<stream_key>?forbid&bucket=<bucket_name>&streamKey=<stream_key>-forbidden_tillbucket_namestream_key-bucket_namestream_key
create_streamstream-management/create_streamcall_stream_management_create_streamPUT<bucket_name>.mls.cn-east-1.qiniumiku.com/<stream_key>(即 /<stream_name>----bucket_namestream_key
delete_streamstream-management/delete_streamcall_stream_management_delete_streamDELETE<bucket_name>.mls.cn-east-1.qiniumiku.com/<stream_key>----bucket_namestream_key
get_stream_infostream-management/get_stream_infocall_stream_management_get_stream_infoGET<bucket_name>.mls.cn-east-1.qiniumiku.com/<stream_key>?info=----bucket_namestream_key
get_stream_liststream-management/get_stream_listcall_stream_management_get_stream_listGETmls.cn-east-1.qiniumiku.com/?streamlist[&prefix=<prefix>&offset=<offset>&limit=<limit>&domain=<domain>&start=<start>&end=<end>&bucketId=<bucketId>&isForbid=<isForbid>]--domainbucketId(至少一项)prefixoffsetlimitstartendisForbid--
unban_streamstream-management/unban_streamcall_stream_management_unban_streamPOST<bucket_name>.mls.cn-east-1.qiniumiku.com/<stream_key>?release----bucket_namestream_key

utilities

interface_nameaction_keyfunction_namemethoddomainpathrequired_paramsoptional_paramsrequired_query_paramsoptional_query_paramsrequired_host_paramsrequired_path_params
create_apikeyutilities/create_apikeycall_utilities_create_apikeyPOSTmls.cn-east-1.qiniumiku.com/?apikeyname-----
delete_apikeyutilities/delete_apikeycall_utilities_delete_apikeyDELETEmls.cn-east-1.qiniumiku.com/?apikeyapikey_id-----
query_apikey_listutilities/query_apikey_listcall_utilities_query_apikey_listGETmls.cn-east-1.qiniumiku.com/?apikeys------
rename_apikeyutilities/rename_apikeycall_utilities_rename_apikeyPOSTmls.cn-east-1.qiniumiku.com/?apikeyRenameapikey_idnew_name-----
query_play_domainutilities/query_play_domaincall_utilities_query_play_domainPOST<bucket_name>.mls.cn-east-1.qiniumiku.com/<stream_key>?playUrldomainexpire_time--bucket_namestream_key
query_publish_domainutilities/query_publish_domaincall_utilities_query_publish_domainPOST<bucket_name>.mls.cn-east-1.qiniumiku.com/<stream_key>?publishUrldomainexpire_time--bucket_namestream_key

请求示例(JSON)

{"intent": "获取空间列表","params_json": {},"topk": 5,"dry_run": false}
{"action": "domain-management/bind_downstream_domain","params_json": {"bucket_name": "example-bucket","domain": "live.example.com"}}

凭证与安全

  • 使用 Access_keySecret_key 作为鉴权凭证。
  • 若未在请求中显式传入 ak/sk,运行环境必须存在 Access_keySecret_key 两个环境变量。
  • 缺少 AK/SK 时,不执行真实调用。
  • 不输出完整私钥、证书、Token 或敏感 header。
  • 用户未明确批量执行时,一次仅执行一个 action。
  • 删除/解绑/停止类操作仅在意图明确时执行;不明确时先确认目标资源。
智能助手