Skip to content
Start here

DEX

ModelsExpand Collapse
DigitalExperienceMonitor = object { id, default, name }
id: string

API Resource UUID tag.

maxLength36
default: boolean

Whether the policy is the default for the account

name: string
NetworkPath = object { slots, sampling }
slots: array of object { id, clientToAppRttMs, clientToCfEgressRttMs, 3 more }
id: string

API Resource UUID tag.

maxLength36
clientToAppRttMs: number

Round trip time in ms of the client to app mile

clientToCfEgressRttMs: number

Round trip time in ms of the client to Cloudflare egress mile

clientToCfIngressRttMs: number

Round trip time in ms of the client to Cloudflare ingress mile

timestamp: string
clientToIspRttMs: optional number

Round trip time in ms of the client to ISP mile

sampling: optional object { unit, value }

Specifies the sampling applied, if any, to the slots response. When sampled, results shown represent the first test run to the start of each sampling interval.

unit: "hours"
value: number
NetworkPathResponse = object { id, deviceName, interval, 4 more }
id: string

API Resource UUID tag.

maxLength36
deviceName: optional string
interval: optional string

The interval at which the Traceroute synthetic application test is set to run.

kind: optional "traceroute"
name: optional string
networkPath: optional NetworkPath { slots, sampling }
url: optional string

The host of the Traceroute synthetic application test

Percentiles = object { p50, p90, p95, p99 }
p50: optional number

p50 observed in the time period

p90: optional number

p90 observed in the time period

p95: optional number

p95 observed in the time period

p99: optional number

p99 observed in the time period

DEXWARP Change Events

List WARP change events.
GET/accounts/{account_id}/dex/warp-change-events
ModelsExpand Collapse
WARPChangeEventGetResponse = array of object { account_name, account_tag, device_id, 6 more } or object { device_id, device_registration, from, 5 more }
One of the following:
DigitalExperienceMonitoringWARPToggleChangeEvent = object { account_name, account_tag, device_id, 6 more }
account_name: optional string

The account name.

account_tag: optional string

The public account identifier.

device_id: optional string

API Resource UUID tag.

maxLength36
device_registration: optional string

API Resource UUID tag.

maxLength36
hostname: optional string

The hostname of the machine the event is from

serial_number: optional string

The serial number of the machine the event is from

timestamp: optional string

Timestamp in ISO format

toggle: optional "on" or "off"

The state of the WARP toggle.

One of the following:
"on"
"off"
user_email: optional string

Email tied to the device

DigitalExperienceMonitoringWARPConfigChangeEvent = object { device_id, device_registration, from, 5 more }
device_id: optional string

API Resource UUID tag.

maxLength36
device_registration: optional string

API Resource UUID tag.

maxLength36
from: optional object { account_name, account_tag, config_name }
account_name: optional string

The account name.

account_tag: optional string

API Resource UUID tag.

maxLength36
config_name: optional string

The name of the WARP configuration.

hostname: optional string

The hostname of the machine the event is from

serial_number: optional string

The serial number of the machine the event is from

timestamp: optional string

Timestamp in ISO format

to: optional object { account_name, account_tag, config_name }
account_name: optional string

The account name.

account_tag: optional string

API Resource UUID tag.

maxLength36
config_name: optional string

The name of the WARP configuration.

user_email: optional string

Email tied to the device

DEXCommands

List account commands
GET/accounts/{account_id}/dex/commands
Create account commands
POST/accounts/{account_id}/dex/commands
ModelsExpand Collapse
CommandListResponse = object { commands }
commands: optional array of object { id, completed_date, created_date, 6 more }
id: optional string
completed_date: optional string
formatdate-time
created_date: optional string
formatdate-time
device_id: optional string
filename: optional string
registration_id: optional string

Unique identifier for the device registration

status: optional string
type: optional string
user_email: optional string
CommandCreateResponse = object { commands }
commands: optional array of object { id, args, device_id, 3 more }

List of created commands

id: optional string

Unique identifier for the command

args: optional map[string]

Command arguments

device_id: optional string

Identifier for the device associated with the command

registration_id: optional string

Unique identifier for the device registration

status: optional "PENDING_EXEC" or "PENDING_UPLOAD" or "SUCCESS" or "FAILED"

Current status of the command

One of the following:
"PENDING_EXEC"
"PENDING_UPLOAD"
"SUCCESS"
"FAILED"
type: optional string

Type of the command (e.g., "pcap" or "warp-diag")

DEXCommandsDevices

List devices eligible for remote captures
GET/accounts/{account_id}/dex/commands/devices
ModelsExpand Collapse
DeviceListResponse = object { devices }
devices: optional array of object { deviceId, deviceName, eligible, 7 more }

List of eligible devices

deviceId: optional string

Device identifier (UUID v4)

deviceName: optional string

Device identifier (human readable)

eligible: optional boolean

Whether the device is eligible for remote captures

ineligibleReason: optional string

If the device is not eligible, the reason why.

personEmail: optional string

User contact email address

platform: optional string

Operating system

registrationId: optional string

Device registration identifier (UUID v4). On multi-user devices, this uniquely identifies a user's registration on the device.

status: optional string

Network status

timestamp: optional string

Timestamp in ISO format

version: optional string

WARP client version

DEXCommandsDownloads

Download command output file
GET/accounts/{account_id}/dex/commands/{command_id}/downloads/{filename}

DEXCommandsQuota

Returns account commands usage, quota, and reset time
GET/accounts/{account_id}/dex/commands/quota
ModelsExpand Collapse
QuotaGetResponse = object { quota, quota_usage, reset_time }
quota: number

The remaining number of commands that can be initiated for an account

quota_usage: number

The number of commands that have been initiated for an account

reset_time: string

The time when the quota resets

formatdate-time

DEXColos

List Cloudflare colos
GET/accounts/{account_id}/dex/colos
ModelsExpand Collapse
ColoListResponse = object { airportCode, city, countryCode }
airportCode: string

Airport code

city: string

City

countryCode: string

Country code

DEXFleet Status

List fleet status details by dimension
GET/accounts/{account_id}/dex/fleet-status/live
List fleet status aggregate details by dimension
GET/accounts/{account_id}/dex/fleet-status/over-time
ModelsExpand Collapse
LiveStat = object { uniqueDevicesTotal, value }
uniqueDevicesTotal: optional number

Number of unique devices

value: optional string
FleetStatusLiveResponse = object { deviceStats }
deviceStats: optional object { byColo, byMode, byPlatform, 3 more }
byColo: optional array of LiveStat { uniqueDevicesTotal, value }
uniqueDevicesTotal: optional number

Number of unique devices

value: optional string
byMode: optional array of LiveStat { uniqueDevicesTotal, value }
uniqueDevicesTotal: optional number

Number of unique devices

value: optional string
byPlatform: optional array of LiveStat { uniqueDevicesTotal, value }
uniqueDevicesTotal: optional number

Number of unique devices

value: optional string
byStatus: optional array of LiveStat { uniqueDevicesTotal, value }
uniqueDevicesTotal: optional number

Number of unique devices

value: optional string
byVersion: optional array of LiveStat { uniqueDevicesTotal, value }
uniqueDevicesTotal: optional number

Number of unique devices

value: optional string
uniqueDevicesTotal: optional number

Number of unique devices

FleetStatusOverTimeResponse = object { deviceStats }
deviceStats: optional object { byMode, byStatus, uniqueDevicesTotal }
byMode: optional array of object { timestamp, uniqueDevicesTotal, value }
timestamp: optional string

Timestamp in ISO format

uniqueDevicesTotal: optional number

Number of unique devices

value: optional string
byStatus: optional array of object { timestamp, uniqueDevicesTotal, value }
timestamp: optional string

Timestamp in ISO format

uniqueDevicesTotal: optional number

Number of unique devices

value: optional string
uniqueDevicesTotal: optional number

Number of unique devices

DEXFleet StatusDevices

List fleet status devices
GET/accounts/{account_id}/dex/fleet-status/devices
ModelsExpand Collapse
DeviceListResponse = object { colo, deviceId, mode, 35 more }
colo: string

Cloudflare colo

deviceId: string

Device identifier (UUID v4)

mode: string

The mode under which the WARP client is run

platform: string

Operating system

status: string

Network status

timestamp: string

Timestamp in ISO format

version: string

WARP client version

alwaysOn: optional boolean
batteryCharging: optional boolean
batteryCycles: optional number
formatint64
batteryPct: optional number
formatfloat
connectionType: optional string
cpuPct: optional number
formatfloat
cpuPctByApp: optional array of array of object { cpu_pct, name }
cpu_pct: optional number
formatfloat
name: optional string
deviceIpv4: optional object { address, asn, aso, 3 more }
address: optional string
asn: optional number
aso: optional string
location: optional object { city, country_iso, state_iso, zip }
city: optional string
country_iso: optional string
state_iso: optional string
zip: optional string
netmask: optional string
version: optional string
deviceIpv6: optional object { address, asn, aso, 3 more }
address: optional string
asn: optional number
aso: optional string
location: optional object { city, country_iso, state_iso, zip }
city: optional string
country_iso: optional string
state_iso: optional string
zip: optional string
netmask: optional string
version: optional string
deviceName: optional string

Device identifier (human readable)

diskReadBps: optional number
formatint64
diskUsagePct: optional number
formatfloat
diskWriteBps: optional number
formatint64
dohSubdomain: optional string
estimatedLossPct: optional number
formatfloat
firewallEnabled: optional boolean
gatewayIpv4: optional object { address, asn, aso, 3 more }
address: optional string
asn: optional number
aso: optional string
location: optional object { city, country_iso, state_iso, zip }
city: optional string
country_iso: optional string
state_iso: optional string
zip: optional string
netmask: optional string
version: optional string
gatewayIpv6: optional object { address, asn, aso, 3 more }
address: optional string
asn: optional number
aso: optional string
location: optional object { city, country_iso, state_iso, zip }
city: optional string
country_iso: optional string
state_iso: optional string
zip: optional string
netmask: optional string
version: optional string
handshakeLatencyMs: optional number
formatint64
ispIpv4: optional object { address, asn, aso, 3 more }
address: optional string
asn: optional number
aso: optional string
location: optional object { city, country_iso, state_iso, zip }
city: optional string
country_iso: optional string
state_iso: optional string
zip: optional string
netmask: optional string
version: optional string
ispIpv6: optional object { address, asn, aso, 3 more }
address: optional string
asn: optional number
aso: optional string
location: optional object { city, country_iso, state_iso, zip }
city: optional string
country_iso: optional string
state_iso: optional string
zip: optional string
netmask: optional string
version: optional string
metal: optional string
networkRcvdBps: optional number
formatint64
networkSentBps: optional number
formatint64
networkSsid: optional string
personEmail: optional string

User contact email address

ramAvailableKb: optional number
formatint64
ramUsedPct: optional number
formatfloat
ramUsedPctByApp: optional array of array of object { name, ram_used_pct }
name: optional string
ram_used_pct: optional number
formatfloat
switchLocked: optional boolean
wifiStrengthDbm: optional number
formatint64

DEXHTTP Tests

Get details and aggregate metrics for an http test
GET/accounts/{account_id}/dex/http-tests/{test_id}
ModelsExpand Collapse
HTTPDetails = object { host, httpStats, httpStatsByColo, 6 more }
host: optional string

The url of the HTTP synthetic application test

httpStats: optional object { availabilityPct, dnsResponseTimeMs, httpStatusCode, 3 more }
availabilityPct: object { slots, avg, max, min }
slots: array of object { timestamp, value }
timestamp: string
value: number
formatfloat
avg: optional number

average observed in the time period

formatfloat
max: optional number

highest observed in the time period

formatfloat
min: optional number

lowest observed in the time period

formatfloat
dnsResponseTimeMs: TestStatOverTime { slots, avg, max, min }
httpStatusCode: array of object { status200, status300, status400, 2 more }
status200: number
status300: number
status400: number
status500: number
timestamp: string
resourceFetchTimeMs: TestStatOverTime { slots, avg, max, min }
serverResponseTimeMs: TestStatOverTime { slots, avg, max, min }
uniqueDevicesTotal: number

Count of unique devices that have run this test in the given time period

httpStatsByColo: optional array of object { availabilityPct, colo, dnsResponseTimeMs, 4 more }
availabilityPct: object { slots, avg, max, min }
slots: array of object { timestamp, value }
timestamp: string
value: number
formatfloat
avg: optional number

average observed in the time period

formatfloat
max: optional number

highest observed in the time period

formatfloat
min: optional number

lowest observed in the time period

formatfloat
colo: string
dnsResponseTimeMs: TestStatOverTime { slots, avg, max, min }
httpStatusCode: array of object { status200, status300, status400, 2 more }
status200: number
status300: number
status400: number
status500: number
timestamp: string
resourceFetchTimeMs: TestStatOverTime { slots, avg, max, min }
serverResponseTimeMs: TestStatOverTime { slots, avg, max, min }
uniqueDevicesTotal: number

Count of unique devices that have run this test in the given time period

interval: optional string

The interval at which the HTTP synthetic application test is set to run.

kind: optional "http"
method: optional string

The HTTP method to use when running the test

name: optional string

The name of the HTTP synthetic application test

target_policies: optional array of DigitalExperienceMonitor { id, default, name }
id: string

API Resource UUID tag.

maxLength36
default: boolean

Whether the policy is the default for the account

name: string
targeted: optional boolean

DEXHTTP TestsPercentiles

Get percentiles for an http test
GET/accounts/{account_id}/dex/http-tests/{test_id}/percentiles
ModelsExpand Collapse
HTTPDetailsPercentiles = object { dnsResponseTimeMs, resourceFetchTimeMs, serverResponseTimeMs }
dnsResponseTimeMs: optional Percentiles { p50, p90, p95, p99 }
resourceFetchTimeMs: optional Percentiles { p50, p90, p95, p99 }
serverResponseTimeMs: optional Percentiles { p50, p90, p95, p99 }
TestStatOverTime = object { slots, avg, max, min }
slots: array of object { timestamp, value }
timestamp: string
value: number
avg: optional number

average observed in the time period

max: optional number

highest observed in the time period

min: optional number

lowest observed in the time period

DEXTests

List DEX test analytics
GET/accounts/{account_id}/dex/tests/overview
ModelsExpand Collapse
AggregateTimePeriod = object { units, value }
units: "hours" or "days" or "testRuns"
One of the following:
"hours"
"days"
"testRuns"
value: number
Tests = object { overviewMetrics, tests }
overviewMetrics: object { testsTotal, avgHttpAvailabilityPct, avgTracerouteAvailabilityPct }
testsTotal: number

number of tests.

avgHttpAvailabilityPct: optional number

percentage availability for all HTTP test results in response

formatfloat
avgTracerouteAvailabilityPct: optional number

percentage availability for all traceroutes results in response

formatfloat
tests: array of object { id, created, description, 13 more }

array of test results objects.

id: string

API Resource UUID tag.

maxLength36
created: string

date the test was created.

description: string

the test description defined during configuration

enabled: boolean

if true, then the test will run on targeted devices. Else, the test will not run.

host: string
interval: string

The interval at which the synthetic application test is set to run.

kind: "http" or "traceroute"

test type, http or traceroute

One of the following:
"http"
"traceroute"
name: string

name given to this test

updated: string
httpResults: optional object { resourceFetchTime }
resourceFetchTime: object { history, avgMs, overTime }
history: array of object { timePeriod, avgMs, deltaPct }
timePeriod: AggregateTimePeriod { units, value }
avgMs: optional number
deltaPct: optional number
formatfloat
avgMs: optional number
overTime: optional object { timePeriod, values }
timePeriod: AggregateTimePeriod { units, value }
values: array of object { avgMs, timestamp }
avgMs: number
timestamp: string
httpResultsByColo: optional array of object { colo, resourceFetchTime }
colo: string

Cloudflare colo

resourceFetchTime: object { history, avgMs, overTime }
history: array of object { timePeriod, avgMs, deltaPct }
timePeriod: AggregateTimePeriod { units, value }
avgMs: optional number
deltaPct: optional number
formatfloat
avgMs: optional number
overTime: optional object { timePeriod, values }
timePeriod: AggregateTimePeriod { units, value }
values: array of object { avgMs, timestamp }
avgMs: number
timestamp: string
method: optional string

for HTTP, the method to use when running the test

target_policies: optional array of DigitalExperienceMonitor { id, default, name }
id: string

API Resource UUID tag.

maxLength36
default: boolean

Whether the policy is the default for the account

name: string
targeted: optional boolean
tracerouteResults: optional object { roundTripTime }
roundTripTime: object { history, avgMs, overTime }
history: array of object { timePeriod, avgMs, deltaPct }
timePeriod: AggregateTimePeriod { units, value }
avgMs: optional number
deltaPct: optional number
formatfloat
avgMs: optional number
overTime: optional object { timePeriod, values }
timePeriod: AggregateTimePeriod { units, value }
values: array of object { avgMs, timestamp }
avgMs: number
timestamp: string
tracerouteResultsByColo: optional array of object { colo, roundTripTime }
colo: string

Cloudflare colo

roundTripTime: object { history, avgMs, overTime }
history: array of object { timePeriod, avgMs, deltaPct }
timePeriod: AggregateTimePeriod { units, value }
avgMs: optional number
deltaPct: optional number
formatfloat
avgMs: optional number
overTime: optional object { timePeriod, values }
timePeriod: AggregateTimePeriod { units, value }
values: array of object { avgMs, timestamp }
avgMs: number
timestamp: string

DEXTestsUnique Devices

Get count of devices targeted
GET/accounts/{account_id}/dex/tests/unique-devices
ModelsExpand Collapse
UniqueDevices = object { uniqueDevicesTotal }
uniqueDevicesTotal: number

total number of unique devices

DEXTraceroute Test Results

DEXTraceroute Test ResultsNetwork Path

Get details for a specific traceroute test run
GET/accounts/{account_id}/dex/traceroute-test-results/{test_result_id}/network-path
ModelsExpand Collapse
NetworkPathGetResponse = object { hops, resultId, deviceName, 2 more }
hops: array of object { ttl, asn, aso, 6 more }

an array of the hops taken by the device to reach the end destination

ttl: number
asn: optional number
aso: optional string
ipAddress: optional string
location: optional object { city, state, zip }
city: optional string
state: optional string
zip: optional string
mile: optional "client-to-app" or "client-to-cf-egress" or "client-to-cf-ingress" or "client-to-isp"
One of the following:
"client-to-app"
"client-to-cf-egress"
"client-to-cf-ingress"
"client-to-isp"
name: optional string
packetLossPct: optional number
formatfloat
rttMs: optional number
resultId: string

API Resource UUID tag.

maxLength36
deviceName: optional string

name of the device associated with this network path response

testId: optional string

API Resource UUID tag.

maxLength36
testName: optional string

name of the tracroute test

DEXTraceroute Tests

Get details and aggregate metrics for a traceroute test
GET/accounts/{account_id}/dex/traceroute-tests/{test_id}
Get percentiles for a traceroute test
GET/accounts/{account_id}/dex/traceroute-tests/{test_id}/percentiles
Get network path breakdown for a traceroute test
GET/accounts/{account_id}/dex/traceroute-tests/{test_id}/network-path
ModelsExpand Collapse
Traceroute = object { host, interval, kind, 5 more }
host: string

The host of the Traceroute synthetic application test

interval: string

The interval at which the Traceroute synthetic application test is set to run.

kind: "traceroute"
name: string

The name of the Traceroute synthetic application test

target_policies: optional array of DigitalExperienceMonitor { id, default, name }
id: string

API Resource UUID tag.

maxLength36
default: boolean

Whether the policy is the default for the account

name: string
targeted: optional boolean
tracerouteStats: optional object { availabilityPct, hopsCount, packetLossPct, 2 more }
availabilityPct: object { slots, avg, max, min }
slots: array of object { timestamp, value }
timestamp: string
value: number
formatfloat
avg: optional number

average observed in the time period

formatfloat
max: optional number

highest observed in the time period

formatfloat
min: optional number

lowest observed in the time period

formatfloat
hopsCount: TestStatOverTime { slots, avg, max, min }
packetLossPct: object { slots, avg, max, min }
slots: array of object { timestamp, value }
timestamp: string
value: number
formatfloat
avg: optional number

average observed in the time period

formatfloat
max: optional number

highest observed in the time period

formatfloat
min: optional number

lowest observed in the time period

formatfloat
roundTripTimeMs: TestStatOverTime { slots, avg, max, min }
uniqueDevicesTotal: number

Count of unique devices that have run this test in the given time period

tracerouteStatsByColo: optional array of object { availabilityPct, colo, hopsCount, 3 more }
availabilityPct: object { slots, avg, max, min }
slots: array of object { timestamp, value }
timestamp: string
value: number
formatfloat
avg: optional number

average observed in the time period

formatfloat
max: optional number

highest observed in the time period

formatfloat
min: optional number

lowest observed in the time period

formatfloat
colo: string
hopsCount: TestStatOverTime { slots, avg, max, min }
packetLossPct: object { slots, avg, max, min }
slots: array of object { timestamp, value }
timestamp: string
value: number
formatfloat
avg: optional number

average observed in the time period

formatfloat
max: optional number

highest observed in the time period

formatfloat
min: optional number

lowest observed in the time period

formatfloat
roundTripTimeMs: TestStatOverTime { slots, avg, max, min }
uniqueDevicesTotal: number

Count of unique devices that have run this test in the given time period

TracerouteTestPercentilesResponse = object { hopsCount, packetLossPct, roundTripTimeMs }
hopsCount: optional Percentiles { p50, p90, p95, p99 }
packetLossPct: optional Percentiles { p50, p90, p95, p99 }
roundTripTimeMs: optional Percentiles { p50, p90, p95, p99 }

DEXRules

Get DEX Rule
GET/accounts/{account_id}/dex/rules/{rule_id}
Delete a DEX Rule
DELETE/accounts/{account_id}/dex/rules/{rule_id}
Update a DEX Rule
PATCH/accounts/{account_id}/dex/rules/{rule_id}
Create a DEX Rule
POST/accounts/{account_id}/dex/rules
List DEX Rules
GET/accounts/{account_id}/dex/rules
ModelsExpand Collapse
RuleGetResponse = object { id, created_at, match, 4 more }
id: string

API Resource UUID tag.

maxLength36
created_at: string
match: string
name: string
description: optional string
targeted_tests: optional array of object { data, enabled, name, test_id }
data: object { host, kind, method }

The configuration object which contains the details for the WARP client to conduct the test.

host: string

The desired endpoint to test.

kind: "http" or "traceroute"

The type of test.

One of the following:
"http"
"traceroute"
method: optional "GET"

The HTTP request method type.

enabled: boolean
name: string
test_id: string
updated_at: optional string
RuleDeleteResponse = boolean
RuleUpdateResponse = object { id, created_at, match, 4 more }
id: string

API Resource UUID tag.

maxLength36
created_at: string
match: string
name: string
description: optional string
targeted_tests: optional array of object { data, enabled, name, test_id }
data: object { host, kind, method }

The configuration object which contains the details for the WARP client to conduct the test.

host: string

The desired endpoint to test.

kind: "http" or "traceroute"

The type of test.

One of the following:
"http"
"traceroute"
method: optional "GET"

The HTTP request method type.

enabled: boolean
name: string
test_id: string
updated_at: optional string
RuleCreateResponse = object { id, created_at, match, 4 more }
id: string

API Resource UUID tag.

maxLength36
created_at: string
match: string
name: string
description: optional string
targeted_tests: optional array of object { data, enabled, name, test_id }
data: object { host, kind, method }

The configuration object which contains the details for the WARP client to conduct the test.

host: string

The desired endpoint to test.

kind: "http" or "traceroute"

The type of test.

One of the following:
"http"
"traceroute"
method: optional "GET"

The HTTP request method type.

enabled: boolean
name: string
test_id: string
updated_at: optional string
RuleListResponse = object { rules }
rules: optional array of object { id, created_at, match, 4 more }
id: string

API Resource UUID tag.

maxLength36
created_at: string
match: string
name: string
description: optional string
targeted_tests: optional array of object { data, enabled, name, test_id }
data: object { host, kind, method }

The configuration object which contains the details for the WARP client to conduct the test.

host: string

The desired endpoint to test.

kind: "http" or "traceroute"

The type of test.

One of the following:
"http"
"traceroute"
method: optional "GET"

The HTTP request method type.

enabled: boolean
name: string
test_id: string
updated_at: optional string