Skip to content
Start here

Observability

ObservabilityTelemetry

List keys
client.workers.observability.telemetry.keys(TelemetryKeysParams { account_id, datasets, filters, 5 more } params, RequestOptionsoptions?): SinglePage<TelemetryKeysResponse { key, lastSeenAt, type } >
POST/accounts/{account_id}/workers/observability/telemetry/keys
Run a query
client.workers.observability.telemetry.query(TelemetryQueryParams { account_id, queryId, timeframe, 13 more } params, RequestOptionsoptions?): TelemetryQueryResponse { run, statistics, agents, 6 more }
POST/accounts/{account_id}/workers/observability/telemetry/query
List values
client.workers.observability.telemetry.values(TelemetryValuesParams { account_id, datasets, key, 5 more } params, RequestOptionsoptions?): SinglePage<TelemetryValuesResponse { dataset, key, type, value } >
POST/accounts/{account_id}/workers/observability/telemetry/values
Prepare live tail
client.workers.observability.telemetry.liveTail(TelemetryLiveTailParams { account_id, filterCombination, filters, scriptId } params, RequestOptionsoptions?): TelemetryLiveTailResponse { wsUrl }
POST/accounts/{account_id}/workers/observability/telemetry/live-tail
Live tail heartbeat
client.workers.observability.telemetry.liveTailHeartbeat(TelemetryLiveTailHeartbeatParams { account_id, scriptId } params, RequestOptionsoptions?): TelemetryLiveTailHeartbeatResponse
POST/accounts/{account_id}/workers/observability/telemetry/live-tail/heartbeat
ModelsExpand Collapse
TelemetryKeysResponse { key, lastSeenAt, type }
key: string
lastSeenAt: number
type: "string" | "boolean" | "number"
One of the following:
"string"
"boolean"
"number"
TelemetryQueryResponse { run, statistics, agents, 6 more }

Complete results of a query run. The populated fields depend on the requested view type (events, calculations, invocations, traces, or agents).

run: Run { id, accountId, dry, 8 more }

Represents a single execution of a query against Workers Observability data, including the query definition, execution status, and performance statistics.

id: string

Unique identifier for this query run.

accountId: string

Cloudflare account ID that owns this query run.

dry: boolean

Whether this was a dry run (results not persisted).

granularity: number

Number of time-series buckets used for the query. Higher values produce more detailed series data.

query: Query { id, adhoc, created, 6 more }

A saved query definition with its parameters, metadata, and ownership information.

id: string
adhoc: boolean

If the query wasn’t explcitly saved

created: string | (string & {})
formatdate-time
One of the following:
string
(string & {})
createdBy: string
description: string | null
maxLength1000
name: string

Query name

maxLength250
minLength1
parameters: Parameters { calculations, datasets, filterCombination, 6 more }
calculations?: Array<UnionMember0 { operator, alias, key, keyType } | UnionMember1 { key, operator, alias, keyType } >

Create Calculations to compute as part of the query.

One of the following:
UnionMember0 { operator, alias, key, keyType }
operator: "count" | "COUNT"
One of the following:
"count"
"COUNT"
alias?: string
key?: string
keyType?: "string" | "number" | "boolean"
One of the following:
"string"
"number"
"boolean"
UnionMember1 { key, operator, alias, keyType }
key: string
operator: "uniq" | "max" | "min" | 33 more
One of the following:
"uniq"
"max"
"min"
"sum"
"avg"
"median"
"p001"
"p01"
"p05"
"p10"
"p25"
"p75"
"p90"
"p95"
"p99"
"p999"
"stddev"
"variance"
"COUNT_DISTINCT"
"MAX"
"MIN"
"SUM"
"AVG"
"MEDIAN"
"P001"
"P01"
"P05"
"P10"
"P25"
"P75"
"P90"
"P95"
"P99"
"P999"
"STDDEV"
"VARIANCE"
alias?: string
keyType?: "string" | "number" | "boolean"
One of the following:
"string"
"number"
"boolean"
datasets?: Array<string>

Set the Datasets to query. Leave it empty to query all the datasets.

filterCombination?: "and" | "or" | "AND" | "OR"

Set a Flag to describe how to combine the filters on the query.

One of the following:
"and"
"or"
"AND"
"OR"
filters?: Array<UnionMember0 { filterCombination, filters, kind } | WorkersObservabilityFilterLeaf { key, operation, type, 2 more } >

Configure the Filters to apply to the query. Supports nested groups via kind: ‘group’.

One of the following:
UnionMember0 { filterCombination, filters, kind }
filterCombination: "and" | "or" | "AND" | "OR"
One of the following:
"and"
"or"
"AND"
"OR"
filters: Array<unknown>
kind: "group"
WorkersObservabilityFilterLeaf { key, operation, type, 2 more }

A filter condition applied to query results. Use the keys and values endpoints to discover available fields and their values before constructing filters.

key: string

Filter field name. Use verified keys from previous query results or the keys endpoint. Common keys include $metadata.service, $metadata.origin, $metadata.trigger, $metadata.message, and $metadata.error.

operation: "includes" | "not_includes" | "starts_with" | 27 more

Comparison operator. String operators: includes, not_includes, starts_with, ends_with, regex. Existence: exists, is_null. Set membership: in, not_in (comma-separated values). Numeric: eq, neq, gt, gte, lt, lte.

One of the following:
"includes"
"not_includes"
"starts_with"
"ends_with"
"regex"
"exists"
"is_null"
"in"
"not_in"
"eq"
"neq"
"gt"
"gte"
"lt"
"lte"
"="
"!="
">"
">="
"<"
"<="
"INCLUDES"
"DOES_NOT_INCLUDE"
"MATCH_REGEX"
"EXISTS"
"DOES_NOT_EXIST"
"IN"
"NOT_IN"
"STARTS_WITH"
"ENDS_WITH"
type: "string" | "number" | "boolean"

Data type of the filter field. Must match the actual type of the key being filtered.

One of the following:
"string"
"number"
"boolean"
kind?: "filter"

Discriminator for leaf filter nodes. Always ‘filter’ when present; may be omitted.

value?: string | number | boolean

Comparison value. Must match actual values in your data — verify with the values endpoint. Ensure the value type (string/number/boolean) matches the field type. String comparisons are case-sensitive. Regex uses RE2 syntax (no lookaheads/lookbehinds).

One of the following:
string
number
boolean
groupBys?: Array<GroupBy>

Define how to group the results of the query.

type: "string" | "number" | "boolean"
One of the following:
"string"
"number"
"boolean"
value: string
havings?: Array<Having>

Configure the Having clauses that filter on calculations in the query result.

key: string
operation: "eq" | "neq" | "gt" | 3 more
One of the following:
"eq"
"neq"
"gt"
"gte"
"lt"
"lte"
value: number
limit?: number

Set a limit on the number of results / records returned by the query

maximum100
minimum0
needle?: Needle { value, isRegex, matchCase }

Define an expression to search using full-text search.

value: Value
isRegex?: boolean
matchCase?: boolean
orderBy?: OrderBy { value, order }

Configure the order of the results returned by the query.

value: string

Configure which Calculation to order the results by.

order?: "asc" | "desc"

Set the order of the results

One of the following:
"asc"
"desc"
updated: string | (string & {})
formatdate-time
One of the following:
string
(string & {})
updatedBy: string
status: "STARTED" | "COMPLETED"

Current execution status of the query run.

One of the following:
"STARTED"
"COMPLETED"
timeframe: Timeframe { from, to }

Time range for the query execution. ‘from’ must be earlier than ‘to’. No fractional milliseconds.

from: number

Start timestamp for the query timeframe. Unix timestamp in milliseconds

maximum253402300799999
minimum0
to: number

End timestamp for the query timeframe. Unix timestamp in milliseconds

maximum253402300799999
minimum0
userId: string

ID of the user who initiated the query run.

created?: string

ISO-8601 timestamp when the query run was created.

statistics?: Statistics { bytes_read, elapsed, rows_read, abr_level }

Query performance statistics from the database (does not include network latency).

bytes_read: number

Number of uncompressed bytes read from the table.

elapsed: number

Time in seconds for the query to run.

rows_read: number

Number of rows scanned from the table.

abr_level?: number

The level of Adaptive Bit Rate (ABR) sampling used for the query. If empty the ABR level is 1

updated?: string

ISO-8601 timestamp when the query run was last updated.

statistics: Statistics { bytes_read, elapsed, rows_read, abr_level }

Query performance statistics from the database. Includes execution time, rows scanned, and bytes read. Does not include network latency.

bytes_read: number

Number of uncompressed bytes read from the table.

elapsed: number

Time in seconds for the query to run.

rows_read: number

Number of rows scanned from the table.

abr_level?: number

The level of Adaptive Bit Rate (ABR) sampling used for the query. If empty the ABR level is 1

agents?: Array<Agent>

Agent run summaries. Present when the query view is ‘agents’. Each entry represents one trace containing at least one agent invocation.

id: string

Stable pagination cursor for this agent run.

errors: Array<string>

Distinct errors reported by spans in the run.

models: Array<string>

Distinct models reported by chat spans across the run’s trace.

providers: Array<string>

Distinct GenAI providers reported by chat spans in the run.

services: Array<string>

Worker services represented in the run’s trace.

spans: number

Number of spans in the run’s trace.

status: "completed" | "error"

Observed run status.

One of the following:
"completed"
"error"
traceDurationMs: number

Total trace duration in milliseconds.

traceEndMs: number

End of the run’s trace as a Unix epoch in milliseconds.

traceId: string

Trace identifier for this agent run.

traceStartMs: number

Start of the run’s trace as a Unix epoch in milliseconds.

agentId?: string

ID from the earliest agent invocation that provides one.

agentName?: string

Name from the earliest agent invocation that provides one.

conversationId?: string

Conversation ID from the earliest invocation that provides one.

inputTokens?: number

Input tokens summed across chat spans in the run’s trace; informational, not billing data.

outputTokens?: number

Output tokens summed across chat spans in the run’s trace; informational, not billing data.

calculations?: Array<Calculation>

Aggregated calculation results. Present when the query view is ‘calculations’. Contains computed metrics (count, avg, p99, etc.) with optional group-by breakdowns and time-series data.

aggregates: Array<Aggregate>
count: number

Estimated number of matching events: the sum of the sample intervals of the stored events. It equals the number of stored events when sampleInterval is 1.

Deprecatedinterval: number

Deprecated alias of sampleInterval. Always has the same value; use sampleInterval instead.

sampleInterval: number

Average sample interval of the matched events. Each stored event has a sample interval of 1 / (the sampling rate applied when it was ingested): the Worker’s head_sampling_rate multiplied by any platform sampling applied to the account or script. A value of 1 means none of the matched events were sampled. A value above 1 means count and value are estimated from sampled data, not exact. This is independent of statistics.abr_level.

value: number

Result of the calculation. count, sum, avg, median, and percentiles are weighted by each event’s sample interval

groups?: Array<Group>
key: string
value: string | number | boolean
One of the following:
string
number
boolean
calculation: string
series: Array<Series>
data: Array<Data>
count: number

Estimated number of matching events: the sum of the sample intervals of the stored events. It equals the number of stored events when sampleInterval is 1.

Deprecatedinterval: number

Deprecated alias of sampleInterval. Always has the same value; use sampleInterval instead.

sampleInterval: number

Average sample interval of the matched events. Each stored event has a sample interval of 1 / (the sampling rate applied when it was ingested): the Worker’s head_sampling_rate multiplied by any platform sampling applied to the account or script. A value of 1 means none of the matched events were sampled. A value above 1 means count and value are estimated from sampled data, not exact. This is independent of statistics.abr_level.

value: number

Result of the calculation. count, sum, avg, median, and percentiles are weighted by each event’s sample interval

firstSeen?: string
groups?: Array<Group>
key: string
value: string | number | boolean
One of the following:
string
number
boolean
lastSeen?: string
time: string
alias?: string
compare?: Array<Compare>

Comparison calculation results from the previous time period. Present when the compare option is enabled. Same structure as calculations.

aggregates: Array<Aggregate>
count: number

Estimated number of matching events: the sum of the sample intervals of the stored events. It equals the number of stored events when sampleInterval is 1.

Deprecatedinterval: number

Deprecated alias of sampleInterval. Always has the same value; use sampleInterval instead.

sampleInterval: number

Average sample interval of the matched events. Each stored event has a sample interval of 1 / (the sampling rate applied when it was ingested): the Worker’s head_sampling_rate multiplied by any platform sampling applied to the account or script. A value of 1 means none of the matched events were sampled. A value above 1 means count and value are estimated from sampled data, not exact. This is independent of statistics.abr_level.

value: number

Result of the calculation. count, sum, avg, median, and percentiles are weighted by each event’s sample interval

groups?: Array<Group>
key: string
value: string | number | boolean
One of the following:
string
number
boolean
calculation: string
series: Array<Series>
data: Array<Data>
count: number

Estimated number of matching events: the sum of the sample intervals of the stored events. It equals the number of stored events when sampleInterval is 1.

Deprecatedinterval: number

Deprecated alias of sampleInterval. Always has the same value; use sampleInterval instead.

sampleInterval: number

Average sample interval of the matched events. Each stored event has a sample interval of 1 / (the sampling rate applied when it was ingested): the Worker’s head_sampling_rate multiplied by any platform sampling applied to the account or script. A value of 1 means none of the matched events were sampled. A value above 1 means count and value are estimated from sampled data, not exact. This is independent of statistics.abr_level.

value: number

Result of the calculation. count, sum, avg, median, and percentiles are weighted by each event’s sample interval

firstSeen?: string
groups?: Array<Group>
key: string
value: string | number | boolean
One of the following:
string
number
boolean
lastSeen?: string
time: string
alias?: string
distribution?: Distribution { bins, bucketBoundaries, bucketMode, 2 more }

Bucketed 2D histogram of a numeric field over time. Present when chartType is ‘distribution’.

bins: Array<string>

Time-bucket labels (ISO-8601 strings), one per matrix column.

bucketBoundaries: Array<number>

Raw bucket edges in the value’s native unit, length buckets.length + 1. Used for the colour scale and percentile mapping.

bucketMode: "log" | "linear"

Bucketing scheme used to derive the boundaries. ‘log’ produces geometric edges; ‘linear’ produces fixed-width edges.

One of the following:
"log"
"linear"
buckets: Array<string>

Value-range labels, one per matrix row (e.g. ‘50–100ms’).

matrix: Array<Array<number>>

Sampling-corrected counts. matrix[bucketIdx][binIdx] is the estimated number of events in value-bucket ‘bucketIdx’ during time-bin ‘binIdx’.

events?: Events { count, events, fields, series }

Individual event results. Present when the query view is ‘events’. Contains the matching log lines and their metadata.

count?: number

Total number of events matching the query (may exceed the number returned due to limits).

events?: Array<Event>

List of individual telemetry events matching the query.

"$metadata": Metadata { id, account, cloudService, 35 more }

Structured metadata extracted from the event. These fields are indexed and available for filtering and aggregation.

id: string

Unique event ID. Use as the cursor value for offset-based pagination.

account?: string

Cloudflare account identifier.

cloudService?: string

Cloudflare product that generated this event (e.g. workers, pages).

coldStart?: number
exclusiveMinimum
minimum0
cost?: number

Estimated cost units for this invocation.

exclusiveMinimum
minimum0
duration?: number

Span duration in milliseconds.

exclusiveMinimum
minimum0
endTime?: number

Span end time as a Unix epoch in milliseconds.

minimum0
endTimeNs?: string

Span end time as a Unix epoch in nanoseconds.

error?: string

Error message, present when the log represents an error.

errorTemplate?: string

Templatized version of the error message used for grouping similar errors.

eventSize?: number

Size of the stored telemetry event in bytes.

minimum0
fingerprint?: string

Content-based fingerprint used to group similar events.

level?: string

Log level (e.g. log, debug, info, warn, error).

message?: string

Log message text.

messageTemplate?: string

Templatized version of the log message used for grouping similar messages.

metricName?: string

Metric name when the event represents a metric data point.

origin?: string

Origin of the event (e.g. fetch, scheduled, queue).

parentSpanId?: string

Span ID of the parent span in the trace hierarchy.

provider?: string

Infrastructure provider identifier.

rayId?: string

Cloudflare Ray ID from the cf-ray header of the request that triggered the invocation.

region?: string

Cloudflare data center / region that handled the request.

requestId?: string

Cloudflare request ID that ties all logs from a single invocation together.

service?: string

Worker script name that produced this event.

spanId?: string

Span ID for this individual unit of work within a trace.

spanName?: string

Human-readable name for this span.

spanStatus?: "unset" | "ok" | "error"

OpenTelemetry span status. Present only on spans. unset when the span did not set a status, including spans recorded before status was captured.

One of the following:
"unset"
"ok"
"error"
spanStatusMessage?: string

OpenTelemetry span status message. Present only on spans when the status is error and a message was set.

stackId?: string

Stack / deployment identifier.

startTime?: number

Span start time as a Unix epoch in milliseconds.

minimum0
startTimeNs?: string

Span start time as a Unix epoch in nanoseconds.

statusCode?: number

HTTP response status code returned by the Worker.

exclusiveMinimum
minimum0
timestampNs?: string

Event time as a Unix epoch in nanoseconds.

traceDuration?: number

Total duration of the entire trace in milliseconds.

exclusiveMinimum
minimum0
traceId?: string

Distributed trace ID linking spans across services.

transactionName?: string

Logical transaction name for this request.

trigger?: string

What triggered the invocation (e.g. GET /users, POST /orders, queue message).

type?: string

Event type classifier (e.g. cf-worker-event, cf-worker-log).

url?: string

Request URL that triggered the Worker invocation.

dataset: string

The dataset this event belongs to (e.g. cloudflare-workers).

source: string | Record<string, unknown>

Raw log payload. May be a string or a structured object depending on how the log was emitted.

One of the following:
string
Record<string, unknown>
timestamp: number

Event timestamp as a Unix epoch in milliseconds.

minimum0
"$containers"?: Record<string, unknown>

Cloudflare Containers event information that enriches your logs for identifying and debugging issues.

"$workers"?: UnionMember0 { eventType, scriptName, durableObjectId, 11 more } | UnionMember1 { cpuTimeMs, eventType, outcome, 15 more }

Cloudflare Workers event information that enriches your logs for identifying and debugging issues.

One of the following:
UnionMember0 { eventType, scriptName, durableObjectId, 11 more }
eventType: "fetch" | "scheduled" | "alarm" | 9 more
One of the following:
"fetch"
"scheduled"
"alarm"
"cron"
"queue"
"email"
"tail"
"rpc"
"jsrpc"
"websocket"
"workflow"
"unknown"
scriptName: string
durableObjectId?: string
entrypoint?: string
event?: Record<string, unknown>
executionModel?: "durableObject" | "stateless"
One of the following:
"durableObject"
"stateless"
gateway?: Gateway { requestId }
requestId: string
outcome?: string
preview?: Preview { id, name, slug }
id?: string
name?: string
slug?: string
requestId?: string
scriptVersion?: ScriptVersion { id, message, tag }
id?: string
message?: string
tag?: string
spanId?: string
traceId?: string
truncated?: boolean
UnionMember1 { cpuTimeMs, eventType, outcome, 15 more }
cpuTimeMs: number
eventType: "fetch" | "scheduled" | "alarm" | 9 more
One of the following:
"fetch"
"scheduled"
"alarm"
"cron"
"queue"
"email"
"tail"
"rpc"
"jsrpc"
"websocket"
"workflow"
"unknown"
outcome: string
scriptName: string
wallTimeMs: number
diagnosticsChannelEvents?: Array<DiagnosticsChannelEvent>
channel: string
message: string
timestamp: number
dispatchNamespace?: string
durableObjectId?: string
entrypoint?: string
event?: Record<string, unknown>
executionModel?: "durableObject" | "stateless"
One of the following:
"durableObject"
"stateless"
gateway?: Gateway { requestId }
requestId: string
preview?: Preview { id, name, slug }
id?: string
name?: string
slug?: string
requestId?: string
scriptVersion?: ScriptVersion { id, message, tag }
id?: string
message?: string
tag?: string
spanId?: string
traceId?: string
truncated?: boolean
fields?: Array<Field>

List of fields discovered in the matched events. Useful for building dynamic UIs.

key: string

Field name present in the matched events.

type: string

Data type of the field (string, number, or boolean).

series?: Array<Series>

Time-series data for the matched events, bucketed by the query granularity.

data: Array<Data>
aggregates: Aggregates { _count, _interval, _firstSeen, 2 more }
Deprecated_count: number
exclusiveMinimum
minimum0
Deprecated_interval: number
exclusiveMinimum
minimum0
Deprecated_firstSeen?: string
Deprecated_lastSeen?: string
Deprecatedbin?: unknown
count: number

Estimated number of matching events: the sum of the sample intervals of the stored events. It equals the number of stored events when sampleInterval is 1.

Deprecatedinterval: number

Deprecated alias of sampleInterval. Always has the same value; use sampleInterval instead.

sampleInterval: number

Average sample interval of the matched events. Each stored event has a sample interval of 1 / (the sampling rate applied when it was ingested): the Worker’s head_sampling_rate multiplied by any platform sampling applied to the account or script. A value of 1 means none of the matched events were sampled. A value above 1 means count and value are estimated from sampled data, not exact. This is independent of statistics.abr_level.

errors?: number
groups?: Record<string, string | number | boolean>

Groups in the query results.

One of the following:
string
number
boolean
time: string
invocations?: Record<string, Array<Invocation>>

Events grouped by invocation (request ID). Present when the query view is ‘invocations’. Each key is a request ID mapping to all events from that invocation.

"$metadata": Metadata { id, account, cloudService, 35 more }

Structured metadata extracted from the event. These fields are indexed and available for filtering and aggregation.

id: string

Unique event ID. Use as the cursor value for offset-based pagination.

account?: string

Cloudflare account identifier.

cloudService?: string

Cloudflare product that generated this event (e.g. workers, pages).

coldStart?: number
exclusiveMinimum
minimum0
cost?: number

Estimated cost units for this invocation.

exclusiveMinimum
minimum0
duration?: number

Span duration in milliseconds.

exclusiveMinimum
minimum0
endTime?: number

Span end time as a Unix epoch in milliseconds.

minimum0
endTimeNs?: string

Span end time as a Unix epoch in nanoseconds.

error?: string

Error message, present when the log represents an error.

errorTemplate?: string

Templatized version of the error message used for grouping similar errors.

eventSize?: number

Size of the stored telemetry event in bytes.

minimum0
fingerprint?: string

Content-based fingerprint used to group similar events.

level?: string

Log level (e.g. log, debug, info, warn, error).

message?: string

Log message text.

messageTemplate?: string

Templatized version of the log message used for grouping similar messages.

metricName?: string

Metric name when the event represents a metric data point.

origin?: string

Origin of the event (e.g. fetch, scheduled, queue).

parentSpanId?: string

Span ID of the parent span in the trace hierarchy.

provider?: string

Infrastructure provider identifier.

rayId?: string

Cloudflare Ray ID from the cf-ray header of the request that triggered the invocation.

region?: string

Cloudflare data center / region that handled the request.

requestId?: string

Cloudflare request ID that ties all logs from a single invocation together.

service?: string

Worker script name that produced this event.

spanId?: string

Span ID for this individual unit of work within a trace.

spanName?: string

Human-readable name for this span.

spanStatus?: "unset" | "ok" | "error"

OpenTelemetry span status. Present only on spans. unset when the span did not set a status, including spans recorded before status was captured.

One of the following:
"unset"
"ok"
"error"
spanStatusMessage?: string

OpenTelemetry span status message. Present only on spans when the status is error and a message was set.

stackId?: string

Stack / deployment identifier.

startTime?: number

Span start time as a Unix epoch in milliseconds.

minimum0
startTimeNs?: string

Span start time as a Unix epoch in nanoseconds.

statusCode?: number

HTTP response status code returned by the Worker.

exclusiveMinimum
minimum0
timestampNs?: string

Event time as a Unix epoch in nanoseconds.

traceDuration?: number

Total duration of the entire trace in milliseconds.

exclusiveMinimum
minimum0
traceId?: string

Distributed trace ID linking spans across services.

transactionName?: string

Logical transaction name for this request.

trigger?: string

What triggered the invocation (e.g. GET /users, POST /orders, queue message).

type?: string

Event type classifier (e.g. cf-worker-event, cf-worker-log).

url?: string

Request URL that triggered the Worker invocation.

dataset: string

The dataset this event belongs to (e.g. cloudflare-workers).

source: string | Record<string, unknown>

Raw log payload. May be a string or a structured object depending on how the log was emitted.

One of the following:
string
Record<string, unknown>
timestamp: number

Event timestamp as a Unix epoch in milliseconds.

minimum0
"$containers"?: Record<string, unknown>

Cloudflare Containers event information that enriches your logs for identifying and debugging issues.

"$workers"?: UnionMember0 { eventType, scriptName, durableObjectId, 11 more } | UnionMember1 { cpuTimeMs, eventType, outcome, 15 more }

Cloudflare Workers event information that enriches your logs for identifying and debugging issues.

One of the following:
UnionMember0 { eventType, scriptName, durableObjectId, 11 more }
eventType: "fetch" | "scheduled" | "alarm" | 9 more
One of the following:
"fetch"
"scheduled"
"alarm"
"cron"
"queue"
"email"
"tail"
"rpc"
"jsrpc"
"websocket"
"workflow"
"unknown"
scriptName: string
durableObjectId?: string
entrypoint?: string
event?: Record<string, unknown>
executionModel?: "durableObject" | "stateless"
One of the following:
"durableObject"
"stateless"
gateway?: Gateway { requestId }
requestId: string
outcome?: string
preview?: Preview { id, name, slug }
id?: string
name?: string
slug?: string
requestId?: string
scriptVersion?: ScriptVersion { id, message, tag }
id?: string
message?: string
tag?: string
spanId?: string
traceId?: string
truncated?: boolean
UnionMember1 { cpuTimeMs, eventType, outcome, 15 more }
cpuTimeMs: number
eventType: "fetch" | "scheduled" | "alarm" | 9 more
One of the following:
"fetch"
"scheduled"
"alarm"
"cron"
"queue"
"email"
"tail"
"rpc"
"jsrpc"
"websocket"
"workflow"
"unknown"
outcome: string
scriptName: string
wallTimeMs: number
diagnosticsChannelEvents?: Array<DiagnosticsChannelEvent>
channel: string
message: string
timestamp: number
dispatchNamespace?: string
durableObjectId?: string
entrypoint?: string
event?: Record<string, unknown>
executionModel?: "durableObject" | "stateless"
One of the following:
"durableObject"
"stateless"
gateway?: Gateway { requestId }
requestId: string
preview?: Preview { id, name, slug }
id?: string
name?: string
slug?: string
requestId?: string
scriptVersion?: ScriptVersion { id, message, tag }
id?: string
message?: string
tag?: string
spanId?: string
traceId?: string
truncated?: boolean
traces?: Array<Trace>

Trace summaries matching the query. Present when the query view is ‘traces’. Each entry represents a distributed trace with its spans, duration, and services involved.

rootSpanName: string

Name of the root span that initiated the trace.

rootTransactionName: string

Logical transaction name for the root span.

service: Array<string>

List of Worker services involved in the trace.

spans: number

Total number of spans in the trace.

traceDurationMs: number

Total duration of the trace in milliseconds.

traceEndMs: number

Trace end time as a Unix epoch in milliseconds.

traceId: string

Unique identifier for the distributed trace.

traceStartMs: number

Trace start time as a Unix epoch in milliseconds.

errors?: Array<string>

Error messages encountered during the trace, if any.

TelemetryValuesResponse { dataset, key, type, value }
dataset: string
key: string
type: "string" | "boolean" | "number"
One of the following:
"string"
"boolean"
"number"
value: string | number | boolean
One of the following:
string
number
boolean
TelemetryLiveTailResponse { wsUrl }
wsUrl: string

WebSocket URL clients connect to in order to stream live tail events.

formaturi
TelemetryLiveTailHeartbeatResponse = unknown

ObservabilityAgents

ObservabilityAgentsTraces

List Agent Traces
client.workers.observability.agents.traces.list(TraceListParams { account_id, agent, cursor, 4 more } params, RequestOptionsoptions?): CursorPagination<TraceListResponse { agents, conversationIds, errorCount, 19 more } >
GET/accounts/{account_id}/workers/observability/agents/traces
Get an Agent Trace
client.workers.observability.agents.traces.get(stringtraceID, TraceGetParams { account_id, from, to } params, RequestOptionsoptions?): TraceGetResponse { agents, conversationIds, errorCount, 19 more }
GET/accounts/{account_id}/workers/observability/agents/traces/{traceId}
List Agent Trace events
client.workers.observability.agents.traces.events(stringtraceID, TraceEventsParams { account_id, cursor, from, 2 more } params, RequestOptionsoptions?): TraceEventsResponse { $metadata, dataset, source, 3 more }
GET/accounts/{account_id}/workers/observability/agents/traces/{traceId}/events
ModelsExpand Collapse
TraceListResponse { agents, conversationIds, errorCount, 19 more }
agents: Array<string>

Sorted distinct gen_ai.agent.name values of authorized Agent invocations in the Trace within the effective window. Includes every Agent in the Trace, not only those matching the agent filter.

conversationIds: Array<string>

Sorted distinct gen_ai.conversation.id values of authorized Agent invocations in the Trace within the effective window. Empty when none are recorded.

errorCount: number

Recorded spans with a nonempty error or ERROR status. Counts spans, not distinct messages or incidents.

minimum0
inputTokens: number | null

Input tokens reported by chat spans in the authorized Trace window; null when none report input usage. Informational, not billing data.

minimum0
lastActivityMs: number

Latest start of an authorized Agent invocation in the Trace within the effective window, as Unix epoch milliseconds. The Trace list is ordered by this value, newest first.

minimum0
llmCallCount: number

Recorded chat spans in the authorized Trace window.

minimum0
llmErrorCount: number

Recorded chat spans with a nonempty error or ERROR status.

minimum0
models: Array<string>

Sorted distinct response models, falling back to request models, from chat spans in the authorized Trace window.

outputTokens: number | null

Output tokens reported by chat spans in the authorized Trace window; null when none report output usage. Informational, not billing data.

minimum0
providers: Array<string>

Sorted distinct GenAI providers from chat spans in the authorized Trace window.

rootSpanName: string

Name of the root span that initiated the trace.

rootTransactionName: string

Logical transaction name for the root span.

services: Array<string>

Authorized Worker services represented in the trace.

spans: number

Total number of spans in the trace.

toolCallCount: number

Recorded execute_tool spans in the authorized Trace window. Custom-named approval spans are not counted.

minimum0
toolErrorCount: number

Recorded execute_tool spans with a nonempty error or ERROR status.

minimum0
totalTokens: number | null

Input plus output tokens; null if either direction is unreported. Does not add cache or reasoning breakdowns.

minimum0
traceDurationMs: number

Total duration of the trace in milliseconds.

traceEndMs: number

Trace end time as a Unix epoch in milliseconds.

traceId: string

Unique identifier for the distributed trace.

traceStartMs: number

Trace start time as a Unix epoch in milliseconds.

errors?: Array<string>

Error messages encountered during the trace, if any.

TraceGetResponse { agents, conversationIds, errorCount, 19 more }
agents: Array<string>

Sorted distinct gen_ai.agent.name values of authorized Agent invocations in the Trace within the effective window. Includes every Agent in the Trace, not only those matching the agent filter.

conversationIds: Array<string>

Sorted distinct gen_ai.conversation.id values of authorized Agent invocations in the Trace within the effective window. Empty when none are recorded.

errorCount: number

Recorded spans with a nonempty error or ERROR status. Counts spans, not distinct messages or incidents.

minimum0
inputTokens: number | null

Input tokens reported by chat spans in the authorized Trace window; null when none report input usage. Informational, not billing data.

minimum0
lastActivityMs: number

Latest start of an authorized Agent invocation in the Trace within the effective window, as Unix epoch milliseconds. The Trace list is ordered by this value, newest first.

minimum0
llmCallCount: number

Recorded chat spans in the authorized Trace window.

minimum0
llmErrorCount: number

Recorded chat spans with a nonempty error or ERROR status.

minimum0
models: Array<string>

Sorted distinct response models, falling back to request models, from chat spans in the authorized Trace window.

outputTokens: number | null

Output tokens reported by chat spans in the authorized Trace window; null when none report output usage. Informational, not billing data.

minimum0
providers: Array<string>

Sorted distinct GenAI providers from chat spans in the authorized Trace window.

rootSpanName: string

Name of the root span that initiated the trace.

rootTransactionName: string

Logical transaction name for the root span.

services: Array<string>

Authorized Worker services represented in the trace.

spans: number

Total number of spans in the trace.

toolCallCount: number

Recorded execute_tool spans in the authorized Trace window. Custom-named approval spans are not counted.

minimum0
toolErrorCount: number

Recorded execute_tool spans with a nonempty error or ERROR status.

minimum0
totalTokens: number | null

Input plus output tokens; null if either direction is unreported. Does not add cache or reasoning breakdowns.

minimum0
traceDurationMs: number

Total duration of the trace in milliseconds.

traceEndMs: number

Trace end time as a Unix epoch in milliseconds.

traceId: string

Unique identifier for the distributed trace.

traceStartMs: number

Trace start time as a Unix epoch in milliseconds.

errors?: Array<string>

Error messages encountered during the trace, if any.

TraceEventsResponse = Array<TraceEventsResponseItem>
"$metadata": Metadata { id, account, cloudService, 35 more }

Structured metadata extracted from the event. These fields are indexed and available for filtering and aggregation.

id: string

Unique event ID. Use as the cursor value for offset-based pagination.

account?: string

Cloudflare account identifier.

cloudService?: string

Cloudflare product that generated this event (e.g. workers, pages).

coldStart?: number
exclusiveMinimum
minimum0
cost?: number

Estimated cost units for this invocation.

exclusiveMinimum
minimum0
duration?: number

Span duration in milliseconds.

exclusiveMinimum
minimum0
endTime?: number

Span end time as a Unix epoch in milliseconds.

minimum0
endTimeNs?: string

Span end time as a Unix epoch in nanoseconds.

error?: string

Error message, present when the log represents an error.

errorTemplate?: string

Templatized version of the error message used for grouping similar errors.

eventSize?: number

Size of the stored telemetry event in bytes.

minimum0
fingerprint?: string

Content-based fingerprint used to group similar events.

level?: string

Log level (e.g. log, debug, info, warn, error).

message?: string

Log message text.

messageTemplate?: string

Templatized version of the log message used for grouping similar messages.

metricName?: string

Metric name when the event represents a metric data point.

origin?: string

Origin of the event (e.g. fetch, scheduled, queue).

parentSpanId?: string

Span ID of the parent span in the trace hierarchy.

provider?: string

Infrastructure provider identifier.

rayId?: string

Cloudflare Ray ID from the cf-ray header of the request that triggered the invocation.

region?: string

Cloudflare data center / region that handled the request.

requestId?: string

Cloudflare request ID that ties all logs from a single invocation together.

service?: string

Worker script name that produced this event.

spanId?: string

Span ID for this individual unit of work within a trace.

spanName?: string

Human-readable name for this span.

spanStatus?: "unset" | "ok" | "error"

OpenTelemetry span status. Present only on spans. unset when the span did not set a status, including spans recorded before status was captured.

One of the following:
"unset"
"ok"
"error"
spanStatusMessage?: string

OpenTelemetry span status message. Present only on spans when the status is error and a message was set.

stackId?: string

Stack / deployment identifier.

startTime?: number

Span start time as a Unix epoch in milliseconds.

minimum0
startTimeNs?: string

Span start time as a Unix epoch in nanoseconds.

statusCode?: number

HTTP response status code returned by the Worker.

exclusiveMinimum
minimum0
timestampNs?: string

Event time as a Unix epoch in nanoseconds.

traceDuration?: number

Total duration of the entire trace in milliseconds.

exclusiveMinimum
minimum0
traceId?: string

Distributed trace ID linking spans across services.

transactionName?: string

Logical transaction name for this request.

trigger?: string

What triggered the invocation (e.g. GET /users, POST /orders, queue message).

type?: string

Event type classifier (e.g. cf-worker-event, cf-worker-log).

url?: string

Request URL that triggered the Worker invocation.

dataset: string

The dataset this event belongs to (e.g. cloudflare-workers).

source: string | Record<string, unknown>

Raw log payload. May be a string or a structured object depending on how the log was emitted.

One of the following:
string
Record<string, unknown>
timestamp: number

Event timestamp as a Unix epoch in milliseconds.

minimum0
"$containers"?: Record<string, unknown>

Cloudflare Containers event information that enriches your logs for identifying and debugging issues.

"$workers"?: UnionMember0 { eventType, scriptName, durableObjectId, 11 more } | UnionMember1 { cpuTimeMs, eventType, outcome, 15 more }

Cloudflare Workers event information that enriches your logs for identifying and debugging issues.

One of the following:
UnionMember0 { eventType, scriptName, durableObjectId, 11 more }
eventType: "fetch" | "scheduled" | "alarm" | 9 more
One of the following:
"fetch"
"scheduled"
"alarm"
"cron"
"queue"
"email"
"tail"
"rpc"
"jsrpc"
"websocket"
"workflow"
"unknown"
scriptName: string
durableObjectId?: string
entrypoint?: string
event?: Record<string, unknown>
executionModel?: "durableObject" | "stateless"
One of the following:
"durableObject"
"stateless"
gateway?: Gateway { requestId }
requestId: string
outcome?: string
preview?: Preview { id, name, slug }
id?: string
name?: string
slug?: string
requestId?: string
scriptVersion?: ScriptVersion { id, message, tag }
id?: string
message?: string
tag?: string
spanId?: string
traceId?: string
truncated?: boolean
UnionMember1 { cpuTimeMs, eventType, outcome, 15 more }
cpuTimeMs: number
eventType: "fetch" | "scheduled" | "alarm" | 9 more
One of the following:
"fetch"
"scheduled"
"alarm"
"cron"
"queue"
"email"
"tail"
"rpc"
"jsrpc"
"websocket"
"workflow"
"unknown"
outcome: string
scriptName: string
wallTimeMs: number
diagnosticsChannelEvents?: Array<DiagnosticsChannelEvent>
channel: string
message: string
timestamp: number
dispatchNamespace?: string
durableObjectId?: string
entrypoint?: string
event?: Record<string, unknown>
executionModel?: "durableObject" | "stateless"
One of the following:
"durableObject"
"stateless"
gateway?: Gateway { requestId }
requestId: string
preview?: Preview { id, name, slug }
id?: string
name?: string
slug?: string
requestId?: string
scriptVersion?: ScriptVersion { id, message, tag }
id?: string
message?: string
tag?: string
spanId?: string
traceId?: string
truncated?: boolean

ObservabilityIssues

List detected issues
client.workers.observability.issues.list(IssueListParams { account_id, order, orderBy, 6 more } params, RequestOptionsoptions?): SinglePage<IssueListResponse { id, activity, count, 11 more } >
GET/accounts/{account_id}/workers/observability/issues
Get an issue
client.workers.observability.issues.get(stringissueID, IssueGetParams { account_id } params, RequestOptionsoptions?): IssueGetResponse { issue }
GET/accounts/{account_id}/workers/observability/issues/{issueId}
Modify an issue
client.workers.observability.issues.update(stringissueID, IssueUpdateParams { account_id, status, title } params, RequestOptionsoptions?): IssueUpdateResponse { id, count, created, 10 more }
PATCH/accounts/{account_id}/workers/observability/issues/{issueId}
Summarize detected issues
client.workers.observability.issues.summary(IssueSummaryParams { account_id, service } params, RequestOptionsoptions?): IssueSummaryResponse { activeIssues, activeOccurrences, lastIssue, resolvedIssues }
GET/accounts/{account_id}/workers/observability/issues/summary
Create an issue group
client.workers.observability.issues.group(IssueGroupParams { account_id, issueIds, title } params, RequestOptionsoptions?): IssueGroupResponse { id, count, created, 10 more }
POST/accounts/{account_id}/workers/observability/issues/groups
Dissolve an issue group
client.workers.observability.issues.ungroup(stringgroupID, IssueUngroupParams { account_id } params, RequestOptionsoptions?): IssueUngroupResponse { deleted }
DELETE/accounts/{account_id}/workers/observability/issues/groups/{groupId}
Add issue group members
client.workers.observability.issues.add(stringgroupID, IssueAddParams { account_id, issueIds } params, RequestOptionsoptions?): IssueAddResponse { id, count, created, 10 more }
POST/accounts/{account_id}/workers/observability/issues/groups/{groupId}/members
Remove an issue group member
client.workers.observability.issues.remove(stringissueID, IssueRemoveParams { account_id, groupId } params, RequestOptionsoptions?): IssueRemoveResponse { id, count, created, 10 more } | null
DELETE/accounts/{account_id}/workers/observability/issues/groups/{groupId}/members/{issueId}
Notify about an issue
client.workers.observability.issues.notify(stringissueID, IssueNotifyParams { account_id, policyId } params, RequestOptionsoptions?): IssueNotifyResponse { run }
POST/accounts/{account_id}/workers/observability/issues/{issueId}/notification-runs
List issue occurrences
client.workers.observability.issues.occurrences(stringissueID, IssueOccurrencesParams { account_id, cursor, per_page } params, RequestOptionsoptions?): IssueOccurrencesResponse { id, error, invocation, 5 more }
GET/accounts/{account_id}/workers/observability/issues/{issueId}/occurrences
ModelsExpand Collapse
IssueListResponse { id, activity, count, 11 more }
id: string
activity: Array<Activity>
id: string
created: number
inactivitySeconds: number | null
initiatedBy: "automatic" | "manual"
One of the following:
"automatic"
"manual"
issueCount: number
issueId: string
lastError: string | null
policyId: string
status: "pending" | "succeeded" | "failed"
One of the following:
"pending"
"succeeded"
"failed"
terminalAt: number | null
threshold: number | null
type: "notification"
automationId?: string
automationName?: string
automationRevision?: number
scope?: "account" | "service"
One of the following:
"account"
"service"
triggerType?: "occurrence_threshold" | "recurrence_after_inactivity"
One of the following:
"occurrence_threshold"
"recurrence_after_inactivity"
count: number
created: number
firstObserved: number
lastObserved: number
service: string
status: "active" | "resolved" | "ignored"
One of the following:
"active"
"resolved"
"ignored"
statusUpdated: number
title: string
updated: number
fingerprint?: string
members?: Array<Member>
fingerprint: string
issueId: string
title: string
type?: string
IssueGetResponse { issue }
issue: Issue { id, activity, count, 11 more }
id: string
activity: Array<Activity>
id: string
created: number
inactivitySeconds: number | null
initiatedBy: "automatic" | "manual"
One of the following:
"automatic"
"manual"
issueCount: number
issueId: string
lastError: string | null
policyId: string
status: "pending" | "succeeded" | "failed"
One of the following:
"pending"
"succeeded"
"failed"
terminalAt: number | null
threshold: number | null
type: "notification"
automationId?: string
automationName?: string
automationRevision?: number
scope?: "account" | "service"
One of the following:
"account"
"service"
triggerType?: "occurrence_threshold" | "recurrence_after_inactivity"
One of the following:
"occurrence_threshold"
"recurrence_after_inactivity"
count: number
created: number
firstObserved: number
lastObserved: number
service: string
status: "active" | "resolved" | "ignored"
One of the following:
"active"
"resolved"
"ignored"
statusUpdated: number
title: string
updated: number
fingerprint?: string
members?: Array<Member>
fingerprint: string
issueId: string
title: string
type?: string
IssueUpdateResponse { id, count, created, 10 more }
id: string
count: number
created: number
firstObserved: number
lastObserved: number
service: string
status: "active" | "resolved" | "ignored"
One of the following:
"active"
"resolved"
"ignored"
statusUpdated: number
title: string
updated: number
fingerprint?: string
members?: Array<Member>
fingerprint: string
issueId: string
title: string
type?: string
IssueSummaryResponse { activeIssues, activeOccurrences, lastIssue, resolvedIssues }
activeIssues: number
activeOccurrences: number
lastIssue: number | null
resolvedIssues: number
IssueGroupResponse { id, count, created, 10 more }
id: string
count: number
created: number
firstObserved: number
lastObserved: number
service: string
status: "active" | "resolved" | "ignored"
One of the following:
"active"
"resolved"
"ignored"
statusUpdated: number
title: string
updated: number
fingerprint?: string
members?: Array<Member>
fingerprint: string
issueId: string
title: string
type?: string
IssueUngroupResponse { deleted }
deleted: true
IssueAddResponse { id, count, created, 10 more }
id: string
count: number
created: number
firstObserved: number
lastObserved: number
service: string
status: "active" | "resolved" | "ignored"
One of the following:
"active"
"resolved"
"ignored"
statusUpdated: number
title: string
updated: number
fingerprint?: string
members?: Array<Member>
fingerprint: string
issueId: string
title: string
type?: string
IssueRemoveResponse { id, count, created, 10 more }
id: string
count: number
created: number
firstObserved: number
lastObserved: number
service: string
status: "active" | "resolved" | "ignored"
One of the following:
"active"
"resolved"
"ignored"
statusUpdated: number
title: string
updated: number
fingerprint?: string
members?: Array<Member>
fingerprint: string
issueId: string
title: string
type?: string
IssueNotifyResponse { run }
run: Run { id, created, inactivitySeconds, 13 more }
id: string
created: number
inactivitySeconds: number | null
initiatedBy: "automatic" | "manual"
One of the following:
"automatic"
"manual"
issueCount: number
issueId: string
lastError: string | null
policyId: string
status: "pending" | "succeeded" | "failed"
One of the following:
"pending"
"succeeded"
"failed"
terminalAt: number | null
threshold: number | null
automationId?: string
automationName?: string
automationRevision?: number
scope?: "account" | "service"
One of the following:
"account"
"service"
triggerType?: "occurrence_threshold" | "recurrence_after_inactivity"
One of the following:
"occurrence_threshold"
"recurrence_after_inactivity"
IssueOccurrencesResponse = Array<IssueOccurrencesResponseItem>
id: string

Unique occurrence ID.

error: Error { handled, mechanism, message, 3 more }
handled: boolean
mechanism: "structured-log" | "error-log" | "stack-log" | 3 more
One of the following:
"structured-log"
"error-log"
"stack-log"
"http-status"
"exception"
"outcome"
message: string
name: string
signature: string
stack?: string
invocation: Invocation { id, traceId, type, 16 more }
id: string

Worker invocation request ID.

traceId: string
type: string
batchSize?: number
cron?: string
jsrpcMethod?: string
mailFrom?: string
method?: string
path?: string
queue?: string
rawSize?: number
rayId?: string
rcptTo?: string
scheduledTime?: number
spanId?: string
statusCode?: number
minimum0
url?: string

Redacted request URL without query parameters.

websocketCloseCode?: number
websocketEvent?: string
timestamp: number

Occurrence timestamp as Unix epoch milliseconds.

trail: Array<UnionMember0 { level, message, timestamp, type } | UnionMember1 { name, ongoing, spanId, 3 more } >
One of the following:
UnionMember0 { level, message, timestamp, type }
level: string
message: string
timestamp: number
type: "log"
UnionMember1 { name, ongoing, spanId, 3 more }
name: string
ongoing: boolean
spanId: string
timestamp: number
type: "span"
parentSpanId?: string
worker: Worker { executionModel, scriptName, scriptTags, 3 more }
executionModel: string
scriptName: string
scriptTags: Array<string>
dispatchNamespace?: string
entrypoint?: string
scriptVersion?: ScriptVersion { id, tag }
id: string
tag?: string
context?: Context { account, session, user }
account?: string
session?: string
user?: string
request?: Request { headers }
headers: Record<string, string>

ObservabilityIssuesAutomations

List issue automations
client.workers.observability.issues.automations.list(AutomationListParams { account_id, service } params, RequestOptionsoptions?): AutomationListResponse { automations }
GET/accounts/{account_id}/workers/observability/issues/automations
Get an issue automation
client.workers.observability.issues.automations.get(stringautomationID, AutomationGetParams { account_id } params, RequestOptionsoptions?): AutomationGetResponse { automation }
GET/accounts/{account_id}/workers/observability/issues/automations/{automationId}
Create an issue automation
client.workers.observability.issues.automations.create(AutomationCreateParams { account_id, policyId, afterInactivitySeconds, 4 more } params, RequestOptionsoptions?): AutomationCreateResponse { automation }
POST/accounts/{account_id}/workers/observability/issues/automations
Update an issue automation
client.workers.observability.issues.automations.update(stringautomationID, AutomationUpdateParams { account_id, policyId, afterInactivitySeconds, 4 more } params, RequestOptionsoptions?): AutomationUpdateResponse { automation }
PUT/accounts/{account_id}/workers/observability/issues/automations/{automationId}
Delete an issue automation
client.workers.observability.issues.automations.delete(stringautomationID, AutomationDeleteParams { account_id } params, RequestOptionsoptions?): AutomationDeleteResponse { automation }
DELETE/accounts/{account_id}/workers/observability/issues/automations/{automationId}
ModelsExpand Collapse
AutomationListResponse { automations }
automations: Array<Automation>
id: string
ansPolicyId: string
created: number
createdByUserId: string | null
enabled: boolean
inactivitySeconds: number | null
name: string
revision: number
scope: "account" | "service"
One of the following:
"account"
"service"
service: string | null
serviceType: string | null
threshold: number | null
triggerType: "occurrence_threshold" | "recurrence_after_inactivity"
One of the following:
"occurrence_threshold"
"recurrence_after_inactivity"
updated: number
updatedByUserId: string | null
AutomationGetResponse { automation }
automation: Automation { id, ansPolicyId, created, 12 more }
id: string
ansPolicyId: string
created: number
createdByUserId: string | null
enabled: boolean
inactivitySeconds: number | null
name: string
revision: number
scope: "account" | "service"
One of the following:
"account"
"service"
service: string | null
serviceType: string | null
threshold: number | null
triggerType: "occurrence_threshold" | "recurrence_after_inactivity"
One of the following:
"occurrence_threshold"
"recurrence_after_inactivity"
updated: number
updatedByUserId: string | null
AutomationCreateResponse { automation }
automation: Automation { id, ansPolicyId, created, 12 more }
id: string
ansPolicyId: string
created: number
createdByUserId: string | null
enabled: boolean
inactivitySeconds: number | null
name: string
revision: number
scope: "account" | "service"
One of the following:
"account"
"service"
service: string | null
serviceType: string | null
threshold: number | null
triggerType: "occurrence_threshold" | "recurrence_after_inactivity"
One of the following:
"occurrence_threshold"
"recurrence_after_inactivity"
updated: number
updatedByUserId: string | null
AutomationUpdateResponse { automation }
automation: Automation { id, ansPolicyId, created, 12 more }
id: string
ansPolicyId: string
created: number
createdByUserId: string | null
enabled: boolean
inactivitySeconds: number | null
name: string
revision: number
scope: "account" | "service"
One of the following:
"account"
"service"
service: string | null
serviceType: string | null
threshold: number | null
triggerType: "occurrence_threshold" | "recurrence_after_inactivity"
One of the following:
"occurrence_threshold"
"recurrence_after_inactivity"
updated: number
updatedByUserId: string | null
AutomationDeleteResponse { automation }
automation: Automation { id, ansPolicyId, created, 12 more }
id: string
ansPolicyId: string
created: number
createdByUserId: string | null
enabled: boolean
inactivitySeconds: number | null
name: string
revision: number
scope: "account" | "service"
One of the following:
"account"
"service"
service: string | null
serviceType: string | null
threshold: number | null
triggerType: "occurrence_threshold" | "recurrence_after_inactivity"
One of the following:
"occurrence_threshold"
"recurrence_after_inactivity"
updated: number
updatedByUserId: string | null

ObservabilityDestinations

Get Destinations
client.workers.observability.destinations.list(DestinationListParams { account_id, order, orderBy, 2 more } params, RequestOptionsoptions?): SinglePage<DestinationListResponse { configuration, enabled, name, 2 more } >
GET/accounts/{account_id}/workers/observability/destinations
Create Destination
client.workers.observability.destinations.create(DestinationCreateParams { account_id, configuration, enabled, 2 more } params, RequestOptionsoptions?): DestinationCreateResponse { configuration, enabled, name, 2 more }
POST/accounts/{account_id}/workers/observability/destinations
Update Destination
client.workers.observability.destinations.update(stringslug, DestinationUpdateParams { account_id, enabled, configuration } params, RequestOptionsoptions?): DestinationUpdateResponse { configuration, enabled, name, 2 more }
PATCH/accounts/{account_id}/workers/observability/destinations/{slug}
Delete Destination
client.workers.observability.destinations.delete(stringslug, DestinationDeleteParams { account_id } params, RequestOptionsoptions?): DestinationDeleteResponse { configuration, enabled, name, 2 more }
DELETE/accounts/{account_id}/workers/observability/destinations/{slug}
ModelsExpand Collapse
DestinationListResponse { configuration, enabled, name, 2 more }
configuration: Configuration { headers, jobStatus, logpushDataset, 2 more }
headers: Record<string, string | null>
jobStatus: JobStatus { error_message, last_complete, last_error }
error_message: string
last_complete: string
last_error: string
logpushDataset: "opentelemetry-traces" | "opentelemetry-logs" | "opentelemetry-metrics"
One of the following:
"opentelemetry-traces"
"opentelemetry-logs"
"opentelemetry-metrics"
type: "logpush"
url: string
enabled: boolean
name: string
scripts: Array<string>
slug: string
DestinationCreateResponse { configuration, enabled, name, 2 more }
configuration: Configuration { headers, jobStatus, logpushDataset, 2 more }
headers: Record<string, string | null>
jobStatus: JobStatus { error_message, last_complete, last_error }
error_message: string
last_complete: string
last_error: string
logpushDataset: "opentelemetry-traces" | "opentelemetry-logs" | "opentelemetry-metrics"
One of the following:
"opentelemetry-traces"
"opentelemetry-logs"
"opentelemetry-metrics"
type: "logpush"
url: string
enabled: boolean
name: string
scripts: Array<string>
slug: string
DestinationUpdateResponse { configuration, enabled, name, 2 more }
configuration: Configuration { headers, jobStatus, logpushDataset, 2 more }
headers: Record<string, string | null>
jobStatus: JobStatus { error_message, last_complete, last_error }
error_message: string
last_complete: string
last_error: string
logpushDataset: "opentelemetry-traces" | "opentelemetry-logs" | "opentelemetry-metrics"
One of the following:
"opentelemetry-traces"
"opentelemetry-logs"
"opentelemetry-metrics"
type: "logpush"
url: string
enabled: boolean
name: string
scripts: Array<string>
slug: string
DestinationDeleteResponse { configuration, enabled, name, 2 more }
configuration: Configuration { headers, jobStatus, logpushDataset, 2 more }
headers: Record<string, string | null>
jobStatus: JobStatus { error_message, last_complete, last_error }
error_message: string
last_complete: string
last_error: string
logpushDataset: "opentelemetry-traces" | "opentelemetry-logs" | "opentelemetry-metrics"
One of the following:
"opentelemetry-traces"
"opentelemetry-logs"
"opentelemetry-metrics"
type: "logpush"
url: string
enabled: boolean
name: string
scripts: Array<string>
slug: string

ObservabilityQueries

Save query
client.workers.observability.queries.create(QueryCreateParams { account_id, description, name, parameters } params, RequestOptionsoptions?): QueryCreateResponse { id, adhoc, created, 6 more }
POST/accounts/{account_id}/workers/observability/queries
List queries
client.workers.observability.queries.list(QueryListParams { account_id, order, orderBy, 2 more } params, RequestOptionsoptions?): SinglePage<QueryListResponse { id, adhoc, created, 6 more } >
GET/accounts/{account_id}/workers/observability/queries
ModelsExpand Collapse
QueryCreateResponse { id, adhoc, created, 6 more }
id: string
adhoc: boolean

If the query wasn’t explcitly saved

created: string
formatdate-time
createdBy: string
description: string | null
maxLength1000
name: string

Query name

maxLength250
minLength1
parameters: Parameters { calculations, datasets, filterCombination, 6 more }
calculations?: Array<UnionMember0 { operator, alias, key, keyType } | UnionMember1 { key, operator, alias, keyType } >

Create Calculations to compute as part of the query.

One of the following:
UnionMember0 { operator, alias, key, keyType }
operator: "count" | "COUNT"
One of the following:
"count"
"COUNT"
alias?: string
key?: string
keyType?: "string" | "number" | "boolean"
One of the following:
"string"
"number"
"boolean"
UnionMember1 { key, operator, alias, keyType }
key: string
operator: "uniq" | "max" | "min" | 33 more
One of the following:
"uniq"
"max"
"min"
"sum"
"avg"
"median"
"p001"
"p01"
"p05"
"p10"
"p25"
"p75"
"p90"
"p95"
"p99"
"p999"
"stddev"
"variance"
"COUNT_DISTINCT"
"MAX"
"MIN"
"SUM"
"AVG"
"MEDIAN"
"P001"
"P01"
"P05"
"P10"
"P25"
"P75"
"P90"
"P95"
"P99"
"P999"
"STDDEV"
"VARIANCE"
alias?: string
keyType?: "string" | "number" | "boolean"
One of the following:
"string"
"number"
"boolean"
datasets?: Array<string>

Set the Datasets to query. Leave it empty to query all the datasets.

filterCombination?: "and" | "or" | "AND" | "OR"

Set a Flag to describe how to combine the filters on the query.

One of the following:
"and"
"or"
"AND"
"OR"
filters?: Array<UnionMember0 { filterCombination, filters, kind } | WorkersObservabilityFilterLeaf { key, operation, type, 2 more } >

Configure the Filters to apply to the query. Supports nested groups via kind: ‘group’.

One of the following:
UnionMember0 { filterCombination, filters, kind }
filterCombination: "and" | "or" | "AND" | "OR"
One of the following:
"and"
"or"
"AND"
"OR"
filters: Array<unknown>
kind: "group"
WorkersObservabilityFilterLeaf { key, operation, type, 2 more }

A filter condition applied to query results. Use the keys and values endpoints to discover available fields and their values before constructing filters.

key: string

Filter field name. Use verified keys from previous query results or the keys endpoint. Common keys include $metadata.service, $metadata.origin, $metadata.trigger, $metadata.message, and $metadata.error.

operation: "includes" | "not_includes" | "starts_with" | 27 more

Comparison operator. String operators: includes, not_includes, starts_with, ends_with, regex. Existence: exists, is_null. Set membership: in, not_in (comma-separated values). Numeric: eq, neq, gt, gte, lt, lte.

One of the following:
"includes"
"not_includes"
"starts_with"
"ends_with"
"regex"
"exists"
"is_null"
"in"
"not_in"
"eq"
"neq"
"gt"
"gte"
"lt"
"lte"
"="
"!="
">"
">="
"<"
"<="
"INCLUDES"
"DOES_NOT_INCLUDE"
"MATCH_REGEX"
"EXISTS"
"DOES_NOT_EXIST"
"IN"
"NOT_IN"
"STARTS_WITH"
"ENDS_WITH"
type: "string" | "number" | "boolean"

Data type of the filter field. Must match the actual type of the key being filtered.

One of the following:
"string"
"number"
"boolean"
kind?: "filter"

Discriminator for leaf filter nodes. Always ‘filter’ when present; may be omitted.

value?: string | number | boolean

Comparison value. Must match actual values in your data — verify with the values endpoint. Ensure the value type (string/number/boolean) matches the field type. String comparisons are case-sensitive. Regex uses RE2 syntax (no lookaheads/lookbehinds).

One of the following:
string
number
boolean
groupBys?: Array<GroupBy>

Define how to group the results of the query.

type: "string" | "number" | "boolean"
One of the following:
"string"
"number"
"boolean"
value: string
havings?: Array<Having>

Configure the Having clauses that filter on calculations in the query result.

key: string
operation: "eq" | "neq" | "gt" | 3 more
One of the following:
"eq"
"neq"
"gt"
"gte"
"lt"
"lte"
value: number
limit?: number

Set a limit on the number of results / records returned by the query

maximum100
minimum0
needle?: Needle { value, isRegex, matchCase }

Define an expression to search using full-text search.

value: string | number | boolean
maxLength1000
One of the following:
string
number
boolean
isRegex?: boolean
matchCase?: boolean
orderBy?: OrderBy { value, order }

Configure the order of the results returned by the query.

value: string

Configure which Calculation to order the results by.

order?: "asc" | "desc"

Set the order of the results

One of the following:
"asc"
"desc"
updated: string
formatdate-time
updatedBy: string
QueryListResponse { id, adhoc, created, 6 more }
id: string
adhoc: boolean

If the query wasn’t explcitly saved

created: string
formatdate-time
createdBy: string
description: string | null
maxLength1000
name: string

Query name

maxLength250
minLength1
parameters: Parameters { calculations, datasets, filterCombination, 6 more }
calculations?: Array<UnionMember0 { operator, alias, key, keyType } | UnionMember1 { key, operator, alias, keyType } >

Create Calculations to compute as part of the query.

One of the following:
UnionMember0 { operator, alias, key, keyType }
operator: "count" | "COUNT"
One of the following:
"count"
"COUNT"
alias?: string
key?: string
keyType?: "string" | "number" | "boolean"
One of the following:
"string"
"number"
"boolean"
UnionMember1 { key, operator, alias, keyType }
key: string
operator: "uniq" | "max" | "min" | 33 more
One of the following:
"uniq"
"max"
"min"
"sum"
"avg"
"median"
"p001"
"p01"
"p05"
"p10"
"p25"
"p75"
"p90"
"p95"
"p99"
"p999"
"stddev"
"variance"
"COUNT_DISTINCT"
"MAX"
"MIN"
"SUM"
"AVG"
"MEDIAN"
"P001"
"P01"
"P05"
"P10"
"P25"
"P75"
"P90"
"P95"
"P99"
"P999"
"STDDEV"
"VARIANCE"
alias?: string
keyType?: "string" | "number" | "boolean"
One of the following:
"string"
"number"
"boolean"
datasets?: Array<string>

Set the Datasets to query. Leave it empty to query all the datasets.

filterCombination?: "and" | "or" | "AND" | "OR"

Set a Flag to describe how to combine the filters on the query.

One of the following:
"and"
"or"
"AND"
"OR"
filters?: Array<UnionMember0 { filterCombination, filters, kind } | WorkersObservabilityFilterLeaf { key, operation, type, 2 more } >

Configure the Filters to apply to the query. Supports nested groups via kind: ‘group’.

One of the following:
UnionMember0 { filterCombination, filters, kind }
filterCombination: "and" | "or" | "AND" | "OR"
One of the following:
"and"
"or"
"AND"
"OR"
filters: Array<unknown>
kind: "group"
WorkersObservabilityFilterLeaf { key, operation, type, 2 more }

A filter condition applied to query results. Use the keys and values endpoints to discover available fields and their values before constructing filters.

key: string

Filter field name. Use verified keys from previous query results or the keys endpoint. Common keys include $metadata.service, $metadata.origin, $metadata.trigger, $metadata.message, and $metadata.error.

operation: "includes" | "not_includes" | "starts_with" | 27 more

Comparison operator. String operators: includes, not_includes, starts_with, ends_with, regex. Existence: exists, is_null. Set membership: in, not_in (comma-separated values). Numeric: eq, neq, gt, gte, lt, lte.

One of the following:
"includes"
"not_includes"
"starts_with"
"ends_with"
"regex"
"exists"
"is_null"
"in"
"not_in"
"eq"
"neq"
"gt"
"gte"
"lt"
"lte"
"="
"!="
">"
">="
"<"
"<="
"INCLUDES"
"DOES_NOT_INCLUDE"
"MATCH_REGEX"
"EXISTS"
"DOES_NOT_EXIST"
"IN"
"NOT_IN"
"STARTS_WITH"
"ENDS_WITH"
type: "string" | "number" | "boolean"

Data type of the filter field. Must match the actual type of the key being filtered.

One of the following:
"string"
"number"
"boolean"
kind?: "filter"

Discriminator for leaf filter nodes. Always ‘filter’ when present; may be omitted.

value?: string | number | boolean

Comparison value. Must match actual values in your data — verify with the values endpoint. Ensure the value type (string/number/boolean) matches the field type. String comparisons are case-sensitive. Regex uses RE2 syntax (no lookaheads/lookbehinds).

One of the following:
string
number
boolean
groupBys?: Array<GroupBy>

Define how to group the results of the query.

type: "string" | "number" | "boolean"
One of the following:
"string"
"number"
"boolean"
value: string
havings?: Array<Having>

Configure the Having clauses that filter on calculations in the query result.

key: string
operation: "eq" | "neq" | "gt" | 3 more
One of the following:
"eq"
"neq"
"gt"
"gte"
"lt"
"lte"
value: number
limit?: number

Set a limit on the number of results / records returned by the query

maximum100
minimum0
needle?: Needle { value, isRegex, matchCase }

Define an expression to search using full-text search.

value: string | number | boolean
maxLength1000
One of the following:
string
number
boolean
isRegex?: boolean
matchCase?: boolean
orderBy?: OrderBy { value, order }

Configure the order of the results returned by the query.

value: string

Configure which Calculation to order the results by.

order?: "asc" | "desc"

Set the order of the results

One of the following:
"asc"
"desc"
updated: string
formatdate-time
updatedBy: string

ObservabilityShared Queries

Create a sharable link to a query result
client.workers.observability.sharedQueries.create(SharedQueryCreateParams { account_id, queryId, timeframe, 13 more } params, RequestOptionsoptions?): SharedQueryCreateResponse { id }
POST/accounts/{account_id}/workers/observability/shared/query
View a query that has been shared
client.workers.observability.sharedQueries.get(stringid, SharedQueryGetParams { account_id, view } params, RequestOptionsoptions?): SharedQueryGetResponse { run, statistics, agents, 6 more }
GET/accounts/{account_id}/workers/observability/shared/query/{id}
ModelsExpand Collapse
SharedQueryCreateResponse { id }
id: string

Specify the ID of the shared query.

SharedQueryGetResponse { run, statistics, agents, 6 more }

Complete results of a query run. The populated fields depend on the requested view type (events, calculations, invocations, traces, or agents).

run: Run { id, accountId, dry, 8 more }

Represents a single execution of a query against Workers Observability data, including the query definition, execution status, and performance statistics.

id: string

Unique identifier for this query run.

accountId: string

Cloudflare account ID that owns this query run.

dry: boolean

Whether this was a dry run (results not persisted).

granularity: number

Number of time-series buckets used for the query. Higher values produce more detailed series data.

query: Query { id, adhoc, created, 6 more }

A saved query definition with its parameters, metadata, and ownership information.

id: string
adhoc: boolean

If the query wasn’t explcitly saved

created: string | (string & {})
formatdate-time
One of the following:
string
(string & {})
createdBy: string
description: string | null
maxLength1000
name: string

Query name

maxLength250
minLength1
parameters: Parameters { calculations, datasets, filterCombination, 6 more }
calculations?: Array<UnionMember0 { operator, alias, key, keyType } | UnionMember1 { key, operator, alias, keyType } >

Create Calculations to compute as part of the query.

One of the following:
UnionMember0 { operator, alias, key, keyType }
operator: "count" | "COUNT"
One of the following:
"count"
"COUNT"
alias?: string
key?: string
keyType?: "string" | "number" | "boolean"
One of the following:
"string"
"number"
"boolean"
UnionMember1 { key, operator, alias, keyType }
key: string
operator: "uniq" | "max" | "min" | 33 more
One of the following:
"uniq"
"max"
"min"
"sum"
"avg"
"median"
"p001"
"p01"
"p05"
"p10"
"p25"
"p75"
"p90"
"p95"
"p99"
"p999"
"stddev"
"variance"
"COUNT_DISTINCT"
"MAX"
"MIN"
"SUM"
"AVG"
"MEDIAN"
"P001"
"P01"
"P05"
"P10"
"P25"
"P75"
"P90"
"P95"
"P99"
"P999"
"STDDEV"
"VARIANCE"
alias?: string
keyType?: "string" | "number" | "boolean"
One of the following:
"string"
"number"
"boolean"
datasets?: Array<string>

Set the Datasets to query. Leave it empty to query all the datasets.

filterCombination?: "and" | "or" | "AND" | "OR"

Set a Flag to describe how to combine the filters on the query.

One of the following:
"and"
"or"
"AND"
"OR"
filters?: Array<UnionMember0 { filterCombination, filters, kind } | WorkersObservabilityFilterLeaf { key, operation, type, 2 more } >

Configure the Filters to apply to the query. Supports nested groups via kind: ‘group’.

One of the following:
UnionMember0 { filterCombination, filters, kind }
filterCombination: "and" | "or" | "AND" | "OR"
One of the following:
"and"
"or"
"AND"
"OR"
filters: Array<unknown>
kind: "group"
WorkersObservabilityFilterLeaf { key, operation, type, 2 more }

A filter condition applied to query results. Use the keys and values endpoints to discover available fields and their values before constructing filters.

key: string

Filter field name. Use verified keys from previous query results or the keys endpoint. Common keys include $metadata.service, $metadata.origin, $metadata.trigger, $metadata.message, and $metadata.error.

operation: "includes" | "not_includes" | "starts_with" | 27 more

Comparison operator. String operators: includes, not_includes, starts_with, ends_with, regex. Existence: exists, is_null. Set membership: in, not_in (comma-separated values). Numeric: eq, neq, gt, gte, lt, lte.

One of the following:
"includes"
"not_includes"
"starts_with"
"ends_with"
"regex"
"exists"
"is_null"
"in"
"not_in"
"eq"
"neq"
"gt"
"gte"
"lt"
"lte"
"="
"!="
">"
">="
"<"
"<="
"INCLUDES"
"DOES_NOT_INCLUDE"
"MATCH_REGEX"
"EXISTS"
"DOES_NOT_EXIST"
"IN"
"NOT_IN"
"STARTS_WITH"
"ENDS_WITH"
type: "string" | "number" | "boolean"

Data type of the filter field. Must match the actual type of the key being filtered.

One of the following:
"string"
"number"
"boolean"
kind?: "filter"

Discriminator for leaf filter nodes. Always ‘filter’ when present; may be omitted.

value?: string | number | boolean

Comparison value. Must match actual values in your data — verify with the values endpoint. Ensure the value type (string/number/boolean) matches the field type. String comparisons are case-sensitive. Regex uses RE2 syntax (no lookaheads/lookbehinds).

One of the following:
string
number
boolean
groupBys?: Array<GroupBy>

Define how to group the results of the query.

type: "string" | "number" | "boolean"
One of the following:
"string"
"number"
"boolean"
value: string
havings?: Array<Having>

Configure the Having clauses that filter on calculations in the query result.

key: string
operation: "eq" | "neq" | "gt" | 3 more
One of the following:
"eq"
"neq"
"gt"
"gte"
"lt"
"lte"
value: number
limit?: number

Set a limit on the number of results / records returned by the query

maximum100
minimum0
needle?: Needle { value, isRegex, matchCase }

Define an expression to search using full-text search.

value: Value
isRegex?: boolean
matchCase?: boolean
orderBy?: OrderBy { value, order }

Configure the order of the results returned by the query.

value: string

Configure which Calculation to order the results by.

order?: "asc" | "desc"

Set the order of the results

One of the following:
"asc"
"desc"
updated: string | (string & {})
formatdate-time
One of the following:
string
(string & {})
updatedBy: string
status: "STARTED" | "COMPLETED"

Current execution status of the query run.

One of the following:
"STARTED"
"COMPLETED"
timeframe: Timeframe { from, to }

Time range for the query execution. ‘from’ must be earlier than ‘to’. No fractional milliseconds.

from: number

Start timestamp for the query timeframe. Unix timestamp in milliseconds

maximum253402300799999
minimum0
to: number

End timestamp for the query timeframe. Unix timestamp in milliseconds

maximum253402300799999
minimum0
userId: string

ID of the user who initiated the query run.

created?: string

ISO-8601 timestamp when the query run was created.

statistics?: Statistics { bytes_read, elapsed, rows_read, abr_level }

Query performance statistics from the database (does not include network latency).

bytes_read: number

Number of uncompressed bytes read from the table.

elapsed: number

Time in seconds for the query to run.

rows_read: number

Number of rows scanned from the table.

abr_level?: number

The level of Adaptive Bit Rate (ABR) sampling used for the query. If empty the ABR level is 1

updated?: string

ISO-8601 timestamp when the query run was last updated.

statistics: Statistics { bytes_read, elapsed, rows_read, abr_level }

Query performance statistics from the database. Includes execution time, rows scanned, and bytes read. Does not include network latency.

bytes_read: number

Number of uncompressed bytes read from the table.

elapsed: number

Time in seconds for the query to run.

rows_read: number

Number of rows scanned from the table.

abr_level?: number

The level of Adaptive Bit Rate (ABR) sampling used for the query. If empty the ABR level is 1

agents?: Array<Agent>

Agent run summaries. Present when the query view is ‘agents’. Each entry represents one trace containing at least one agent invocation.

id: string

Stable pagination cursor for this agent run.

errors: Array<string>

Distinct errors reported by spans in the run.

models: Array<string>

Distinct models reported by chat spans across the run’s trace.

providers: Array<string>

Distinct GenAI providers reported by chat spans in the run.

services: Array<string>

Worker services represented in the run’s trace.

spans: number

Number of spans in the run’s trace.

status: "completed" | "error"

Observed run status.

One of the following:
"completed"
"error"
traceDurationMs: number

Total trace duration in milliseconds.

traceEndMs: number

End of the run’s trace as a Unix epoch in milliseconds.

traceId: string

Trace identifier for this agent run.

traceStartMs: number

Start of the run’s trace as a Unix epoch in milliseconds.

agentId?: string

ID from the earliest agent invocation that provides one.

agentName?: string

Name from the earliest agent invocation that provides one.

conversationId?: string

Conversation ID from the earliest invocation that provides one.

inputTokens?: number

Input tokens summed across chat spans in the run’s trace; informational, not billing data.

outputTokens?: number

Output tokens summed across chat spans in the run’s trace; informational, not billing data.

calculations?: Array<Calculation>

Aggregated calculation results. Present when the query view is ‘calculations’. Contains computed metrics (count, avg, p99, etc.) with optional group-by breakdowns and time-series data.

aggregates: Array<Aggregate>
count: number

Estimated number of matching events: the sum of the sample intervals of the stored events. It equals the number of stored events when sampleInterval is 1.

Deprecatedinterval: number

Deprecated alias of sampleInterval. Always has the same value; use sampleInterval instead.

sampleInterval: number

Average sample interval of the matched events. Each stored event has a sample interval of 1 / (the sampling rate applied when it was ingested): the Worker’s head_sampling_rate multiplied by any platform sampling applied to the account or script. A value of 1 means none of the matched events were sampled. A value above 1 means count and value are estimated from sampled data, not exact. This is independent of statistics.abr_level.

value: number

Result of the calculation. count, sum, avg, median, and percentiles are weighted by each event’s sample interval

groups?: Array<Group>
key: string
value: string | number | boolean
One of the following:
string
number
boolean
calculation: string
series: Array<Series>
data: Array<Data>
count: number

Estimated number of matching events: the sum of the sample intervals of the stored events. It equals the number of stored events when sampleInterval is 1.

Deprecatedinterval: number

Deprecated alias of sampleInterval. Always has the same value; use sampleInterval instead.

sampleInterval: number

Average sample interval of the matched events. Each stored event has a sample interval of 1 / (the sampling rate applied when it was ingested): the Worker’s head_sampling_rate multiplied by any platform sampling applied to the account or script. A value of 1 means none of the matched events were sampled. A value above 1 means count and value are estimated from sampled data, not exact. This is independent of statistics.abr_level.

value: number

Result of the calculation. count, sum, avg, median, and percentiles are weighted by each event’s sample interval

firstSeen?: string
groups?: Array<Group>
key: string
value: string | number | boolean
One of the following:
string
number
boolean
lastSeen?: string
time: string
alias?: string
compare?: Array<Compare>

Comparison calculation results from the previous time period. Present when the compare option is enabled. Same structure as calculations.

aggregates: Array<Aggregate>
count: number

Estimated number of matching events: the sum of the sample intervals of the stored events. It equals the number of stored events when sampleInterval is 1.

Deprecatedinterval: number

Deprecated alias of sampleInterval. Always has the same value; use sampleInterval instead.

sampleInterval: number

Average sample interval of the matched events. Each stored event has a sample interval of 1 / (the sampling rate applied when it was ingested): the Worker’s head_sampling_rate multiplied by any platform sampling applied to the account or script. A value of 1 means none of the matched events were sampled. A value above 1 means count and value are estimated from sampled data, not exact. This is independent of statistics.abr_level.

value: number

Result of the calculation. count, sum, avg, median, and percentiles are weighted by each event’s sample interval

groups?: Array<Group>
key: string
value: string | number | boolean
One of the following:
string
number
boolean
calculation: string
series: Array<Series>
data: Array<Data>
count: number

Estimated number of matching events: the sum of the sample intervals of the stored events. It equals the number of stored events when sampleInterval is 1.

Deprecatedinterval: number

Deprecated alias of sampleInterval. Always has the same value; use sampleInterval instead.

sampleInterval: number

Average sample interval of the matched events. Each stored event has a sample interval of 1 / (the sampling rate applied when it was ingested): the Worker’s head_sampling_rate multiplied by any platform sampling applied to the account or script. A value of 1 means none of the matched events were sampled. A value above 1 means count and value are estimated from sampled data, not exact. This is independent of statistics.abr_level.

value: number

Result of the calculation. count, sum, avg, median, and percentiles are weighted by each event’s sample interval

firstSeen?: string
groups?: Array<Group>
key: string
value: string | number | boolean
One of the following:
string
number
boolean
lastSeen?: string
time: string
alias?: string
distribution?: Distribution { bins, bucketBoundaries, bucketMode, 2 more }

Bucketed 2D histogram of a numeric field over time. Present when chartType is ‘distribution’.

bins: Array<string>

Time-bucket labels (ISO-8601 strings), one per matrix column.

bucketBoundaries: Array<number>

Raw bucket edges in the value’s native unit, length buckets.length + 1. Used for the colour scale and percentile mapping.

bucketMode: "log" | "linear"

Bucketing scheme used to derive the boundaries. ‘log’ produces geometric edges; ‘linear’ produces fixed-width edges.

One of the following:
"log"
"linear"
buckets: Array<string>

Value-range labels, one per matrix row (e.g. ‘50–100ms’).

matrix: Array<Array<number>>

Sampling-corrected counts. matrix[bucketIdx][binIdx] is the estimated number of events in value-bucket ‘bucketIdx’ during time-bin ‘binIdx’.

events?: Events { count, events, fields, series }

Individual event results. Present when the query view is ‘events’. Contains the matching log lines and their metadata.

count?: number

Total number of events matching the query (may exceed the number returned due to limits).

events?: Array<Event>

List of individual telemetry events matching the query.

"$metadata": Metadata { id, account, cloudService, 35 more }

Structured metadata extracted from the event. These fields are indexed and available for filtering and aggregation.

id: string

Unique event ID. Use as the cursor value for offset-based pagination.

account?: string

Cloudflare account identifier.

cloudService?: string

Cloudflare product that generated this event (e.g. workers, pages).

coldStart?: number
exclusiveMinimum
minimum0
cost?: number

Estimated cost units for this invocation.

exclusiveMinimum
minimum0
duration?: number

Span duration in milliseconds.

exclusiveMinimum
minimum0
endTime?: number

Span end time as a Unix epoch in milliseconds.

minimum0
endTimeNs?: string

Span end time as a Unix epoch in nanoseconds.

error?: string

Error message, present when the log represents an error.

errorTemplate?: string

Templatized version of the error message used for grouping similar errors.

eventSize?: number

Size of the stored telemetry event in bytes.

minimum0
fingerprint?: string

Content-based fingerprint used to group similar events.

level?: string

Log level (e.g. log, debug, info, warn, error).

message?: string

Log message text.

messageTemplate?: string

Templatized version of the log message used for grouping similar messages.

metricName?: string

Metric name when the event represents a metric data point.

origin?: string

Origin of the event (e.g. fetch, scheduled, queue).

parentSpanId?: string

Span ID of the parent span in the trace hierarchy.

provider?: string

Infrastructure provider identifier.

rayId?: string

Cloudflare Ray ID from the cf-ray header of the request that triggered the invocation.

region?: string

Cloudflare data center / region that handled the request.

requestId?: string

Cloudflare request ID that ties all logs from a single invocation together.

service?: string

Worker script name that produced this event.

spanId?: string

Span ID for this individual unit of work within a trace.

spanName?: string

Human-readable name for this span.

spanStatus?: "unset" | "ok" | "error"

OpenTelemetry span status. Present only on spans. unset when the span did not set a status, including spans recorded before status was captured.

One of the following:
"unset"
"ok"
"error"
spanStatusMessage?: string

OpenTelemetry span status message. Present only on spans when the status is error and a message was set.

stackId?: string

Stack / deployment identifier.

startTime?: number

Span start time as a Unix epoch in milliseconds.

minimum0
startTimeNs?: string

Span start time as a Unix epoch in nanoseconds.

statusCode?: number

HTTP response status code returned by the Worker.

exclusiveMinimum
minimum0
timestampNs?: string

Event time as a Unix epoch in nanoseconds.

traceDuration?: number

Total duration of the entire trace in milliseconds.

exclusiveMinimum
minimum0
traceId?: string

Distributed trace ID linking spans across services.

transactionName?: string

Logical transaction name for this request.

trigger?: string

What triggered the invocation (e.g. GET /users, POST /orders, queue message).

type?: string

Event type classifier (e.g. cf-worker-event, cf-worker-log).

url?: string

Request URL that triggered the Worker invocation.

dataset: string

The dataset this event belongs to (e.g. cloudflare-workers).

source: string | Record<string, unknown>

Raw log payload. May be a string or a structured object depending on how the log was emitted.

One of the following:
string
Record<string, unknown>
timestamp: number

Event timestamp as a Unix epoch in milliseconds.

minimum0
"$containers"?: Record<string, unknown>

Cloudflare Containers event information that enriches your logs for identifying and debugging issues.

"$workers"?: UnionMember0 { eventType, scriptName, durableObjectId, 11 more } | UnionMember1 { cpuTimeMs, eventType, outcome, 15 more }

Cloudflare Workers event information that enriches your logs for identifying and debugging issues.

One of the following:
UnionMember0 { eventType, scriptName, durableObjectId, 11 more }
eventType: "fetch" | "scheduled" | "alarm" | 9 more
One of the following:
"fetch"
"scheduled"
"alarm"
"cron"
"queue"
"email"
"tail"
"rpc"
"jsrpc"
"websocket"
"workflow"
"unknown"
scriptName: string
durableObjectId?: string
entrypoint?: string
event?: Record<string, unknown>
executionModel?: "durableObject" | "stateless"
One of the following:
"durableObject"
"stateless"
gateway?: Gateway { requestId }
requestId: string
outcome?: string
preview?: Preview { id, name, slug }
id?: string
name?: string
slug?: string
requestId?: string
scriptVersion?: ScriptVersion { id, message, tag }
id?: string
message?: string
tag?: string
spanId?: string
traceId?: string
truncated?: boolean
UnionMember1 { cpuTimeMs, eventType, outcome, 15 more }
cpuTimeMs: number
eventType: "fetch" | "scheduled" | "alarm" | 9 more
One of the following:
"fetch"
"scheduled"
"alarm"
"cron"
"queue"
"email"
"tail"
"rpc"
"jsrpc"
"websocket"
"workflow"
"unknown"
outcome: string
scriptName: string
wallTimeMs: number
diagnosticsChannelEvents?: Array<DiagnosticsChannelEvent>
channel: string
message: string
timestamp: number
dispatchNamespace?: string
durableObjectId?: string
entrypoint?: string
event?: Record<string, unknown>
executionModel?: "durableObject" | "stateless"
One of the following:
"durableObject"
"stateless"
gateway?: Gateway { requestId }
requestId: string
preview?: Preview { id, name, slug }
id?: string
name?: string
slug?: string
requestId?: string
scriptVersion?: ScriptVersion { id, message, tag }
id?: string
message?: string
tag?: string
spanId?: string
traceId?: string
truncated?: boolean
fields?: Array<Field>

List of fields discovered in the matched events. Useful for building dynamic UIs.

key: string

Field name present in the matched events.

type: string

Data type of the field (string, number, or boolean).

series?: Array<Series>

Time-series data for the matched events, bucketed by the query granularity.

data: Array<Data>
aggregates: Aggregates { _count, _interval, _firstSeen, 2 more }
Deprecated_count: number
exclusiveMinimum
minimum0
Deprecated_interval: number
exclusiveMinimum
minimum0
Deprecated_firstSeen?: string
Deprecated_lastSeen?: string
Deprecatedbin?: unknown
count: number

Estimated number of matching events: the sum of the sample intervals of the stored events. It equals the number of stored events when sampleInterval is 1.

Deprecatedinterval: number

Deprecated alias of sampleInterval. Always has the same value; use sampleInterval instead.

sampleInterval: number

Average sample interval of the matched events. Each stored event has a sample interval of 1 / (the sampling rate applied when it was ingested): the Worker’s head_sampling_rate multiplied by any platform sampling applied to the account or script. A value of 1 means none of the matched events were sampled. A value above 1 means count and value are estimated from sampled data, not exact. This is independent of statistics.abr_level.

errors?: number
groups?: Record<string, string | number | boolean>

Groups in the query results.

One of the following:
string
number
boolean
time: string
invocations?: Record<string, Array<Invocation>>

Events grouped by invocation (request ID). Present when the query view is ‘invocations’. Each key is a request ID mapping to all events from that invocation.

"$metadata": Metadata { id, account, cloudService, 35 more }

Structured metadata extracted from the event. These fields are indexed and available for filtering and aggregation.

id: string

Unique event ID. Use as the cursor value for offset-based pagination.

account?: string

Cloudflare account identifier.

cloudService?: string

Cloudflare product that generated this event (e.g. workers, pages).

coldStart?: number
exclusiveMinimum
minimum0
cost?: number

Estimated cost units for this invocation.

exclusiveMinimum
minimum0
duration?: number

Span duration in milliseconds.

exclusiveMinimum
minimum0
endTime?: number

Span end time as a Unix epoch in milliseconds.

minimum0
endTimeNs?: string

Span end time as a Unix epoch in nanoseconds.

error?: string

Error message, present when the log represents an error.

errorTemplate?: string

Templatized version of the error message used for grouping similar errors.

eventSize?: number

Size of the stored telemetry event in bytes.

minimum0
fingerprint?: string

Content-based fingerprint used to group similar events.

level?: string

Log level (e.g. log, debug, info, warn, error).

message?: string

Log message text.

messageTemplate?: string

Templatized version of the log message used for grouping similar messages.

metricName?: string

Metric name when the event represents a metric data point.

origin?: string

Origin of the event (e.g. fetch, scheduled, queue).

parentSpanId?: string

Span ID of the parent span in the trace hierarchy.

provider?: string

Infrastructure provider identifier.

rayId?: string

Cloudflare Ray ID from the cf-ray header of the request that triggered the invocation.

region?: string

Cloudflare data center / region that handled the request.

requestId?: string

Cloudflare request ID that ties all logs from a single invocation together.

service?: string

Worker script name that produced this event.

spanId?: string

Span ID for this individual unit of work within a trace.

spanName?: string

Human-readable name for this span.

spanStatus?: "unset" | "ok" | "error"

OpenTelemetry span status. Present only on spans. unset when the span did not set a status, including spans recorded before status was captured.

One of the following:
"unset"
"ok"
"error"
spanStatusMessage?: string

OpenTelemetry span status message. Present only on spans when the status is error and a message was set.

stackId?: string

Stack / deployment identifier.

startTime?: number

Span start time as a Unix epoch in milliseconds.

minimum0
startTimeNs?: string

Span start time as a Unix epoch in nanoseconds.

statusCode?: number

HTTP response status code returned by the Worker.

exclusiveMinimum
minimum0
timestampNs?: string

Event time as a Unix epoch in nanoseconds.

traceDuration?: number

Total duration of the entire trace in milliseconds.

exclusiveMinimum
minimum0
traceId?: string

Distributed trace ID linking spans across services.

transactionName?: string

Logical transaction name for this request.

trigger?: string

What triggered the invocation (e.g. GET /users, POST /orders, queue message).

type?: string

Event type classifier (e.g. cf-worker-event, cf-worker-log).

url?: string

Request URL that triggered the Worker invocation.

dataset: string

The dataset this event belongs to (e.g. cloudflare-workers).

source: string | Record<string, unknown>

Raw log payload. May be a string or a structured object depending on how the log was emitted.

One of the following:
string
Record<string, unknown>
timestamp: number

Event timestamp as a Unix epoch in milliseconds.

minimum0
"$containers"?: Record<string, unknown>

Cloudflare Containers event information that enriches your logs for identifying and debugging issues.

"$workers"?: UnionMember0 { eventType, scriptName, durableObjectId, 11 more } | UnionMember1 { cpuTimeMs, eventType, outcome, 15 more }

Cloudflare Workers event information that enriches your logs for identifying and debugging issues.

One of the following:
UnionMember0 { eventType, scriptName, durableObjectId, 11 more }
eventType: "fetch" | "scheduled" | "alarm" | 9 more
One of the following:
"fetch"
"scheduled"
"alarm"
"cron"
"queue"
"email"
"tail"
"rpc"
"jsrpc"
"websocket"
"workflow"
"unknown"
scriptName: string
durableObjectId?: string
entrypoint?: string
event?: Record<string, unknown>
executionModel?: "durableObject" | "stateless"
One of the following:
"durableObject"
"stateless"
gateway?: Gateway { requestId }
requestId: string
outcome?: string
preview?: Preview { id, name, slug }
id?: string
name?: string
slug?: string
requestId?: string
scriptVersion?: ScriptVersion { id, message, tag }
id?: string
message?: string
tag?: string
spanId?: string
traceId?: string
truncated?: boolean
UnionMember1 { cpuTimeMs, eventType, outcome, 15 more }
cpuTimeMs: number
eventType: "fetch" | "scheduled" | "alarm" | 9 more
One of the following:
"fetch"
"scheduled"
"alarm"
"cron"
"queue"
"email"
"tail"
"rpc"
"jsrpc"
"websocket"
"workflow"
"unknown"
outcome: string
scriptName: string
wallTimeMs: number
diagnosticsChannelEvents?: Array<DiagnosticsChannelEvent>
channel: string
message: string
timestamp: number
dispatchNamespace?: string
durableObjectId?: string
entrypoint?: string
event?: Record<string, unknown>
executionModel?: "durableObject" | "stateless"
One of the following:
"durableObject"
"stateless"
gateway?: Gateway { requestId }
requestId: string
preview?: Preview { id, name, slug }
id?: string
name?: string
slug?: string
requestId?: string
scriptVersion?: ScriptVersion { id, message, tag }
id?: string
message?: string
tag?: string
spanId?: string
traceId?: string
truncated?: boolean
traces?: Array<Trace>

Trace summaries matching the query. Present when the query view is ‘traces’. Each entry represents a distributed trace with its spans, duration, and services involved.

rootSpanName: string

Name of the root span that initiated the trace.

rootTransactionName: string

Logical transaction name for the root span.

service: Array<string>

List of Worker services involved in the trace.

spans: number

Total number of spans in the trace.

traceDurationMs: number

Total duration of the trace in milliseconds.

traceEndMs: number

Trace end time as a Unix epoch in milliseconds.

traceId: string

Unique identifier for the distributed trace.

traceStartMs: number

Trace start time as a Unix epoch in milliseconds.

errors?: Array<string>

Error messages encountered during the trace, if any.