You need to enable JavaScript to run this app.
文档中心
A/B测试

A/B测试

复制全文
下载 pdf
开放能力
开放接口V3
复制全文
下载 pdf
开放接口V3

一. 概述

本文档提供「A/B测试」应用中开放接口V3版本的说明。
可用范围包括

  • 实验信息:创建实验、获取实验详情、获取实验列表、修改实验、开始实验、结束实验
  • 指标信息:创建指标、删除指标、获取指标详情、获取指标列表、全量修改指标信息、修改指标状态
  • 互斥组信息:获取互斥组列表、新建互斥组
  • 报告页信息:获取实验报告基础数据

如需使用老版本开放接口,请参考:A/B测试开放接口

二. 联系开通

为了保证您和用户的数据安全,开放接口权限默认是关闭的。
在开始使用之前,您需要联系我们开通。(您可以通过服务对接的飞书/微信群或页面右下角的在线客服与我们取得联系)

  • 开通后,我们会为您提供导出所需的AK/SK,收到后请务必妥善保管和使用。
  • 开通时请和对接人员确认需要开放的接口范围以及接口使用额度,不在开放范围内的接口以及超出限额的接口请求将被拒绝。

三. 使用方式

为了方便集成和使用OpenAPI,我们提供了SDK。其主要功能是提供了对签名过程和复杂查询参数的包装。
SDK已经在 Github 上开源,建议使用Github 源码的方式进行集成。
基本使用流程为:

  1. 根据ak, sk, API 服务地址初始化一个RangersClient
  2. 使用RangersClient的request接口或者data_tester来调用具体API(具体的方法名称在不同的语言上会有命名格式的区别)

由于中国区和非中国区是隔离不互通的,OpenAPI 的服务地址需要根据所在地区进行设置:

  • 中国区:https://analytics.volcengineapi.com
  • 非中国区: https://analytics.byteplusapi.com
  • 私有化部署:根据私有化部署的环境来获取,即产品的域名地址。

SDK使用说明

Java

  • 源码:https://github.com/volcengine/datafinder-sdk-openapi-java
  • 软件包:https://github.com/volcengine/datafinder-sdk-openapi-java/raw/main/release/javasdk.zip
  • 初始化示例:
String ak = "{使用AK替换}";
String sk = "{使用SK替换}";

// SDK 的默认url地址是指向中国区 SAAS 的
RangersClient bc = new RangersClient(ak, sk);

// 海外和私有化需要指定url地址, 可以参考上文
String url="{使用非中国区或者Tester服务域名替换}";
RangersClient bc = new RangersClient(ak, sk, url);

String result = bc.dataTester("/openapi/v1/openapi-test", "GET");
System.out.println(result);

Python

  • 源码:https://github.com/volcengine/datafinder-sdk-openapi-py
  • 软件包:https://github.com/volcengine/datafinder-sdk-openapi-py/raw/main/release/rangersdk-1.2.0.tar.gz

Python SDK 软件包的形式下载后在shell执行以下命令完成安装:

# python需要3.7及以上版本
pip install rangersdk-${version}.tar.gz
  • 初始化示例:
from rangersdk import RangersClient

ak = '{使用AK替换}'
sk = '{使用SK替换}'
bc = RangersClient(ak, sk)

# 海外和私有化需要指定url地址, 可以参考上文,
url = '{使用非中国区或者Tester服务域名替换}'
# 注意这里传参数,一定要写成 url=url
bc = RangersClient(ak, sk, url=url)

re = bc.data_tester("/openapi/v1/openapi-test", method="GET")
print(re.json())

Golang

  • 源码:https://github.com/volcengine/datafinder-sdk-openapi-go
  • 软件包:https://github.com/volcengine/datafinder-sdk-openapi-go/raw/main/release/gosdk.zip
  • 初始化示例:
var (
   ak = "{使用AK替换}"
   sk = "{使用SK替换}"
)
bc := dslcontent.NewRangersClient(ak, sk)

// 海外和私有化需要指定url地址, 可以参考上文
url = '{使用非中国区或者Tester服务域名替换}'
bc := dslcontent.NewRangersClientWithUrl(ak, sk, url)

res, _ := bc.DataTester("/openapi/v1/openapi-test", "GET")
data, err := ioutil.ReadAll(res.Body)
fmt.Println(err, string(data))

JS

  • 源码:https://github.com/volcengine/datafinder-sdk-openapi-js
  • 软件包:https://github.com/volcengine/datafinder-sdk-openapi-js/raw/main/release/nodejssdk.zip
  • 初始化示例:
ak = "{使用AK替换}"
sk = "{使用SK替换}"
bc = new RangersClient(ak, sk)

// 海外和私有化需要指定url地址, 可以参考上文
url = '{使用非中国区或者Tester服务域名替换}'
bc = RangersClient(ak, sk, url=url)

bc.dataTester("/openapi/v1/openapi-test", {method: "GET"})
    .then(res => res.json())
    .then(response => {
        if (200 !== response['code']) {
            throw " result is not ok, code: " + response['code'] + ", message: " + response['message'];
        }
        console.log(response)
        console.log('success.')
    })
    .catch(error => console.error('error:', error));

PHP

  • 源码:https://github.com/volcengine/datafinder-sdk-openapi-php
  • 软件包:https://github.com/volcengine/datafinder-sdk-openapi-php/raw/main/release/phpsdk.zip
  • 初始化示例:
$ak = "{使用AK替换}";
$sk = "{使用SK替换}";
$bc = new RangersClient($ak, $sk);

// 海外和私有化需要指定url地址, 可以参考上文
$url = '{使用非中国区或者Tester服务域名替换}'
$bc = new RangersClient($ak, $sk, $url);

echo $bc->dataTester("/openapi/v1/openapi-test", "GET");

SDK使用注意

中文编码

获取列表的相关接口(实验、指标、互斥组)支持根据关键字查询,如需查询中文,Java、Python、PHP需要调用前自行进行url转码,转码方法如下
golang SDK和nodeJs SDK不需要自行转码
Java

import java.net.URLEncoder;

String keyword = URLEncoder.encode("中文关键字", "UTF-8")

Python

import urllib.parse

keyword = urllib.parse.quote("中文关键字", encoding="UTF-8")

PHP

$keyword = urlencode("中文关键字");

四. 接口说明

创建实验

注意

开放接口所创建的实验,仅管理员可编辑

接口描述: 创建一个编程实验或MAB实验。
请求路径:/openapi/v3/apps/{app_id}/experiments
请求方法:POST
请求参数

参数名称

参数类型

是否必填

描述

备注

name

string

实验名称

不能与当前APP下已有实验重名,长度限制200字符

description

string

实验描述

长度限制1000字符

tags

string

实验标签

["123", "456"]

owners

object

创建人

实验owner列表,owner的object数据结构包括id和name两个参数:

  • id:int类型,必填,表示用户ID。
  • name:string类型,必填,表示用户名。

您可以使用用户信息查询接口获取实验owners的数值。

endpoint_type

int

实验类型

0-客户端实验,1-服务端实验

duration

int

实验时长

单位天,范围:[1, 365]

major_metric

int

核心指标ID

必须在metrics中

metrics

int[]

关注的指标ID列表

必须包含major_metric

versions

object[]

实验版本配置

数组长度要大于等于2,详见version结构说明

layer_info

object

实验层配置

详见layer_info说明

mab_info

object

MAB实验配置信息

如果是创建MAB实验,该字段必传。详细介绍请参见下文的mab_info结构说明。

注意

  • 配置mab组和对应的非mab组的配置要相同,也就是mab和非mab组的配置是一对一对的。具体参见下文的例子,例如智能调优组"对照组"和评估组"对照组-Besfw"是一一对应的。
  • 私有化480版本mab核心指标只支持单事件转化率类型的指标,uv_per_dau(算子为:转化率)。

version结构说明

参数名称

参数类型

是否必填

描述

备注

type

int

对照版本/实验版本

0-对照版本,1-实验版本 versions数组中只能有一个对照版本

name

string

版本名称

长度50字符

description

string

版本描述

长度1000字符

weight

float

实验版本的流量分配

范围[0.001, 1] 0.1% ~ 100%
versions数组中不传,则默认均匀分配 如果传,则会校验所有weight的和是否为1

config

object

版本配置

version数组中所有config的key需要保持一致 { "key1": "value1", "key2": "value2" }

users

string[]

白名单用户

不同版本的白名单用户不能有交集

is_mab

int

是否为mab智能流量组,取值:0或1

layer_info结构说明

参数名称

参数类型

是否必填

描述

备注

layer_id

int

互斥组ID

使用的实验层,使用默认层则传-1或不传
如果指定了layer_id,则会校验实验层上可用流量是否满足实验配置

version_resource

float

实验流量占比

范围[0.001, 1],最小精度千分之一

mab_info结构说明

参数名称

参数类型

是否必填

描述

备注

interval_time

int

调优间隔,单位:秒

单位秒,最小间隔30分钟,并且按照30分钟增加,例如1800, 3600, 5400。

non_mab_traffic

int

评估流量占比

百分比,例如6就是6%,每个实验组最低需要3%的评估流量,例如三个实验组最低需要9%的评估流量。

返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

int

新创建实验ID

示例
编程实验,两个评估组,两个智能调优组,一共4个组,调优间隔30分钟,评估流量6%。

{
    "name": "test-mab",
    "duration": 14,
    "versions": [
        {
            "name": "对照组",
            "label": "对照组",
            "weight": 0.47,
            "is_mab": 1,
            "type": 0,
            "config": {
                "HcCVhO": "_Lf5XM"
            },
            "users": []
        },
        {
            "name": "实验组1",
            "label": "实验组1",
            "weight": 0.47,
            "is_mab": 1,
            "type": 1,
            "config": {
                "HcCVhO": "TAqqd4"
            },
            "users": []
        },
        {
            "name": "对照组-Besfw",
            "label": "对照组",
            "weight": 0.03,
            "is_mab": 0,
            "type": 1,
            "config": {
                "HcCVhO": "ij45wC"
            },
            "users": []
        },
        {
            "name": "实验组1-fL17k",
            "label": "实验组1",
            "weight": 0.03,
            "is_mab": 0,
            "type": 1,
            "config": {
                "HcCVhO": "WRDoSW"
            },
            "users": []
        }
    ],
    "major_metric": 100942,
    "metrics": [
        100940,
        100941,
        100942,
        100943,
        100944,
        100945,
        100946
    ],
    "mode": 1,
    "mab_info": {
        "interval_time": 1800,
        "non_mab_traffic": 6
    },
    "endpoint_type": 0,
    "layer_info": {
        "layer_id": -1,
        "version_resource": 1
    }
}

获取实验详情

说明: 根据实验ID获取实验详情
请求路径:/openapi/v3/apps/{app_id}/experiments/{experiment_id}
请求方法:GET
返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

object

接口返回的实验信息

data信息

参数名称

类型

说明

experiment

object

实验信息

experiment结构说明

参数名称

类型

说明

id

int

实验的experiment_id

name

string

实验名称

tags

string

实验标签列表

owners

object

owner信息列表,包含以下字段:

  • id:int,账号ID
  • name:string,用户名
  • account:string,用户账号名称

launch_start_time

long

实验开始时间,Unix时间戳

end_time

long

实验结束时间,Unix时间戳

create_time

long

实验创建时间,Unix时间戳

modify_time

long

实验修改时间,Unix时间戳

test_start_time

long

实验调试开始时间,Unix时间戳

duration

long

实验运行时间,单位秒

confidence_level

int

置信度水平,95代表置信度水平为95%

version_resource

float

实验所占流量,范围[0.001, 1],1为100%

layer_id

int

实验层id

freeze_status

int

实验冻结状态 1-冻结,0-没冻结

freeze_time

long

实验冻结时间,Unix时间戳(只有冻结状态为1时才有效)

version_freeze_status

boolean

是否进组不出组

  • true:是
  • false:否

pause_status

boolean

实验是否暂停

  • true:暂停
  • false:不暂停

endpoint_type

int

0-客户端实验,1-服务端实验

versions

object[]

实验版本信息

metrics

object[]

实验关注指标信息

status

int/enum

实验状态, 0:已结束 1:运行中 2: 待调度 3:调试中

filters

string

实验受众目标,json字符串

description

string

实验描述

metric结构说明

参数名称

类型

说明

id

int

指标id

name

string

指标名称

description

string

指标描述

is_primary

int

是否核心指标:0-否 1-是

calculate_type

string

指标计算类型

dsl

object

指标dsl

status

int

指标状态 0: 已下线 1:没下线

is_composed

boolean

是否组合指标:true/false

data_type

string

指标展现数值格式

metric_type

string

指标类型,枚举值如下:

  • tea:事件指标
  • funnel:漏斗指标
  • retention_all:预置留存指标。
  • custom_retention:自定义留存指标。
  • portable:数仓指标。
  • event:事件指标,过往曾使用“event”表示事件指标,当前事件指标均使用“tea”。
  • 其他枚举值:其他指标类型。

version结构说明

参数名称

类型

说明

id

int

版本id

type

int

版本类型:0-对照版本,1-实验版本

name

string

版本名称

description

string

版本描述

config

object

版本配置 { "key1": "value1", "key2": "value2" }

weight

int

版本权重,和为1000,1代表0.1% 为0则为均匀分配

user_list

string[]

白名单列表

获取实验列表

说明: 分页获取APP下的实验列表
注意:如果搜索关键字keyword包含中文,则需要先进行url转义,再进行调用
请求路径:/openapi/v3/apps/<app_id>/experiments
请求方法:GET
URL查询参数

参数

类型

说明

status

int

实验状态,0-已结束,1-运行中,3-测试中;不传则默认所有状态

page

int

分页参数,1表示第一页,不传默认为1

page_size

int

每页数量,不传默认99

keyword

string

搜索关键字,当前支持按照实验name和description模糊搜索

sort_by

string

排序规则。当前仅支持 end_time结束时间、launch_start_time实验启动时间、test_start_time测试开始时间; 不传默认实验创建时间

sort_order

string

排序顺序。desc/asc。不传默认desc降序

返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

object

{
"experiments": [],
"page": {
"current_page": 1, // 当前页
"total_pages": 0, // 总页数
"total_items": 0 // 总条目数
}
}

experiments结构说明

参数名称

类型

说明

id

int

实验ID

name

string

实验名称

end_time

long

实验结束时间,Unix时间戳

test_start_time

long

实验调试开始时间,Unix时间戳

launch_start_time

long

实验开始时间,Unix时间戳

duration

long

实验运行时间,单位秒

version_resource

float

实验所占流量,范围[0.001, 1],1为100%

layer_id

int

实验层id

freeze_status

int

实验冻结状态 1-冻结,0-没冻结

freeze_time

long

实验冻结时间,Unix时间戳(只有冻结状态为1时才有效)

version_freeze_status

boolean

是否进组不出组

  • true:是
  • false:否

pause_status

boolean

实验是否暂停

  • true:暂停
  • false:不暂停

endpoint_type

int

0-客户端实验,1-服务端实验

description

string

实验描述

status

int/enum

实验状态, 0:已结束 1:运行中 2: 待调度 3:调试中

owner

字符串

实验创建人

versions

object[]

实验版本信息

修改实验信息

说明: 修改实验的配置信息。通过Method来区分是全量修改还是部分修改

  • 全量修改:Method=PUT。请求参数中的所有必填参数必须包含。
  • 部分修改:Method=PATCH。可以任意传递支持的配置参数,请求体中有的参数,才会进行校验与修改,请求体中没有的参数,则会保持现状。

注意:由于使用的网络库本身不支持不支持PATCH方法,因此Java SDK暂不支持PATCH方法
请求路径:/openapi/v3/apps/{app_id}/experiments/<experiment_id>
请求方法:PUT/PATCH
请求参数

参数名称

参数类型

是否必须

描述

备注

name

string

实验名称

不能与已有实验重名,长度50字符

description

string

实验描述

长度1000字符

tags

string

实验标签

["123", "456"]

owners

object

创建人

实验owner列表

duration

int

实验时长

单位天,[1, 365],整数

major_metric

int

核心指标 ID

运行中不可修改 测试中可以修改

metrics

int[]

指标ID列表

versions

object[]

实验版本

version数量不可变动,只可以修改version内容

layer_info

object

互斥组

version结构

参数名称

参数类型

是否必填

描述

备注

id

int

版本ID

修改version信息必填

name

string

版本名称

长度50字符

description

string

版本描述

长度1000字符

weight

float

流量分配

范围[0.001, 1] 0.1% ~ 100%
versions数组中不传,则默认均匀分配
如果传,则会校验所有weight的和是否为1

config

object

版本参数不同版本的 key
需要保持一致

version数组中所有config的key需要保持一致
{ "key1": "value1", "key2": "value2" }

users

string[]

白名单用户

layer_info结构

参数名称

参数类型

是否必填

描述

备注

layer_id

int

互斥组 ID

version_resource

float

占用流量百分比

范围[0.001, 1],最小精度千分之一

返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

object

实验ID

修改实验关联指标组

说明: 修改实验关联的指标组,设置结果会直接覆盖实验关联指标的配置。
请求路径/openapi/v3/apps/<app_id>/metric_groups/experiments/{experiment_id}/update_watching_metric_groups
请求方法: PUT

  • 请求体请求参数如下。

    参数名称

    类型

    是否必须

    描述

    relation_metric_groups

    [object]

    修改后实验关联的指标组列表。指标组列表中的每个指标对象包含:metric_group_id、metric_ids、type三个字段,详细说明可参见表格下方的参数说明。

    注意

    调用此接口修改实验关联指标组时,会将本次设置结果直接覆盖实验的指标配置,而非基于此前实验的指标配置基础上进行新增、删除的操作。因此建议在进行修改前,您可调用“获取实验详情”接口先了解当前实验的指标有哪些,需要保留的指标组需同时添加在本次的修改指标中。

    metric_ids

    [int]

    指标ID列表,配置为修改后实验的指标ID列表。您可以通过“获取指标列表”接口获取指标ID。

    注意

    此处配置的指标需要为当前实验所在应用下创建的指标。

    metric_group_id

    int

    指标组ID,您可以通过“获取指标详情”接口,基于指标ID获取指标组ID。

    type

    string

    修改后实验的指标类型,支持设置为:

    • core:实验核心指标,仅支持设置一个实验核心指标。
    • watching:实验关注指标,支持设置多个实验关注指标。
  • 请求示例

    {
        "relation_metric_groups": [
            {
                "metric_group_id": 1679062,
                "metric_ids": [
                    114314
                ],
                "type": "core"
            },
            {
                "metric_group_id": 158338,
                "metric_ids": [
                    83731
                ],
                "type": "watching"
            }
        ]
    }
    

返回参数

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

int

NULL

开始实验

说明: 开始一个测试中的实验。使其状态变为运行中。
请求路径: /openapi/v3/apps/<app_id>/experiments/<experiment_id>/launch
请求方法: PUT
返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

object

实验ID

暂停实验

说明: 暂停指定实验
请求路径 : /openapi/v3/apps/<app_id>/experiments/<experiment_id>/pause
请求方法: POST
请求参数

参数名称

类型

说明

duration

int

暂停某个实验时,实验流量是平滑生效的,通过此参数设置平滑生效的时间是多少分钟

返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

恢复实验

说明: 恢复指定实验
请求路径 : /openapi/v3/apps/<app_id>/experiments/<experiment_id>/restore
请求方法: POST
请求参数

参数名称

类型

说明

duration

int

恢复某个实验时,实验流量是平滑生效的,通过此参数设置平滑生效的时间是多少分钟

返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

结束实验

说明: 结束指定实验
请求路径 : /openapi/v3/apps/<app_id>/experiments/<experiment_id>/stop
请求方法: PUT
返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

object

实验ID

创建指标

说明: 创建一个A/B测试指标
请求路径: /openapi/v3/apps/<app_id>/metrics
请求方法:POST
请求参数

参数名称

类型

是否必须

描述

备注

name

string

指标名称

长度限制 50,不可与相同APP下其他指标重复

description

string

指标描述

长度限制 1000

dsl

object

指标DSL

dsl详情可咨询对接人员

composed

boolean

是否是组合指标

true/false

data_type

string

数据展示类型

枚举值
number_0, number_1, number_2, number_3, number_4, number_5,
percent_0, percent_1, percent_2, percent_3, percent_4, percent_5
默认为percent_4,即百分数四位小数

返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

int

指标ID

基于指标模板创建指标

说明: 基于现存的A/B测试指标,通过修改其中的属性过滤信息,创建新的A/B测试指标。只会替换模板指标中同名的属性值,模板指标中不存在的属性会忽略。如果传入多个 metrics,要修改的属性信息会分别应用于每个 metric。
可以简单理解为把每个模板指标都复制一份,然后修改其已存在的 property 信息。
请求路径: /openapi/v3/apps/<app_id>/metrics/create-from-templates
请求方法: POST
请求参数

参数名称

类型

是否必须

描述

备注

metrics

list[metric]

指标信息列表

metric 见下表说明

properties

list[property]

需要修改的属性信息

property 见下表说明

metric字段说明

参数名称

类型

是否必须

描述

备注

metric_id

int

模板指标id

已存在的指标id

name

string

根据模板指标,新建指标的名称

长度限制 50,不可与相同APP下其他指标重复

description

string

根据模板指标,新建指标的指标信息

长度限制 1000

property字段说明

参数名称

类型

是否必须

描述

备注

property_name

string

属性名称

模板中不存在的属性名会直接忽略,不报错

property_values

string/int/float数组

属性值

长度限制255,如果为空,则是[];属性值类型需要与模板指标的属性类型保持一致。具体字段说明可参考 V3 DSL 字段详细说明

返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

list[object]

新创建的指标信息

object字段说明

参数名称

类型

说明

id

int

新创建的指标ID

name

string

新创建的指标名称

curl --location --request POST '{host}/datatester/openapi/v3/apps/253047/metrics/create-from-template' \
--header 'Content-Type: application/json' \
--data-raw '{
    "metrics": [
        {
            "metric_id": 33487,
            "name": "测试一下事件指标5",
            "description": "这是一个description"
        },
        {
            "metric_id": 33488,
            "name": "测试一下事件指标6",
            "description": "这是一个description"
        }
    ],
    "properties": [
        {
            "property_name": "app_channel",
            "property_values": [
                "channel3",
                "channel4"
            ]
        },
        {
            "property_name": "account_id",
            "property_values": [
                "1234556",
                "7654321"
            ]
        }
    ]
}'

删除指标

说明: 删除指定的指标。如果指标有已经关联的实验,则无法删除
请求路径: /openapi/v3/apps/<app_id>/metrics/<metric_id>
请求方法: DELETE
返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

int

指标ID

获取指标详情

说明: 获取指定指标的详情数据
请求路径: /openapi/v3/apps/<app_id>/metrics/<metric_id>
请求方法: GET
返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

object

指标信息 {"metric_info": }

指标信息说明

参数名称

类型

说明

id

int

指标ID

name

string

指标名

description

string

描述

dsl

object

指标dsl

composed

boolean

是否是组合指标

status

int

状态 0-下线 1-上线

is_support_major

boolean

是否支持设置为核心指标

is_required

int

是否是必看指标,0:不是,1:是

metric_group

object

该指标所属的指标组信息,详情见下文的metric_group结构说明

metric_group结构说明

参数名称

参数类型

描述

id

int

指标组ID

name

string

指标组名称

uba_report_type

int

指标组类型,枚举值:1-事件指标;2-留存指标;3-漏斗指标

获取指标列表

说明: 分页获取APP下的指标列表
请求路径:/openapi/v3/apps/<app_id>/metrics
请求方法:GET
URL查询参数

参数

类型

说明

status

int

指标状态,0-下线 1-上线,不传则默认所有状态

page

int

分页参数,1表示第一页,不传默认为1

page_size

int

每页数量,不传默认99

keyword

string

搜索关键字,当前支持按照指标name和description模糊搜索

返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

object

{
"metrics": [],
"page": {
"current_page": 1, // 当前页
"total_pages": 0, // 总页数
"total_items": 0 // 总条目数
}
}

指标信息说明

参数名称

类型

说明

id

int

指标ID

name

string

指标名

description

string

描述

dsl

object

指标dsl

composed

boolean

是否是组合指标

status

int

状态 0-下线 1-上线

is_support_major

boolean

是否支持设置为核心指标

全量修改指标信息

说明: 全量修改指标的信息,DSL暂时无法修改,只可以修改名称、描述和数据类型
请求路径: /openapi/v3/apps/<app_id>/metrics/<metric_id>
请求方法: PUT
请求体

参数名称

类型

是否必须

描述

备注

name

string

指标名称

最大长度50,不可重复

description

string

指标描述

最大长度1000

data_type

string

指标数据类型

枚举值
number_0, number_1, number_2, number_3, number_4, number_5,
percent_0, percent_1, percent_2, percent_3, percent_4, percent_5
默认为percent_4,即百分数四位小数

返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

int

指标ID

修改指标状态

说明: 修改指标的状态(上线、下线)。JAVA SDK暂不支持此接口
请求路径: /openapi/v3/apps/<app_id>/metrics/<metric_id>
请求方法: PATCH
请求体

参数名称

类型

是否必须

描述

备注

status

int

指标状态

0-下线 1-上线

返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

int

指标ID

获取互斥组列表

说明: 分页获取APP下互斥组的列表
请求路径: /openapi/v3/apps/<app_id>/layers
请求方法: GET
URL查询参数

参数

类型

说明

keyword

string

查询关键字,可以根据name和description模糊查询

endpoint_type

int

互斥组的端类型。0-客户端层,1-服务端层

page

int

查询页码。默认为1

page_size

int

每页数量,默认为99

返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

object

{
"layers": [],
"page": {
"current_page": 1, // 当前页
"total_pages": 0, // 总页数
"total_items": 0 // 总条目数
}
}

互斥组信息说明

参数名称

类型

说明

id

int

互斥组ID

name

string

互斥组名

description

string

描述

endpoint_type

int

端类型,0-客户端层,1-服务端层

available_traffic

int

剩余流量,1000代表100%

新建互斥组

说明: 创建一个新的互斥组
请求路径: /openapi/v3/apps/<app_id>/layers
请求方法: POST
请求参数

参数名称

类型

是否必须

说明

name

string

互斥组名,长度限制50

description

string

描述,长度限制1000

endpoint_type

int

端类型,0-客户端层,1-服务端层

返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

int

互斥组ID

获取实验报告-分组结论概览

说明

当前实验报告相关数据获取仅支持天粒度的数据获取,暂不支持小时等更细粒度的数据。

说明:用于获取实验报告分组结论概览。
请求路径 : /openapi/v3/apps/<app_id>/experiments/<experiment_id>/summary-data
请求方法: GET
返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

object

报告数据,详情请参见下文的报告数据结构说明。

报告数据结构说明

参数名称

参数类型

描述

summary_infos

list[object]

报告概览数据,详情请参见下文的summary_infos结构说明。

report_type

string

报告类型:day。表示报告的查询时间粒度为天级

start_ts

int

查询开始时间,UNIX时间戳

end_ts

int

查询结束时间,UNIX时间戳

user_data

object

各版本进组人数

summary_infos结构说明

参数名称

参数类型

描述

major_metric_name

string

核心指标名称

summary

list[object]

指标概览数据

返回示例

{
    "code": 200,
    "data": {
        "summary_infos": [
            {
                "major_metric_name": "any转化率",
                "summary": [
                    {
                        "vid": 339601,
                        "version_name": "8b4b2cfdbd73941123bce96f9ce541e2",
                        "confidence": 3,
                        "conf_interval": [
                            -0.08904,
                            0.08904
                        ],
                        "p": 1.0
                    }
                ]
            }
        ],
        "user_data": {
            "339600": 799,
            "339601": 799
        },
        "start_ts": 1708822800,
        "end_ts": 1713801599,
        "report_type": "day"
    },
    "message": "success"
}

获取实验报告-核心指标概览

说明:用于获取实验报告分组结论概览
请求路径 : /openapi/v3/apps/<app_id>/experiments/<experiment_id>/metric-data
请求方法: POST
请求参数

参数名称

类型

是否必须

描述

备注

metric_id

int

指标ID

您可以通过获取指标列表接口获取指标ID。

report_type

string

查询类型

默认天级。当前仅支持 day,表示报告的查询时间粒度为天级。

start_ts

int

查询开始时间,UNIX时间戳

默认实验开始时间,不可以早于实验开始时间

end_ts

int

查询结束时间,UNIX时间戳

默认当前时间,不可以晚于实验结束时间

返回值

参数名称

类型

说明

code

int

接口返回状态,200为成功

message

string

接口返回信息,成功时默认为success

data

object

报告数据,详情请参见下文的报告数据结构说明。

报告数据结构说明

参数名称

参数类型

描述

versions

list[object]

实验版本信息,详情请参见下文的版本信息结构说明。

start_ts

int

查询开始时间,UNIX时间戳

end_ts

int

查询结束时间,UNIX时间戳

available_start_ts

int

可用报告开始时间,UNIX时间戳

说明

当查询的时间范围超出了真实的报告数据产出的时间范围时,调用接口的返回结果为报告有数据的时间范围内的数据,这里的可用报告开始/结束时间,指的是真实返回的报告数据的时间范围。

available_end_ts

int

可用结束时间,UNIX时间戳

confidence_level

int

置信度

metric_id

int

指标ID

distribution

object

统计分布数据

daily_data

object

天级报告数据

user_data

object

各版本进组人数

版本信息结构说明

参数名称

参数类型

描述

id

int

版本ID

name

string

版本名称

config

object

版本配置信息

type

int

0:对照版本 1:实验版本

weight

int

版本权重,0为均分

disabled

bool

是否禁用

返回示例

{
    "code": 200,
    "data": {
        "available_start_ts": 1708822800,
        "available_end_ts": 1713801599,
        "start_ts": 1708822800,
        "end_ts": 1713801599,
        "versions": [
            {
                "id": "339600",
                "name": "版本1",
                "config": {
                    "0304": "111"
                },
                "type": 0,
                "weight": 0,
                "disabled": false
            },
            {
                "id": "339601",
                "name": "版本2",
                "config": {
                    "0304": "222"
                },
                "type": 1,
                "weight": 0,
                "disabled": false
            }
        ],
        "confidence_level": 80,
        "metric_id": 99196,
        "distribution": {
            "339600": {
                "339601": {
                    "p": 1.0,
                    "m": 0.3416771,
                    "change": 0.0,
                    "change_rate": 0.0,
                    "conf_interval": [
                        -0.08904,
                        0.08904
                    ],
                    "half_interval": 0.0890367,
                    "confidence": 3,
                    "mean": {
                        "339600": 0.3416771,
                        "339601": 0.3416771
                    },
                    "variance": {
                        "339600": 0.00028152,
                        "339601": 0.00028152
                    },
                    "mde": 0.14750037,
                    "sample_size": {
                        "339600": 799,
                        "339601": 799
                    },
                    "details": {
                        "numerator": 273,
                        "denominator": 799
                    }
                }
            },
            "339601": {
                "339600": {
                    "p": 0,
                    "m": 0.3416771,
                    "change": 0,
                    "change_rate": 0,
                    "conf_interval": [
                        0,
                        0
                    ],
                    "half_interval": 0,
                    "confidence": 3,
                    "mean": {
                        "339601": 0,
                        "339600": 0
                    },
                    "variance": {
                        "339601": 0,
                        "339600": 0
                    },
                    "details": {
                        "numerator": 273,
                        "denominator": 799
                    }
                }
            }
        },
        "daily_data": {
            "2024-03-04": {
                "339600": {
                    "339601": {
                        "p": 1.0,
                        "m": 0.3416771,
                        "change": 0.0,
                        "change_rate": 0.0,
                        "conf_interval": [
                            -0.08904,
                            0.08904
                        ],
                        "half_interval": 0.0890367,
                        "confidence": 3,
                        "mean": {
                            "339600": 0,
                            "339601": 0
                        },
                        "variance": {
                            "339600": 0,
                            "339601": 0
                        },
                        "mde": 0.14750037,
                        "details": {
                            "numerator": 273,
                            "denominator": 799
                        }
                    }
                },
                "339601": {
                    "339600": {
                        "p": 0,
                        "m": 0.3416771,
                        "change": 0,
                        "change_rate": 0,
                        "conf_interval": [
                            0,
                            0
                        ],
                        "half_interval": 0,
                        "confidence": 3,
                        "mean": {
                            "339601": 0,
                            "339600": 0
                        },
                        "variance": {
                            "339601": 0,
                            "339600": 0
                        },
                        "details": {
                            "numerator": 273,
                            "denominator": 799
                        }
                    }
                }
            }
        },
        "boxplot": "The current indicator does not support box plots. Please refer to the explanation below for the specific reason.",
        "user_data": {
            "339600": 799,
            "339601": 799
        }
    },
    "message": "success"
}

五. 业务错误码说明

返回消息体里的code详细的定义

错误码

含义

200

成功

403

对请求的资源(app、实验等)无权限

404

请求的资源不存在,如查询了不存在的实验ID或指标ID

410

请求的资源已被删除

40000

缺少必填参数

40001

参数值错误

40003

对请求的接口无访问权限

40010

调用过于频繁(超过每秒调用次数限制)

40011

超过每天调用次数限制

60001

DSL格式错误

60002

指标有已关联实验,无法删除

60010

流量不足,无法创建实验

60011

实验的endpoint_type与所属互斥组不一致

60012

测试中实验无法被结束

60013

草稿态实验不可被openAPI查询或修改

最近更新时间:2026.04.17 14:56:09
这个页面对您有帮助吗?
有用
有用
无用
无用