This product is not supported for your selected Datadog site. ().

List experiment protocols

GET https://api.ap1.datadoghq.com/api/v2/experiments/protocolshttps://api.ap2.datadoghq.com/api/v2/experiments/protocolshttps://api.datadoghq.eu/api/v2/experiments/protocolshttps://api.ddog-gov.com/api/v2/experiments/protocolshttps://api.us2.ddog-gov.com/api/v2/experiments/protocolshttps://api.uk1.datadoghq.com/api/v2/experiments/protocolshttps://api.datadoghq.com/api/v2/experiments/protocolshttps://api.us3.datadoghq.com/api/v2/experiments/protocolshttps://api.us5.datadoghq.com/api/v2/experiments/protocols

Overview

List draft, published, and archived experiment protocols. Omit filter[status] to return all statuses. Only published protocols can be used to create experiments. This endpoint requires the product_analytics_experiments_read permission.

OAuth apps require the product_analytics_experiments_read authorization scope to access this endpoint.

Arguments

Query Strings

Name

Type

Description

filter[status]

array

Filter by protocol status. Repeat this parameter to select more than one status.

filter[primary_metric_id]

string

Filter by the UUID of the primary metric in the protocol template.

filter[query]

string

Find protocols whose names contain the search text, regardless of case. Leading and trailing spaces are ignored. Blank values apply no filter. The maximum length is 1024 UTF-8 bytes.

filter[subject_type_id]

string

Filter by the UUID of the subject type in the protocol template.

page[limit]

integer

Number of results per page. The default is 25. Values above 50 are reduced to 50.

page[offset]

integer

Number of results to skip before returning this page.

sort

string

Sort by name, subject_type_name, primary_metric_name, or updated_at. Prefix with - for descending order. The default is -updated_at.

Response

OK

List of protocol resources with pagination information.

Expand All

Field

Type

Description

data [required]

[object]

Resources returned in this response.

attributes

object

Summary of the protocol and its selected subject type and primary metric.

description

string

Text that explains the protocol.

name [required]

string

Display name of the protocol.

primary_metric

object

Subject type selected by the protocol.

id

string

ID of the subject type.

name

string

Display name of the subject type.

primary_metric_id

string

ID of the primary metric supplied by the protocol.

status [required]

enum

Publication status of the protocol. Allowed enum values: DRAFT,PUBLISHED,ARCHIVED

subject_type

object

Subject type selected by the protocol.

id

string

ID of the subject type.

name

string

Display name of the subject type.

subject_type_id

string

ID of the subject type used by this configuration.

updated_at [required]

string

RFC3339 update time. Preserve all fractional seconds when passing this value as expected_updated_at.

id [required]

uuid

ID of the protocol.

type [required]

enum

Protocols resource type. Allowed enum values: protocols

default: protocols

links

object

Links for navigating a paginated result set.

first

string

URL of the first page of results.

last

string

URL of the last page of results.

next

string

URL of the next page of results.

prev

string

URL of the previous page of results.

self

string

URL of the current page of results.

meta

object

Pagination information for a list response.

page

object

Result counts and offsets for a page of results.

first_offset

int64

Offset of the first page of results.

last_offset

int64

Offset of the last page of results.

limit

int64

Maximum number of results returned in one page.

next_offset

int64

Offset of the next page of results.

offset

int64

Number of results skipped before this page.

prev_offset

int64

Offset of the previous page of results.

total

int64

Total number of matching results across all pages.

type

string

Pagination method used for this result set.

{
  "data": [
    {
      "attributes": {
        "description": "string",
        "name": "Checkout conversion",
        "primary_metric": {
          "id": "string",
          "name": "string"
        },
        "primary_metric_id": "string",
        "status": "PUBLISHED",
        "subject_type": {
          "id": "string",
          "name": "string"
        },
        "subject_type_id": "string",
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "type": "protocols"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": {
      "first_offset": "integer",
      "last_offset": "integer",
      "limit": "integer",
      "next_offset": "integer",
      "offset": "integer",
      "prev_offset": "integer",
      "total": "integer",
      "type": "string"
    }
  }
}

Bad Request

API error response.

Expand All

Field

Type

Description

errors [required]

[object]

A list of errors.

detail

string

A human-readable explanation specific to this occurrence of the error.

meta

object

Non-standard meta-information about the error

source

object

References to the source of the error.

header

string

A string indicating the name of a single request header which caused the error.

parameter

string

A string indicating which URI query parameter caused the error.

pointer

string

A JSON pointer to the value in the request document that caused the error.

status

string

Status code of the response.

title

string

Short human-readable summary of the error.

{
  "errors": [
    {
      "detail": "Missing required attribute in body",
      "meta": {},
      "source": {
        "header": "Authorization",
        "parameter": "limit",
        "pointer": "/data/attributes/title"
      },
      "status": "400",
      "title": "Bad Request"
    }
  ]
}

Unauthorized

API error response.

Expand All

Field

Type

Description

errors [required]

[object]

A list of errors.

detail

string

A human-readable explanation specific to this occurrence of the error.

meta

object

Non-standard meta-information about the error

source

object

References to the source of the error.

header

string

A string indicating the name of a single request header which caused the error.

parameter

string

A string indicating which URI query parameter caused the error.

pointer

string

A JSON pointer to the value in the request document that caused the error.

status

string

Status code of the response.

title

string

Short human-readable summary of the error.

{
  "errors": [
    {
      "detail": "Missing required attribute in body",
      "meta": {},
      "source": {
        "header": "Authorization",
        "parameter": "limit",
        "pointer": "/data/attributes/title"
      },
      "status": "400",
      "title": "Bad Request"
    }
  ]
}

Forbidden

API error response.

Expand All

Field

Type

Description

errors [required]

[object]

A list of errors.

detail

string

A human-readable explanation specific to this occurrence of the error.

meta

object

Non-standard meta-information about the error

source

object

References to the source of the error.

header

string

A string indicating the name of a single request header which caused the error.

parameter

string

A string indicating which URI query parameter caused the error.

pointer

string

A JSON pointer to the value in the request document that caused the error.

status

string

Status code of the response.

title

string

Short human-readable summary of the error.

{
  "errors": [
    {
      "detail": "Missing required attribute in body",
      "meta": {},
      "source": {
        "header": "Authorization",
        "parameter": "limit",
        "pointer": "/data/attributes/title"
      },
      "status": "400",
      "title": "Bad Request"
    }
  ]
}

Too many requests

API error response.

Expand All

Field

Type

Description

errors [required]

[string]

A list of errors.

{
  "errors": [
    "Bad Request"
  ]
}

Code Example

                  # Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"

# Curl command
curl -X GET "https://api.ap1.datadoghq.com"https://api.ap2.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.us2.ddog-gov.com"https://api.uk1.datadoghq.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/experiments/protocols" \ -H "Accept: application/json" \ -H "Authorization: Bearer ${DD_BEARER_TOKEN}"