POST /accounts/{account_id}/workers/observability/telemetry/keys

List all the keys in your telemetry events.

Servers

Path parameters

Name Type Required Description
account_id String Yes

Your Cloudflare account ID.

Request headers

Name Type Required Description
Content-Type String Yes The media type of the request body.

Default value: "application/json"

Request body fields

Name Type Required Description
datasets[] Array No

Leave this empty to use the default datasets

filters[] Array No

Apply filters to narrow key discovery. Supports nested groups via kind: 'group'. Maximum nesting depth is 4.

filters[].filters[] Array Yes

Child filter nodes. Each can be a leaf filter or another nested group.

filters[].filterCombination String Yes

Logical operator for combining child filters: 'and' (all must match) or 'or' (any must match).

Valid values:

  • "AND"
  • "and"
  • "or"
  • "OR"
filters[].key String Yes

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.

filters[].operation String Yes

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

Valid values:

  • "not_in"
  • "eq"
  • "regex"
  • ">"
  • "NOT_IN"
  • "is_null"
  • "<"
  • "INCLUDES"
  • "!="
  • "<="
  • "includes"
  • "lte"
  • "not_includes"
  • "MATCH_REGEX"
  • "starts_with"
  • "gt"
  • "gte"
  • "exists"
  • "="
  • "EXISTS"
  • "lt"
  • "in"
  • "IN"
  • "DOES_NOT_INCLUDE"
  • ">="
  • "DOES_NOT_EXIST"
  • "neq"
  • "STARTS_WITH"
filters[].type String Yes

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

Valid values:

  • "string"
  • "boolean"
  • "number"
filters[].value Object No

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).

filters[].kind String Yes

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

Valid values:

  • "filter"
to Number No
limit Number No

Advanced usage: set limit=1000+ to retrieve comprehensive key options without needing additional filtering.

needle Object No

Search for a specific substring in any of the events

needle.value String Yes

The text or pattern to search for.

needle.matchCase Boolean No

When true, performs a case-sensitive search. Defaults to case-insensitive.

needle.isRegex Boolean No

When true, treats the value as a regular expression (RE2 syntax).

keyNeedle Object No

If the user suggests a key, use this to narrow down the list of keys returned. Make sure matchCase is false to avoid case sensitivity issues.

keyNeedle.value String Yes

The text or pattern to search for.

keyNeedle.matchCase Boolean No

When true, performs a case-sensitive search. Defaults to case-insensitive.

keyNeedle.isRegex Boolean No

When true, treats the value as a regular expression (RE2 syntax).

from Number No

How to start integrating

  1. Add HTTP Task to your workflow definition.
  2. Search for the API you want to integrate with and click on the name.
    • This loads the API reference documentation and prepares the Http request settings.
  3. Click Test request to test run your request to the API and see the API's response.