游戏位OpenAPI-V4对接文档
1. 概述
1.1 产品介绍
OpenAPI-V4 游戏位专为合作渠道的客户端游戏内容消费场景设计,支持原生 App、Web、WebView、小程序等多种载体。本接口提供标准化的 H5 游戏内容列表获取能力,帮助渠道方快速构建个性化游戏推荐模块。
1.2 核心能力
多维度筛选:支持按渠道、语言、国家、游戏类别、屏幕方向等条件获取可玩的 H5 游戏列表。
智能排序:基于 MiniGame AI 算法,融合本地化用户行为偏好、收入表现等多重因子进行个性化推荐。
数据闭环:客户端需要接入曝光、点击、视频播放等用户行为事件回传机制,用于持续优化推荐效果、数据统计和归因分析。
样式适配:支持大卡片、三联卡片、视频、游戏信息流等不同游戏位类型。
1.3 使用流程
1.4 术语定义
| 术语 | 说明 |
|---|---|
client_id | 商户唯一标识,由微游互娱分配,请求头中使用 x-md-global-cid 传递 |
api_key | API 访问密钥,由微游互娱技术人员提供,用于生成 sign |
slot_id | 游戏位 ID,由微游互娱技术或运营人员创建并提供 |
request_id | 请求 ID,用于一次推荐请求的链路追踪;gameFlow 翻页时需要继续传递 |
content_ids | 游戏 App ID 列表,用于事件回传,可用英文逗号分隔多个游戏 |
2. 环境与测试参数
2.1 接口环境
| 环境 | 游戏位 API HOST_PREFIX | 事件回传 API |
|---|---|---|
| 测试环境 | https://mdev.minigamevs.com/openapiv4_service | https://mdev.minigamevs.com/stats_service/api/wy/report/{event_id} |
| 正式环境 | https://openapi.minigame.ai | https://stats.minigame.com/api/wy/report/{event_id} |
游戏位接口完整路径:
2.2 测试环境参数
| 参数 | 值 | 说明 |
|---|---|---|
client_id | 233802991579168768 | 商户 ID,请求头 x-md-global-cid 使用该值 |
api_key | 5e567421-c0a5-4723-80a6-2f5567517146 | API 访问密钥,用于生成 sign |
slot_id | TSZ3R9W6P2K8 | bigCard 类型 |
slot_id | TSK9P4X1Q6B2 | threeCards 类型 |
slot_id | TSB4F2H8Y3Q7 | bigVideo 类型 |
测试参数仅用于开发联调。正式上线前请联系微游互娱获取正式环境参数,并确保测试环境和正式环境配置隔离。
3. 签名校验规则
3.1 密钥获取
client_id 和 api_key 由微游互娱技术人员提供。api_key 用于生成签名,应妥善保管,不建议直接暴露在客户端可读取的位置。
3.2 参数范围
所有 API 请求参数需要按规则参与签名,空值字段不参与签名。
参与签名的参数范围:
URL 查询参数,例如游戏位 API 的
slot_id、user_id、country等。POST 请求体参数,例如事件回传 API 的
content_ids、slot_id、display_duration等。HTTP Header 中的
ts时间戳。事件回传 API 的路径参数
event_id。
不参与签名的字段:
sign本身。x-md-global-cid。x-user-ip。gameFlow翻页场景下的request_id。空值字段。
3.3 拼接规则
将参与签名的参数按照
参数名=参数值的格式拼接。多个参数之间使用
&连接。所有参数按照参数名 ASCII 码从小到大排序。
空值参数不参与签名。
拼接格式示例:
3.4 签名生成
将拼接好的参数字符串前面追加
api_key。对追加后的字符串进行 SHA256 哈希运算。
生成的十六进制哈希值即为最终签名字符串
sign。
公式:
3.5 签名示例
以下示例使用固定 ts 便于复现。实际接入时,ts 应使用当前秒级时间戳。
输出示例:
3.6 签名排查建议
| 问题 | 常见原因 | 处理建议 |
|---|---|---|
invalid signature | 参数排序不一致 | 打印参与签名的参数名并确认 ASCII 排序 |
invalid signature | ts 未参与签名 | 将请求头 ts 显式加入签名参数 |
invalid signature | 空值字段参与签名 | 过滤 null、空字符串和未传字段 |
invalid signature | request_id 被纳入游戏位翻页签名 | gameFlow 翻页的 request_id 不纳入签名 |
invalid signature | 事件 API 未纳入 event_id | 事件回传 API 需要将路径参数 event_id 纳入签名 |
timestamp expired | 客户端或服务端时间不准 | 使用秒级时间戳,并保证在 ±5 分钟有效期内 |
4. 游戏位 API
4.1 接口描述
获取指定游戏位的个性化推荐游戏列表。本接口用于首页、详情页、推荐位、游戏流等位置的游戏推荐模块,返回内容包括游戏元数据、用于渲染的素材地址以及渠道专属游戏链接。
核心逻辑:
根据游戏位类型和上下文信息返回个性化推荐游戏列表。
游戏名称、介绍、玩法等元信息会根据请求中的国家和语言参数返回对应版本。
素材地址会根据不同游戏位样式要求返回图标、卡片背景、横幅、闪屏图、视频等 CDN 资源。
游戏链接为当前渠道生成的专属地址,通常会自动带上
request_id等归因参数。
数据冗余策略:
为确保推荐位展示效果和容灾能力,非分页类游戏位采用
1:1冗余机制。如果游戏位需要展示
n个游戏,接口会返回2n个游戏数据,供客户端优选或降级替换。示例:
bigCard位置只展示 1 个游戏,接口会返回 2 个游戏。
4.2 基本信息
| 项目 | 值 |
|---|---|
| 请求方式 | GET |
| 请求路径 | /openapi/v4/game/slot |
| 完整地址 | {HOST_PREFIX}/openapi/v4/game/slot |
| Content-Type | 无请求体 |
4.3 游戏位类型
| 类型标识 | 描述 | 返回游戏数量 | 是否支持分页 | 说明 |
|---|---|---|---|---|
bigCard | 大卡片 | 1 + 1 备用 | 否 | 本样式只展示 1 款游戏,接口会另外提供 1 款备用游戏 |
gameFlow | 游戏信息流 | 精选库 | 是 | 分页返回精选库游戏,每页 10 个游戏,需要传分页参数;第 2 页开始需要传上一页响应中的 request_id |
threeCards | 三联卡片 | 3 + 3 备用 | 否 | 展示 3 款游戏,建议在用户重新回到界面且展示超过1min时更新一组 |
bigVideo | 视频 | 1 + 1 备用 | 否 | 视频进入可视区后自动静音播放 |
4.4 请求头
| 名称 | 描述 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
sign | 签名 | string | 是 | 1ac91fb23ab2b... | 按签名校验规则生成 |
ts | 时间戳 | int | 是 | 1749193616 | 10 位秒级时间戳,±5 分钟有效 |
x-md-global-cid | 商户唯一标识 | int | 是 | 233802991579168768 | 对应 client_id |
4.5 请求参数
| 名称 | 描述 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
slot_id | 游戏位 ID | string | 是 | TSZ3R9W6P2K8 | 根据游戏位类型使用对应 ID |
user_id | 用户 ID | string | 否 | 123456 | 建议传入,可使用渠道侧 Open UID |
device_id | 设备 ID | string | 否 | 01c081dd1edc | 建议传入,可使用 GAID 或渠道设备标识 |
device_brand | 设备品牌 | string | 否 | XIAOMI | 设备品牌 |
device_model | 设备机型 | string | 否 | Note 13 Pro | 设备型号 |
language | 语言标准代码 | string | 否 | zh | 建议传入;优先推荐适合该语言的游戏,不是强筛选 |
country | 国家标准代码 | string | 否 | CN | 优先推荐适合该国家的游戏,不是强筛选 |
categories | 游戏类别 | string | 否 | puzzle,casual | 多个分类用英文逗号分隔;如当前游戏位未开放分类筛选,以后台配置为准 |
orientation | 屏幕方向 | string | 否 | vertical | 用于筛选适配屏幕方向的游戏;可选 horizontal、vertical |
page | 分页页码 | int | 否 | 1 | 部分游戏位支持分页,例如 gameFlow;默认第 1 页 |
request_id | 请求 ID | string | gameFlow 第 2 页起必填 | 5e2ef168670507758a992fcbac140910 | gameFlow 第一页可传空字符串,第 2 页起必须传上一页响应中的 request_id;不纳入签名 |
4.6 请求示例
4.7 响应字段
| 名称 | 描述 | 类型 | 示例值 | 说明 |
|---|---|---|---|---|
request_id | 请求 ID | string | b4f67172-a9dd-4d10-ab04-011faedc2867 | 唯一标识本次推荐请求 |
total | 游戏数量 | int | 860 | 当前响应或分页条件下的游戏数量 |
items | 游戏列表 | array | - | 游戏数组 |
items[].id | 游戏 App ID | string | neo-adventure | 用于事件回传的内容 ID |
items[].link | 游戏链接 | string | - | 链接会自动带上 request_id 等参数 |
items[].detail | 游戏信息 | object | - | 游戏元信息和素材 |
items[].detail.name | 游戏名称 | string | Neo Adventure | 按国家或语言返回对应版本 |
items[].detail.categories | 游戏分类 | array | ["puzzle", "io"] | 一个游戏可有一个或多个分类 |
items[].detail.how_to_play | 游戏玩法 | string | Follow hints and defeat monsters. | 玩法说明 |
items[].detail.description | 游戏简介 | string | Help Neo finish the adventure. | 游戏介绍 |
items[].detail.orientation | 屏幕方向 | string | vertical | 可选 horizontal、vertical |
items[].detail.icon | 游戏图标 | object 或 string | - | URL 地址 |
items[].detail.small_icon | 游戏小图标 | string | - | URL 地址 |
items[].detail.big_icon | 游戏大图标 | string | - | URL 地址 |
items[].detail.banner | 游戏横幅 | string | - | URL 地址 |
items[].detail.flash | 游戏闪屏图 | string | - | URL 地址 |
items[].detail.video | 游戏视频 | string | - | URL 地址 |
4.8 成功响应示例
4.9 失败响应示例
5. 用户行为事件回传 API
2026-05-08 更新:事件回传 API 新增请求头
x-user-ip和请求体字段slot_id。
5.1 接口描述
用户行为事件回传 API 用于接收客户端上报的用户行为事件,例如游戏曝光、游戏点击、视频播放等。合作方需要将事件数据回传至本接口,以便进行数据统计、效果分析、推荐优化和归因计算。
5.2 基本信息
| 环境 | 接口 URL |
|---|---|
| 测试环境 | https://mdev.minigamevs.com/stats_service/api/wy/report/{event_id} |
| 正式环境 | https://stats.minigame.com/api/wy/report/{event_id} |
测试参数:
| 参数 | 值 | 说明 |
|---|---|---|
client_id | 233802991579168768 | 商户 ID,请求头 x-md-global-cid 使用该值 |
api_key | 5e567421-c0a5-4723-80a6-2f5567517146 | API 访问密钥,用于生成 sign |
5.3 支持事件类型
event_id | 事件名称 | 触发时机 | 说明 |
|---|---|---|---|
show | 曝光事件 | 游戏位展示时 | 游戏卡片或素材进入屏幕可视区域时触发 |
click | 点击事件 | 游戏位点击时 | 用户点击游戏位并开始跳转时触发 |
vplay | 播放事件 | 视频播放与暂停 | 视频开始和停止播放时记录播放时间并上报 |
5.4 请求方式
事件回传 API 同时支持 GET 和 POST。
GET 请求通过 URL Query String 传参:
POST 请求通过 JSON Body 传参:
5.5 请求头
| 名称 | 描述 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
sign | 签名 | string | 是 | 05c56a07a720... | 计算签名时需要包含路径参数 event_id,未传值字段不参与签名 |
ts | 事件触发时刻对应的时间戳 | int | 是 | 1749193616 | 10 位秒级时间戳,±5 分钟有效 |
x-md-global-cid | 商户唯一标识 | int | 是 | 233802991579168768 | 对应 client_id |
x-user-ip | 用户 IP | string | 否 | 183.23.63.82 | 服务端上报时建议填写 |
5.6 路径参数
| 字段 | 描述 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
event_id | 事件名称 | string | 是 | show | 可选 show、click、vplay |
5.7 请求体字段
| 字段 | 描述 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
content_ids | 内容 ID 列表 | string | 是 | neo-adventure,super-spy | 游戏 App ID,可用英文逗号分隔多个游戏 |
slot_id | 游戏位 ID | string | 是 | TSZ3R9W6P2K8 | 根据游戏位类型传对应 ID |
session_id | 会话 ID | string | 否 | abcdefg123 | 用于分析用户单次访问行为路径 |
device_id | 设备 ID | string | 否 | d52ad7b6-5c86-4131-a79f-7236f7b183e2 | 设备唯一标识 |
device_brand | 设备品牌 | string | 否 | XIAOMI | 设备品牌 |
device_model | 设备机型 | string | 否 | Note 13 Pro | 设备型号 |
app_id | 应用 ID | string | 否 | com.unite.demo | 安卓或 iOS 应用 ID 或应用包名 |
device_type | 设备类型 | string | 否 | mobile | 可选 desktop、mobile、tablet、other |
orientation | 屏幕方向 | string | 否 | vertical | 可选 horizontal、vertical |
user_id | 用户 ID | string | 否 | 10011 | 用户唯一标识,例如登录用户 ID |
country | 国家标准代码 | string | 否 | CN | 用户所在国家 |
language | 语言标准代码 | string | 否 | zh | 用户语言 |
display_duration | 展示时长 | int | 否 | 120 | 游戏在屏幕上的展示时长,单位秒 |
viewport | 视口大小 | string | 否 | 540x960 | 游戏展示的视口大小,格式为宽 x 高 |
app_version | 应用版本 | string | 否 | v1.0.0 | 应用每次发布的版本号 |
play_start_ts | 播放开始时间 | int64 | 否 | 1778146175764 | 毫秒级时间戳,播放事件传递 |
play_stop_ts | 播放结束时间 | int64 | 否 | 1778146177226 | 毫秒级时间戳,播放事件传递 |
play_duration | 播放时长 | int64 | 否 | 1462 | 单位毫秒,播放事件传递 |
position | 展示位置 | string | 否 | 1或1,2,3 | threeCards类型每个被曝光卡片的索引位置,索引不能是0 |
5.8 签名示例
事件回传 API 的签名参数需要包含路径参数 event_id。
输出示例:
5.9 POST 请求示例
5.10 响应字段
| 名称 | 描述 | 类型 | 示例值 | 说明 |
|---|---|---|---|---|
received | 成功数量 | int | 1 | 成功接收的事件数量 |
tid | 链路 ID | string | a7fc67356697492a92ee8b3054a6a3b8 | 失败排查时建议记录 |
成功响应示例:
失败响应示例:
5.11 上报建议
show事件应在游戏卡片或素材进入可视区域时触发。click事件应在用户点击游戏位并开始跳转时触发。vplay事件用于游戏视频播放记录,建议传入play_start_ts、play_stop_ts和play_duration。同一展示周期内应避免对同一游戏和同一事件重复上报。
网络传输存在代理上报时建议配置Header
x-user-ip,用于数据分析。事件上报失败不应阻断用户打开游戏或继续浏览。
6. 附录
6.1 常见错误
| 错误 | 说明 | 处理建议 |
|---|---|---|
invalid signature | 签名校验失败 | 检查参数范围、排序、api_key、ts 和 event_id 是否正确 |
timestamp expired | 时间戳过期 | 使用秒级时间戳,并保证在 ±5 分钟内 |
contentIds is required | 事件回传缺少内容 ID | 检查 content_ids 是否传入且字段名正确 |
slot_id is required | 缺少游戏位 ID | 游戏位 API 和事件回传 API 都需要传入 slot_id |
invalid slot_id | 游戏位不存在或无权限 | 确认 slot_id 是否属于当前商户 |
6.2 常用国家代码
| 代码 | 国家/地区 |
|---|---|
CN | 中国大陆 |
TW | 中国台湾 |
HK | 中国香港 |
JP | 日本 |
KR | 韩国 |
US | 美国 |
GB | 英国 |
DE | 德国 |
FR | 法国 |
BR | 巴西 |
ID | 印度尼西亚 |
TH | 泰国 |
VN | 越南 |
MY | 马来西亚 |
PH | 菲律宾 |
SG | 新加坡 |
完整列表可参考 ISO 3166-1 alpha-2。
6.3 常用语言代码
| 代码 | 语言 |
|---|---|
zh | 中文 |
en | 英语 |
ja | 日语 |
ko | 韩语 |
es | 西班牙语 |
pt | 葡萄牙语 |
fr | 法语 |
de | 德语 |
id | 印尼语 |
th | 泰语 |
vi | 越南语 |
ms | 马来语 |
ar | 阿拉伯语 |
完整列表可参考 ISO 639-1。
更新日志
| 版本 | 日期 | 更新内容 |
|---|---|---|
| v4.3.0 | 2026-05-08 | 事件回传 API 新增游戏视频播放 vplay 事件,新增 threeCards类型三联卡片position上报。 |
| v4.2.0 | 2026-03-17 | 多游戏位请求、内嵌 tracker URL、HMAC-SHA256 签名 |
| v4.1.0 | 2026-03-15 | 统一响应结构、新增分页参数、补充错误码 |
技术支持
如有疑问,请联系MiniGame技术支持团队。



