# POST /api/v1/ad/watch-report — 上报激励视频观看时长 > 所属:Ad 组(前缀 `/api/v1/ad`) | 鉴权:Bearer | 限流:同 IP ≤120 次/分 | [← 返回 API 索引](../README.md) 客户端在激励视频关闭(onAdClose)后上报本次实际观看秒数,服务端累计到当日总时长。当前产品只保留每日 500 次上限,DAILY_AD_WATCH_SECONDS_LIMIT=0 表示时长闸不启用;该接口仍保留用于旧客户端兼容和排查观看时长。 ## 入参 | 字段 | 类型 | 必填 | 说明 | |---|---|---|---| | `seconds` | int | ✅ (≥0) | 本次观看秒数,服务端夹 [0, MAX_SINGLE_WATCH_SECONDS] | Mock 入参: ```json { "seconds": 28 } ``` ## 出参 响应 `200`:`WatchReportOut` | 字段 | 类型 | 说明 | |---|---|---| | `watched_seconds_today` | int | 今日累计观看秒数 | | `watch_seconds_limit` | int | 每日上限(秒);0 表示当前未启用时长闸 | | `watch_seconds_remaining` | int | 今日剩余可观看秒数 | Mock 出参: ```json { "watched_seconds_today": 128, "watch_seconds_limit": 0, "watch_seconds_remaining": 0 } ``` ## 错误码 - `401` 未鉴权 / token 失效 - `422` `seconds` 缺或为负 ## 说明 - 鉴权靠 Bearer,`user_id` 取自 JWT(不信 body) - 后端只做累计 + 上限裁切,不据此发奖(发奖靠 S2S 回调) - `watch_seconds_limit=0` 时客户端不据此拦截,按每日 500 次上限走