6.2 获取偶像列表【基础探测通过,待数据联调】

GET /tieup/api/v1/artists

查询参数:

参数 类型 必填 说明
keyword string 否 艺名、昵称、简介
artist_category_id integer 否 偶像类型 ID
artist_type integer 否 1=个人艺人,2=经纪公司艺人
city_code string 否 城市代码
follow_scope string 否 关注筛选:all=全部,followed=我关注的偶像;followed 需要登录态
page integer 否 页码,默认 1
page_size integer 否 每页数量,默认 20,最大 100

返回分页结构为 items + pagination,仅展示 tieup_user.status = 1、is_idol = 1、存在艺人档案,且存在 tieup_artist_pricing.status = 1 启用定价配置并已选择订阅档位(subscription_plan_code 非空)的数据。未创建定价记录、定价配置已禁用或未选择订阅档位的艺人不进入列表;已保存启用配置并选择订阅档位,但价格为 0,或提问、视频通话业务开关关闭的艺人仍可展示。本接口不校验已选档位是否适配当前渠道,具体可用性由订阅详情及下单流程校验。该条件在分页前执行,因此 pagination.total 与过滤后的列表口径一致。返回项包含 is_followed,1 表示当前用户已关注,2 表示未关注;未登录查询全部列表时固定返回 2。follow_scope=followed 时必须携带有效 Authorization,未登录或 Token 无效返回 401。

卡片主媒体规则:featured_media_url 优先取艺人相册 album_media 中第一张图片;没有图片时取第一条视频;相册没有可用图片/视频时回退艺人头像。featured_media_type 用于区分 image、video、avatar;当主媒体是视频时,featured_media_cover_url 返回相册视频素材的封面/首帧图,其他场景为空字符串。

统计与排序口径:follow_count 的真实统计值为当前关注量;subscription_count 的真实统计值为全历史订阅粉丝人数,按 artist_id + fan_user_id 去重,同一粉丝多次订阅或续订只计 1 人,生效中、已过期、已取消和已退款订阅均计入。列表查询完成后,艺人 ID 3/7/2/4/5/1/6/8 的 follow_count 会在真实统计值上分别叠加 11632/8526/6885/4675/1383/1132/962/678,并从上海时区 2026-08-25 起每经过一个自然日再叠加 50;同一组艺人的 subscription_count 会在真实统计值上分别叠加 8469/6830/5265/3542/1056/855/752/543,每经过一个自然日再叠加 30。基准日当天不叠加每日增量,早于基准日不产生负增量,其他艺人不叠加展示值。该展示处理发生在排序和分页之后,不改变列表顺序或分页结果。received_candy_amount 统计提问/追问、视频通话、历史福利兑换实际产生的消费扣糖流水绝对值,只统计 tieup_user_transaction.change_type = 2 的真实扣糖,后续退款属于独立正向流水且不冲减历史收到量,未产生扣糖流水的取消业务不计。列表排序使用累计消费金额:订阅按实际支付金额累计,iOS 使用订阅记录中的 iOS 实付价格快照,其他平台优先使用订单实际支付金额并在缺失时回退订阅金额快照;糖果支付按当前请求渠道生效的 candy_cash_exchange_rate 折算为人民币分后与订阅金额相加。本接口默认依次按累计消费金额 DESC、settled_at DESC、id DESC 排序,所有排序均在分页前执行。

响应字段:

字段 类型 说明
items array 当前页数据列表
items[].id integer 艺人 ID
items[].user_id integer 绑定的 APP 用户 ID
items[].artist_name string 艺人对外展示名称
items[].nickname string 用户昵称
items[].avatar string 艺人头像 URL,来源 tieup_artist.avatar
items[].featured_media_url string 卡片主媒体 URL:优先相册图片,其次相册视频,最后头像
items[].featured_media_type string 卡片主媒体类型:image、video、avatar
items[].featured_media_cover_url string 视频主媒体封面/首帧图 URL;非视频主媒体为空字符串
items[].album_media array 粉丝端仅返回审核状态为 passed 的相册素材,不返回 media_id/status
items[].album_media[].type string 素材类型:image 或 video
items[].album_media[].url string 素材 URL
items[].album_media[].cover_url string 视频封面 URL,仅视频素材返回
items[].album_media[].duration integer 视频时长,单位秒,仅视频素材返回
items[].intro_type string 短介绍类型:text、audio 或空字符串
items[].intro_text string 一句话文字介绍
items[].intro_audio_url string 一句话语音介绍 URL
items[].intro_audio_duration integer 语音介绍时长,单位秒
items[].personal_intro string 自我介绍
items[].gender integer 性别:0=未知,1=男,2=女
items[].artist_type integer 艺人类型:1=个人艺人,2=经纪公司艺人
items[].artist_category_id integer/null 艺人分类 ID
items[].category_name string 艺人分类名称
items[].artist_online_status integer 艺人在线状态:0=离线,1=在线;读取 tieup_artist.online_status,由艺人身份融云回调更新
items[].is_followed integer 当前用户是否已关注:1=已关注,2=未关注
items[].follow_count integer 展示关注量;真实当前关注量由关注关系统计,指定艺人另按接口说明叠加固定值及每日增量
items[].subscription_count integer 展示订阅人数;真实全历史订阅粉丝人数按粉丝去重,指定艺人另按接口说明叠加固定值及每日增量
items[].received_candy_amount string 全历史真实消费扣糖总量,固定两位小数;退款不冲减原始收到量
pagination object 分页信息
pagination.page integer 当前页码
pagination.page_size integer 每页数量
pagination.total integer 总数量
pagination.next_cursor null 下一页游标,页码分页时为空

响应示例:

{
  "code": 200,
  "message": "成功",
  "data": {
    "items": [
      {
        "id": 20001,
        "user_id": 10001,
        "artist_name": "王心凌",
        "nickname": "甜心教主",
        "artist_online_status": 1,
        "avatar": "https://cdn.example.com/artist/avatar.png",
        "featured_media_url": "https://cdn.example.com/album/stage.png",
        "featured_media_type": "image",
        "featured_media_cover_url": "",
        "album_media": [
          {
            "type": "image",
            "url": "https://cdn.example.com/album/stage.png"
          },
          {
            "type": "video",
            "url": "https://cdn.example.com/album/intro.mp4",
            "cover_url": "https://cdn.example.com/album/intro-cover.png",
            "duration": 58
          }
        ],
        "intro_type": "audio",
        "intro_text": "",
        "intro_audio_url": "https://cdn.example.com/intro.m4a",
        "intro_audio_duration": 58,
        "personal_intro": "独立音乐人,用声音讲述故事。",
        "gender": 2,
        "artist_type": 1,
        "artist_category_id": 10,
        "category_name": "歌手",
        "is_followed": 1,
        "follow_count": 13000,
        "subscription_count": 155,
        "received_candy_amount": "82000.00"
      }
    ],
    "pagination": {
      "page": 1,
      "page_size": 20,
      "total": 1,
      "next_cursor": null
    }
  }
}