AppSignal V2 API Documentation

REST API for metrics, traces, logs, Kubernetes monitoring, and deployment tracking.

Authentication

Most endpoints require a token. Pass it in one of two ways:

Endpoints marked no auth do not require a token.

Error Responses

Endpoints return these unless they document their own:

StatusWhenBody
400 Bad RequestMalformed request, or input the server cannot process.BadRequestResponse
401 UnauthorizedMissing or invalid authentication token. Only on endpoints that require a token.ErrorResponse
404 Not FoundRoute or resource not found.ErrorResponse
429 Too Many RequestsExternal query concurrency limit exceeded; retry shortly.TooManyRequestsResponse
500 Internal Server ErrorUnhandled server-side failure.ErrorResponse

Endpoints

Metrics

Tracing

Events

Search

Logs

Kubernetes

Deploys

Check-ins

Saved Visuals

System

Type Reference

Metrics

POST /api/v2/metrics/anomaly bearer

Detect anomalies in a metrics timeseries

Request Body

AnomalyRequest application/json

NameTypeDescription
query (required)TimeseriesQueryThe series to analyse; at most 30 days. Empty buckets are never filled, and projections are measured from to.
detector (optional)DetectorKindWhich detection algorithm to run. Default: "trend".
config (optional)AnomalyConfigDetector tuning (e.g. the ceiling a trend is projected to cross).
Example
{
  "query": {
    "site_id": "abc123",
    "from": "2024-01-01T00:00:00Z",
    "to": "2024-01-08T00:00:00Z",
    "resolution": "HOURLY",
    "select": [
      {
        "name": "disk_usage",
        "field": "GAUGE",
        "tags": {
          "hostname": "server-1"
        }
      }
    ]
  },
  "detector": "trend",
  "config": {
    "ceiling": 100
  }
}

Response 200 OK

The fetched series and its detections.

AnomalyResponse application/json

NameTypeDescription
series (required)TimeseriesThe fetched series, to overlay the detections on.
detections (required)Detection[]The detections produced by the detector, one per anomalous series (possibly empty).

Response 400 Bad Request

Invalid query, including a window longer than 30 days.

BadRequestResponse application/json

POST /api/v2/metrics/list bearer

List aggregated metrics

Request Body

ListQuery application/json

NameTypeDescription
from (required)string (date-time)Start of the time range to query (inclusive).
to (required)string (date-time)End of the time range to query (inclusive).
resolution (optional)Resolution | nullThe desired interval for aggregation. When null, a resolution is automatically chosen based on the time range.
site_id (required)stringThe site to fetch metrics for.
select (required)ListSelector[]Selectors that define which metrics and fields to fetch. Each selector contributes a key-value entry in the resulting Row::data map.
group_by (required)GroupBy[]How to group metrics into rows. Each unique combination of group-by values produces one Row, whose id is derived from the grouped values.
limit (optional)integer | nullMaximum number of rows to return. When null, no limit is applied.
pagination (optional)Pagination_MetricsPagination | nullId-cursor paging (per_page 1 to 1000, rows ordered by id); takes precedence over limit. A page shorter than per_page is the last.
Example
{
  "site_id": "abc123",
  "from": "2024-01-01T00:00:00Z",
  "to": "2024-01-01T01:00:00Z",
  "select": [
    {
      "id": "cpu",
      "name": "cpu",
      "field": "GAUGE",
      "tags": {
        "hostname": "*"
      }
    }
  ],
  "group_by": [
    {
      "Tag": "hostname"
    }
  ]
}

Response 200 OK

One row per unique combination of group-by values.

List application/json

NameTypeDescription
resolution (required)ResolutionThe time interval used for aggregation (e.g. one minute, one hour).
from (required)string (date-time)Start of the queried time range (inclusive).
to (required)string (date-time)End of the queried time range (inclusive).
rows (required)Row[]The rows of aggregated metric data.

Response 400 Bad Request

Invalid query; the error slug identifies why. Pagination slugs: pagination_requires_deterministic_grouping, pagination_unsupported_for_selector, pagination_invalid_per_page, pagination_key_limit_exceeded.

BadRequestResponse application/json

GET /api/v2/metrics/names/{site_id} bearer

List metric names

Parameters

NameTypeDescription
site_id (required, path)stringThe site to list metric names for.
filter (optional, query)stringOnly return names containing this term, ignoring case (at most 200 characters).

Response 200 OK

The site's metric names.

string[] application/json

Example
[
  "cpu",
  "disk_io",
  "memory",
  "network_tx"
]

Response 400 Bad Request

Malformed request, or a filter that is too long or contains control characters.

BadRequestResponse application/json

POST /api/v2/metrics/timeseries bearer

Query a metrics timeseries

Request Body

TimeseriesQuery application/json

NameTypeDescription
from (required)string (date-time)Start of the time range to query (inclusive).
to (required)string (date-time)End of the time range to query (inclusive).
resolution (optional)Resolution | nullThe desired interval between data points. When null, a resolution is automatically chosen based on the time range.
site_id (required)stringThe site to fetch metrics for.
select (required)TimeseriesSelector[]Selectors that define which metrics and fields to fetch.
limit (optional)integer | nullMaximum number of unique series to return. When null, no limit is applied.
Example
{
  "site_id": "abc123",
  "from": "2024-01-01T00:00:00Z",
  "to": "2024-01-01T01:00:00Z",
  "resolution": "MINUTELY",
  "select": [
    {
      "name": "cpu",
      "field": "GAUGE",
      "tags": {
        "hostname": "server-1",
        "state": "user"
      }
    }
  ]
}

Response 200 OK

The matching series.

Timeseries application/json

NameTypeDescription
resolution (required)ResolutionThe time interval between consecutive data points (e.g. one minute, one hour).
from (required)string (date-time)Start of the queried time range (inclusive).
to (required)string (date-time)End of the queried time range (inclusive).
series (required)Serie[]The individual timeseries that matched the query.
GET /api/v2/metrics/type_and_tags/{site_id}/{metric_name} bearer

Get a metric's type and tags

Parameters

NameTypeDescription
site_id (required, path)stringThe site the metric belongs to.
metric_name (required, path)stringThe metric to describe.

Response 200 OK

The metric's type and tag combinations.

MetricTypeAndTags application/json

NameTypeDescription
metric_type (required)MetricTypeThe category of the metric (gauge, counter or measurement).
available_tags (required)string[][]The tag combinations available for this metric. Each inner vector represents one valid combination of tag names (e.g. [["hostname"], ["hostname", "namespace"]]).
Example
{
  "metric_type": "GAUGE",
  "available_tags": [
    [
      "hostname"
    ],
    [
      "hostname",
      "state"
    ]
  ]
}

Response 404 Not Found

The metric does not exist.

ErrorResponse application/json

Tracing

POST /api/v2/tracing/action_edges bearer

List action edges

Request Body

ActionEdgesApiQuery application/json

NameTypeDescription
site_id (required)stringSite ID that anchors the query (the focused action's site).
namespace (required)stringFocused action's "<service>/<namespace>" (e.g. "PublicApi/web"), split on the first / (later / stay in the namespace). Both halves must be non-empty, else 400.
action (required)stringAction name of the focused action.
from (required)string (date-time)Start of the time range (inclusive).
to (required)string (date-time)End of the time range (exclusive).
Example
{
  "site_id": "abc123",
  "namespace": "PublicApi/web",
  "action": "UsersController#show",
  "from": "2024-01-01T00:00:00Z",
  "to": "2024-01-01T01:00:00Z"
}

Response 200 OK

The focused action's upstream and downstream edges.

ActionEdgesResponse application/json

NameTypeDescription
upstream (required)ActionEdge[]Upstream edges (callers into the focused action).
downstream (required)ActionEdge[]Downstream edges (callees the focused action invoked).
Example
{
  "upstream": [
    {
      "site_id": "def456",
      "site_name": "Frontend",
      "site_environment": "production",
      "service": "Frontend",
      "namespace": "web",
      "action": "HomeController#index",
      "caller_kind": "CLIENT",
      "callee_kind": "SERVER",
      "edge_type": "SYNC",
      "count": 1200,
      "error_count": 3,
      "mean": 42.5,
      "p_90": 80.1,
      "p_95": 110.7
    }
  ],
  "downstream": []
}

Response 400 Bad Request

namespace is not <service>/<namespace> with both halves non-empty, or the query is otherwise invalid.

BadRequestResponse application/json

POST /api/v2/tracing/actions bearer

List performance actions

Request Body

ActionsQuery application/json

NameTypeDescription
site_id (required)stringSite identifier to scope the query to.
from (required)string (date-time)Start of the time range (inclusive).
to (required)string (date-time)End of the time range (inclusive).
namespaces (optional)string[]Namespaces to filter by. When empty, all namespaces are included.
revision (optional)string | nullOptional deployment revision to filter by.
action (optional)string | nullOptional action name to filter by.
Example
{
  "site_id": "abc123",
  "from": "2024-01-01T00:00:00Z",
  "to": "2024-01-01T01:00:00Z",
  "namespaces": [
    "web"
  ]
}

Response 200 OK

One row per namespace, action and digest.

ActionRow[] application/json

Returns an array of ActionRow

NameTypeDescription
namespace (required)stringApplication namespace (e.g. "web", "background").
action (required)stringAction name (e.g. "UsersController#show").
digest (required)stringAction digest identifier.
mean (required)numberMean duration in milliseconds.
throughput (required)numberTotal request count in the queried time range.
error_rate (required)numberError percentage (0.0–100.0).
has_npo (required)booleanWhether an N+1 query has been detected for this action.
Example
[
  {
    "namespace": "web",
    "action": "UsersController#show",
    "digest": "a1b2c3",
    "mean": 123.4,
    "throughput": 5200.0,
    "error_rate": 0.8,
    "has_npo": false
  }
]
POST /api/v2/tracing/errors bearer

List incident error counts

Request Body

IncidentErrorsQuery application/json

NameTypeDescription
site_id (required)stringSite to fetch incident error counts for.
from (required)string (date-time)Start of the time range (inclusive).
to (required)string (date-time)End of the time range (inclusive).
namespaces (optional)string[]Namespaces to filter by. When empty, all namespaces are included.
revision (optional)string | nullDeployment revision to filter by. When absent, all revisions are included.

Response 200 OK

Incident digests matching the filter, with their error counts.

IncidentErrorRow[] application/json

Returns an array of IncidentErrorRow

NameTypeDescription
incident_digest (required)stringThe incident digest.
namespace (required)stringApplication namespace the incident occurred in.
revision (required)stringMost recent deployment revision the incident occurred in within the queried time range.
error_count (required)integer (>= 0)Total error occurrences for this digest across the queried time range, summed across every matching revision.
POST /api/v2/tracing/locator bearer

Locate a trace

Request Body

LocatorQuery application/json

NameTypeDescription
site_ids (required)string[]Sites to search across; the token must have access to all of them.
trace_id (required)stringThe trace to locate.
Example
{
  "site_ids": [
    "abc123"
  ],
  "trace_id": "5baa0559ff2f4d35f3b2cd90d312bac3"
}

Response 200 OK

The performance actions and error incidents the trace appears in; both lists are empty when it is not found.

TraceLocation application/json

NameTypeDescription
performance (required)PerformanceLocation[]Performance actions where this trace appears.
errors (required)ErrorLocation[]Error incidents where this trace appears.
Example
{
  "performance": [
    {
      "site_id": "abc123",
      "namespace": "web",
      "action_name": "POST /api/users"
    }
  ],
  "errors": [
    {
      "site_id": "abc123",
      "incident_number": 42,
      "exception_name": "RuntimeError",
      "incident_digests": [
        "1234567890"
      ]
    }
  ]
}
POST /api/v2/tracing/metadata_distributions bearer

List incident metadata distributions

Request Body

MetadataDistributionsQuery application/json

NameTypeDescription
site_id (required)stringSite to fetch metadata for.
incident_digests (required)string[]Incident digests to include.
from (required)string (date-time)Start of the time range (inclusive).
to (optional)string (date-time) | nullEnd of the time range (inclusive). Defaults to now.
group_by (required)MetadataGroupByWhich dimension to group by (KEY or VALUE).
metadata_key (optional)string | nullThe metadata key to filter values by. Required when group_by is VALUE; ignored in KEY mode.
limit (optional)integer | nullMaximum rows to return, clamped to 1–1000. Defaults to 10 in VALUE mode; in KEY mode absent means no limit.
Example
{
  "site_id": "abc123",
  "incident_digests": [
    "1023993"
  ],
  "from": "2024-01-01T00:00:00Z",
  "group_by": "VALUE",
  "metadata_key": "hostname"
}

Response 200 OK

A bare array: key rows in KEY mode, value rows in VALUE mode.

MetadataDistributions application/json

VariantDescription
MetadataKeyDistribution[]
MetadataValueDistribution[]
Example
[
  {
    "key": "frontend1",
    "value": 42
  }
]

Response 400 Bad Request

incident_digests is empty, or group_by is VALUE without a metadata_key.

BadRequestResponse application/json

POST /api/v2/tracing/site_edges bearer

List site edges

Request Body

SiteEdgesApiQuery application/json

NameTypeDescription
site_id (required)stringSite ID that anchors the query.
from (required)string (date-time)Start of the time range (inclusive).
to (required)string (date-time)End of the time range (exclusive).
Example
{
  "site_id": "abc123",
  "from": "2024-01-01T00:00:00Z",
  "to": "2024-01-01T01:00:00Z"
}

Response 200 OK

The site's service edges, grouped by direction.

SiteEdgesResponse application/json

NameTypeDescription
upstream (required)SiteEdge[]External services calling into this site (upstream).
downstream (required)SiteEdge[]External services this site calls (downstream).
internal (required)SiteEdge[]Internal services this site calls within itself (both sides share the focused site_id).
Example
{
  "upstream": [],
  "downstream": [
    {
      "site_id": "def456",
      "site_name": "Billing",
      "site_environment": "production",
      "service": "Billing",
      "count": 800,
      "error_count": 2,
      "mean": 35.2,
      "p_90": 70.0,
      "p_95": 95.3
    }
  ],
  "internal": []
}
POST /api/v2/tracing/slow_events bearer

List slow events

Request Body

SlowEventsParams application/json

NameTypeDescription
site_id (required)stringSite to query.
from (required)string (date-time)Start of the time range; clamped to the account's data retention.
to (required)string (date-time)End of the time range; clamped to now.
span_kind (optional)SpanKind | nullOnly return spans of this kind.
wanted_attributes (required)map<string, AttributeRequirement>Attributes to return, keyed by category (e.g. payload, system). The key appsignal.library returns what follows appsignal/ in the span's scope (e.g. active_record), empty for other scopes.
excluded_attributes (optional)string[]Attribute keys to exclude; a span is excluded if any listed key is present.
Example
{
  "site_id": "abc123",
  "from": "2024-01-01T00:00:00Z",
  "to": "2024-01-01T01:00:00Z",
  "wanted_attributes": {
    "payload": {
      "Required": [
        "db.query.text",
        "db.statement"
      ]
    },
    "system": {
      "Optional": [
        "db.system.name"
      ]
    }
  }
}

Response 200 OK

The slow events, with the requested attributes.

SlowEventItem[] application/json

Returns an array of SlowEventItem

NameTypeDescription
digest (required)stringHash digest identifying the slow event's operation.
count (required)integer (>= 0)Number of times this slow event occurred in the time range.
mean (required)numberMean duration of this slow event in milliseconds.
impact (required)numberRelative impact score (higher means more total time spent).
* (optional)stringAdditional attributes for the slow event (e.g. query body, category).
Example
[
  {
    "digest": "1234567890",
    "count": 42,
    "mean": 125.5,
    "impact": 5271.0,
    "payload": "SELECT * FROM users WHERE id = ?",
    "system": "postgresql"
  }
]

Response 400 Bad Request

wanted_attributes is empty, has no Required entry, or has an empty key list; or an attribute category or key is invalid.

BadRequestResponse application/json

POST /api/v2/tracing/slow_events/actions bearer

List actions for a slow event

Request Body

ActionsParams application/json

NameTypeDescription
site_id (required)stringSite to query.
from (required)string (date-time)Start of the time range; clamped to the account's data retention.
to (required)string (date-time)End of the time range; clamped to now.
digest (required)stringDigest of the slow event, as returned by the slow events endpoint.
Example
{
  "site_id": "abc123",
  "from": "2024-01-01T00:00:00Z",
  "to": "2024-01-01T01:00:00Z",
  "digest": "1234567890"
}

Response 200 OK

The actions the slow event appears in.

RelatedTraceItem[] application/json

Returns an array of RelatedTraceItem

NameTypeDescription
action_name (required)stringName of the action containing the slow event.
namespace (required)stringNamespace the action belongs to.
count (required)integer (>= 0)Number of times the slow event appeared in this action.
trace_id (required)stringTrace ID of the most recent occurrence.
start_time (required)stringStart time of the most recent occurrence. Example: "2024-01-01 00:00:00.123456789".
Example
[
  {
    "action_name": "UsersController#index",
    "namespace": "web",
    "count": 42,
    "trace_id": "0af7651916cd43dd8448eb211c80319c",
    "start_time": "2024-01-01 00:00:00.123456789"
  }
]
POST /api/v2/tracing/trace bearer

Get a trace

Request Body

TraceQuery application/json

NameTypeDescription
site_ids (required)string[]Sites to search; the token must have access to all of them.
trace_id (required)stringThe trace to fetch.
include_linked_spans (optional)booleanAlso return spans from other traces that link to this one.
Example
{
  "site_ids": [
    "abc123"
  ],
  "trace_id": "5baa0559ff2f4d35f3b2cd90d312bac3"
}

Response 200 OK

The trace's spans, or an empty array when the trace is not found.

TraceSpan[] application/json

Returns an array of TraceSpan

NameTypeDescription
start_time (required)string (date-time)Timestamp when the span started.
end_time (required)string (date-time)Timestamp when the span ended.
site_id (required)stringIdentifier of the site this span belongs to.
trace_id (required)stringUnique identifier for the entire trace.
parent_span_id (required)stringSpan ID of the parent span, empty for root spans.
span_id (required)stringUnique identifier for this span.
digest (required)stringHash digest identifying the span's operation.
duration (required)numberDuration of the span in milliseconds.
trace_state (required)stringW3C trace state header value.
subtrace_root (required)booleanWhether this span is the root of a subtrace (a separate service boundary).
resource_attributes (required)map<string, string>Resource-level attributes (e.g. host, service metadata).
service_name (required)stringName of the service that produced this span.
namespace (required)stringNamespace the span belongs to (e.g. "web", "background").
revision (required)stringGit revision or deployment identifier active when the span was recorded.
scope_name (required)stringInstrumentation scope name (e.g. the library that produced the span).
scope_version (required)stringInstrumentation scope version.
action_name (required)stringAction name for the span (e.g. "POST /api/users").
span_name (required)stringLow-cardinality name of the operation (e.g. "HTTP GET").
span_kind (required)stringSpan kind (e.g. "server", "client", "internal").
span_attributes (required)map<string, string>Span-level attributes (e.g. HTTP headers, database statements).
status_code (required)stringOpenTelemetry status code: "unset", "ok" or "error".
status_message (required)stringHuman-readable status message, typically set on error.
events.timestamp (required)string[]Timestamps of span events.
events.name (required)string[]Names of span events (e.g. "exception").
events.attributes (required)map<string, string>[]Attributes for each span event.
links.trace_id (required)string[]Trace IDs of linked spans.
links.span_id (required)string[]Span IDs of linked spans.
links.trace_state (required)string[]Trace state values of linked spans.
links.attributes (required)map<string, string>[]Attributes for each span link.
POST /api/v2/tracing/trace/error bearer

Get an error incident's trace

Request Body

ErrorTraceQuery application/json

NameTypeDescription
site_ids (required)string[]Sites to search; the token must have access to all of them.
digests (required)string[]Digests of the error incident.
trace_id (optional)string | nullA specific trace ID, or "last" (the default) for the most recent trace with a matching digest.
Example
{
  "site_ids": [
    "abc123"
  ],
  "digests": [
    "1234567890"
  ],
  "trace_id": "last"
}

Response 200 OK

The trace's spans.

TraceSpan[] application/json

Returns an array of TraceSpan

NameTypeDescription
start_time (required)string (date-time)Timestamp when the span started.
end_time (required)string (date-time)Timestamp when the span ended.
site_id (required)stringIdentifier of the site this span belongs to.
trace_id (required)stringUnique identifier for the entire trace.
parent_span_id (required)stringSpan ID of the parent span, empty for root spans.
span_id (required)stringUnique identifier for this span.
digest (required)stringHash digest identifying the span's operation.
duration (required)numberDuration of the span in milliseconds.
trace_state (required)stringW3C trace state header value.
subtrace_root (required)booleanWhether this span is the root of a subtrace (a separate service boundary).
resource_attributes (required)map<string, string>Resource-level attributes (e.g. host, service metadata).
service_name (required)stringName of the service that produced this span.
namespace (required)stringNamespace the span belongs to (e.g. "web", "background").
revision (required)stringGit revision or deployment identifier active when the span was recorded.
scope_name (required)stringInstrumentation scope name (e.g. the library that produced the span).
scope_version (required)stringInstrumentation scope version.
action_name (required)stringAction name for the span (e.g. "POST /api/users").
span_name (required)stringLow-cardinality name of the operation (e.g. "HTTP GET").
span_kind (required)stringSpan kind (e.g. "server", "client", "internal").
span_attributes (required)map<string, string>Span-level attributes (e.g. HTTP headers, database statements).
status_code (required)stringOpenTelemetry status code: "unset", "ok" or "error".
status_message (required)stringHuman-readable status message, typically set on error.
events.timestamp (required)string[]Timestamps of span events.
events.name (required)string[]Names of span events (e.g. "exception").
events.attributes (required)map<string, string>[]Attributes for each span event.
links.trace_id (required)string[]Trace IDs of linked spans.
links.span_id (required)string[]Span IDs of linked spans.
links.trace_state (required)string[]Trace state values of linked spans.
links.attributes (required)map<string, string>[]Attributes for each span link.

Response 404 Not Found

No trace found for the digests or trace ID.

ErrorResponse application/json

POST /api/v2/tracing/trace/performance bearer

Get a performance action's trace

Request Body

PerformanceTraceQuery application/json

NameTypeDescription
site_ids (required)string[]Sites to search; the token must have access to all of them.
action_name (required)stringName of the action, e.g. POST /api/users.
namespace (required)stringNamespace of the action, e.g. web.
trace_id (optional)string | nullA specific trace ID, or "last" (the default) for the most recent trace of the action.
Example
{
  "site_ids": [
    "abc123"
  ],
  "namespace": "web",
  "action_name": "POST /api/users",
  "trace_id": "last"
}

Response 200 OK

The trace's spans.

TraceSpan[] application/json

Returns an array of TraceSpan

NameTypeDescription
start_time (required)string (date-time)Timestamp when the span started.
end_time (required)string (date-time)Timestamp when the span ended.
site_id (required)stringIdentifier of the site this span belongs to.
trace_id (required)stringUnique identifier for the entire trace.
parent_span_id (required)stringSpan ID of the parent span, empty for root spans.
span_id (required)stringUnique identifier for this span.
digest (required)stringHash digest identifying the span's operation.
duration (required)numberDuration of the span in milliseconds.
trace_state (required)stringW3C trace state header value.
subtrace_root (required)booleanWhether this span is the root of a subtrace (a separate service boundary).
resource_attributes (required)map<string, string>Resource-level attributes (e.g. host, service metadata).
service_name (required)stringName of the service that produced this span.
namespace (required)stringNamespace the span belongs to (e.g. "web", "background").
revision (required)stringGit revision or deployment identifier active when the span was recorded.
scope_name (required)stringInstrumentation scope name (e.g. the library that produced the span).
scope_version (required)stringInstrumentation scope version.
action_name (required)stringAction name for the span (e.g. "POST /api/users").
span_name (required)stringLow-cardinality name of the operation (e.g. "HTTP GET").
span_kind (required)stringSpan kind (e.g. "server", "client", "internal").
span_attributes (required)map<string, string>Span-level attributes (e.g. HTTP headers, database statements).
status_code (required)stringOpenTelemetry status code: "unset", "ok" or "error".
status_message (required)stringHuman-readable status message, typically set on error.
events.timestamp (required)string[]Timestamps of span events.
events.name (required)string[]Names of span events (e.g. "exception").
events.attributes (required)map<string, string>[]Attributes for each span event.
links.trace_id (required)string[]Trace IDs of linked spans.
links.span_id (required)string[]Span IDs of linked spans.
links.trace_state (required)string[]Trace state values of linked spans.
links.attributes (required)map<string, string>[]Attributes for each span link.

Response 404 Not Found

No trace found for the action or trace ID.

ErrorResponse application/json

POST /api/v2/tracing/traces/errors bearer

List error traces

Request Body

ErrorTracesQuery application/json

NameTypeDescription
site_ids (required)string[]Sites to search; the caller must have access to all of them.
digests (required)string[]Digests of the error incidents to list traces for.
query (optional)string | nullFilter query; supports revision and tag filters.
pagination (required)Pagination_TracePaginationPage size (capped at 100), order and cursor.
Example
{
  "site_ids": [
    "abc123"
  ],
  "digests": [
    "1234567890"
  ],
  "pagination": {
    "per_page": 50,
    "order": "DESC",
    "cursor": {
      "time": null
    }
  }
}

Response 200 OK

The matching trace summaries.

Trace[] application/json

Returns an array of Trace

NameTypeDescription
span_id (required)stringUnique identifier for the root span.
trace_id (required)stringUnique identifier for the entire trace.
site_id (required)stringSite identifier this trace belongs to.
namespace (optional)string | nullNamespace the trace belongs to (e.g. "web", "background").
revision (optional)string | nullGit revision or deployment identifier active when the trace was recorded.
action_name (optional)string | nullAction name for the trace (e.g. "POST /api/users").
time (required)string (date-time)Timestamp when the trace started.
duration (required)numberTotal duration of the trace in milliseconds.
tags (required)map<string, string>User-defined tags extracted from span attributes.
has_npo (required)booleanWhether this trace contains N+1 query detection results.
POST /api/v2/tracing/traces/performance bearer

List performance traces

Request Body

PerformanceTracesQuery application/json

NameTypeDescription
site_ids (required)string[]Sites to search; the caller must have access to all of them.
action_name (required)stringAction to list traces for, e.g. POST /api.
namespace (required)stringNamespace the action belongs to, e.g. web.
query (optional)string | nullFilter query; supports revision and tag filters.
duration_ms (optional)integer | nullOnly return traces at least this long, in milliseconds.
from (optional)string (date-time) | nullStart of the time range.
to (optional)string (date-time) | nullEnd of the time range.
pagination (required)Pagination_TracePaginationPage size (capped at 100), order and cursor.
Example
{
  "site_ids": [
    "abc123"
  ],
  "namespace": "web",
  "action_name": "POST /api",
  "duration_ms": 1000,
  "pagination": {
    "per_page": 50,
    "order": "DESC",
    "cursor": {
      "time": null
    }
  }
}

Response 200 OK

The matching trace summaries.

Trace[] application/json

Returns an array of Trace

NameTypeDescription
span_id (required)stringUnique identifier for the root span.
trace_id (required)stringUnique identifier for the entire trace.
site_id (required)stringSite identifier this trace belongs to.
namespace (optional)string | nullNamespace the trace belongs to (e.g. "web", "background").
revision (optional)string | nullGit revision or deployment identifier active when the trace was recorded.
action_name (optional)string | nullAction name for the trace (e.g. "POST /api/users").
time (required)string (date-time)Timestamp when the trace started.
duration (required)numberTotal duration of the trace in milliseconds.
tags (required)map<string, string>User-defined tags extracted from span attributes.
has_npo (required)booleanWhether this trace contains N+1 query detection results.

Events

POST /api/v2/events/group_list bearer

List the top events of event groups

Request Body

EventGroupListQuery application/json

NameTypeDescription
site_id (required)stringSite to fetch events for, as a BSON ObjectId.
from (required)string (date-time)Start of the time range, rounded down to the start of its resolution bucket.
to (required)string (date-time)End of the time range (inclusive). Capped at now, then rounded up to the end of its resolution bucket; MINUTELY stops at the end of the minute 2 minutes ago.
resolution (optional)Resolution | nullSets how from and to are rounded. MINUTELY fits ranges of up to 12 hours within the last 2 days; when absent or unfit, MINUTELY is used if it fits, otherwise HOURLY.
groups (required)string[]Event groups to include (e.g. ["active_record", "moped"]). At least one.
order (optional)EventGroupOrderField to rank and truncate by. Default: "IMPACT".
limit (optional)integerMaximum number of rows to return. Clamped to 1–1000. Default: 1000.
Example
{
  "site_id": "6591f2705fa150d75339e232",
  "from": "2024-01-01T00:00:00Z",
  "to": "2024-01-01T01:00:00Z",
  "resolution": "HOURLY",
  "groups": [
    "active_record",
    "moped"
  ],
  "order": "IMPACT"
}

Response 200 OK

Up to limit events across all requested groups, ranked by order descending. Some events are left out after ranking (transaction boundaries, and events without metadata or a group), so fewer rows than limit can come back.

EventGroupItem[] application/json

Returns an array of EventGroupItem

NameTypeDescription
digest (required)stringDigest identifying the event.
group (required)stringGroup the event belongs to (e.g. active_record), derived from name.
name (required)stringEvent name (e.g. sql.active_record).
title (optional)string | nullHuman-readable title.
body (optional)string | nullEvent body (e.g. the query text).
count (required)integer (>= 0)Number of occurrences in the time range.
mean (required)numberWeighted mean duration in milliseconds.
impact (required)numberTotal time spent in milliseconds (count * mean).

Response 400 Bad Request

groups is empty.

BadRequestResponse application/json

POST /api/v2/search bearer

Search traces and samples

Request Body

SearchRequest application/json

NameTypeDescription
site_ids (required)string[]Sites to search, as BSON ObjectIds: at least one, all in one account.
query (optional)string | nullBare words match an action name, exception name or tag value exactly, as one phrase. action:, error: and tag: match one field exactly, message: a case-insensitive whole-word phrase; quote values with spaces.
namespace (optional)string | nullOptional namespace filter (e.g. "web", "background").
kind (optional)SampleKindSample kind filter. Default: "all".
from (optional)string (date-time) | nullStart of the time range (inclusive). Defaults to, and is clamped to, the start of the account's retention.
to (optional)string (date-time) | nullEnd of the time range (inclusive). Defaults to now.
limit (optional)integer (>= 0)Maximum number of results to return. Clamped to at most 2000. Default: 50.
Example
{
  "site_ids": [
    "6591f2705fa150d75339e232"
  ],
  "query": "error:RuntimeError",
  "kind": "exception",
  "from": "2024-01-01T00:00:00Z",
  "to": "2024-01-02T00:00:00Z"
}

Response 200 OK

Up to limit results, newest first: one per incident digest of each matching span, so trace_id can repeat. Legacy samples are left out when their store is unavailable.

SearchResult[] application/json

Returns an array of SearchResult

NameTypeDescription
result_type (required)IncidentKindWhether this is an exception or performance result.
source (required)SearchResultSourceWhether this result came from a trace or a legacy sample.
trace_id (required)stringIdentifier to open the trace or sample with.
site_id (required)stringSite identifier this result belongs to.
namespace (optional)string | nullNamespace the result belongs to (e.g. "web", "background").
revision (optional)string | nullGit revision or deployment identifier active when the result was recorded.
action_name (optional)string | nullAction name of the result (e.g. "POST /api/users").
time (required)string (date-time)Timestamp when the result was recorded.
duration (required)numberDuration in milliseconds of the matched span or sample.
tags (required)map<string, string>User-defined tags.
exception_name (optional)string | nullException name; present for exception results only.
exception_message (optional)string | nullException message; present for exception results only.
incident_digest (optional)string | nullIncident digest used to link to the incident page.
incident_number (optional)integer | nullIncident number, when the incident digest matches a known incident.

Logs

POST /api/v2/logs/lines bearer

Search log lines

Request Body

LogsQueryParams application/json

NameTypeDescription
site_id (required)stringSite to search; an empty value returns no log lines.
from (optional)string (date-time) | nullStart of the time range; defaults to the start of the account's log retention and is clamped to it and now.
to (optional)string (date-time) | nullEnd of the time range; defaults to now and is clamped to from..now.
source_ids (required)string[]Log sources to search; an empty list returns no log lines.
query (required)stringLog search query; an empty string matches every line.
pagination (required)Pagination_LogPaginationPage size, order and cursor.
Example
{
  "site_id": "abc123",
  "from": "2024-01-01T00:00:00Z",
  "to": "2024-01-01T01:00:00Z",
  "source_ids": [
    "source-1",
    "source-2"
  ],
  "query": "error",
  "pagination": {
    "per_page": 50,
    "order": "DESC",
    "cursor": {
      "time": null,
      "id": null
    }
  }
}

Response 200 OK

The matching log lines, or a server-sent event stream whose data fields are each a LogStreamEvent.

LogLine[] application/json

Returns an array of LogLine

NameTypeDescription
timestamp (required)string (date-time)When the line was logged, with millisecond precision.
id (optional)string | nullUnique ID of the line.
source_id (optional)string | nullLog source the line was ingested through.
group (optional)string | nullGroup the line belongs to, such as the app or service name.
severity (optional)string | nullSeverity level, such as info or error.
message (optional)string | nullThe log message.
hostname (optional)string | nullHost that emitted the line.
json (optional)string | nullThe line's attributes as a JSON-encoded string.

string text/event-stream

Kubernetes

POST /api/v2/kubernetes/nodes bearer

Query Kubernetes node metrics

Request Body

NodesQuery application/json

NameTypeDescription
site_id (required)stringSite identifier to query nodes for.
from (required)string (date-time)Start of the time range (inclusive).
to (required)string (date-time)End of the time range (exclusive).
node_name (optional)stringOptional node name filter. Empty means all nodes.
Example
{
  "site_id": "abc123",
  "from": "2024-01-01T00:00:00Z",
  "to": "2024-01-01T01:00:00Z",
  "node_name": "node-1"
}

Response 200 OK

One row per node, ordered by node name.

NodesRow[] application/json

Returns an array of NodesRow

NameTypeDescription
timestamp (required)string (date-time)Timestamp of the metrics snapshot.
node_name (required)stringName of the Kubernetes node.
cpu_usage_nano_cores (required)numberCPU usage in nanocores.
memory_rss_bytes (required)numberResident set size (RSS) memory in bytes.
memory_usage_bytes (required)numberTotal memory usage in bytes.
memory_working_set_bytes (required)numberWorking set memory in bytes.
memory_page_faults (required)numberNumber of page faults.
memory_major_page_faults (required)numberNumber of major page faults.
fs_used_bytes (required)numberFilesystem space used in bytes.
fs_available_bytes (required)numberFilesystem space available in bytes.
fs_capacity_bytes (required)numberTotal filesystem capacity in bytes.
fs_inodes_free (required)numberNumber of free filesystem inodes.
fs_inodes_used (required)numberNumber of used filesystem inodes.
fs_inodes (required)numberTotal number of filesystem inodes.
network_rx_bytes (required)numberNetwork bytes received.
network_tx_bytes (required)numberNetwork bytes transmitted.
phase (required)integer (>= 0)Node phase as a numeric value.
POST /api/v2/kubernetes/pods bearer

Query Kubernetes pod metrics

Request Body

PodsQuery application/json

NameTypeDescription
site_id (required)stringSite identifier to query pods for.
from (required)string (date-time)Start of the time range (inclusive).
to (required)string (date-time)End of the time range (exclusive).
namespaces (optional)string[]Optional namespace filter. Empty means all namespaces.
pod_name (optional)stringOptional substring of the pod name to match. Empty means all pods.
node_names (optional)string[]Optional node name filter. Empty means all nodes.
state (optional)PodState | nullOptional pod state filter, applied to every snapshot in the time range rather than only the latest.
Example
{
  "site_id": "abc123",
  "from": "2024-01-01T00:00:00Z",
  "to": "2024-01-01T01:00:00Z",
  "namespaces": [
    "default",
    "kube-system"
  ],
  "state": "Running"
}

Response 200 OK

One row per pod, ordered by namespace and pod name.

PodsRow[] application/json

Returns an array of PodsRow

NameTypeDescription
timestamp (required)string (date-time)Timestamp of the metrics snapshot.
pod_name (required)stringName of the pod.
pod_namespace (required)stringKubernetes namespace the pod belongs to.
node_name (required)stringName of the node this pod is running on.
cpu_usage_nano_cores (required)numberCPU usage in nanocores.
cpu_usage_core_nano_seconds (required)numberCumulative CPU usage in core-nanoseconds.
memory_rss_bytes (required)numberResident set size (RSS) memory in bytes.
memory_usage_bytes (required)numberTotal memory usage in bytes.
memory_working_set_bytes (required)numberWorking set memory in bytes.
memory_page_faults (required)numberNumber of page faults.
memory_major_page_faults (required)numberNumber of major page faults.
ephemeral_storage_used_bytes (required)numberEphemeral storage used in bytes.
ephemeral_storage_capacity_bytes (required)numberEphemeral storage capacity in bytes.
network_rx_bytes (required)numberNetwork bytes received.
network_tx_bytes (required)numberNetwork bytes transmitted.
process_count (required)numberNumber of running processes.
phase (required)PodPhaseCurrent phase of the pod lifecycle.
state (required)PodStateDerived pod state based on phase and container statuses.
containers (required)Container[]Containers running in this pod.
pod_restart_count (required)integer (>= 0)Total number of container restarts for this pod.
pod_uptime_seconds (required)integer (>= 0)Pod uptime in seconds.
POST /api/v2/kubernetes/pods/overview bearer

Query Kubernetes pod overviews

Request Body

PodOverviewsQuery application/json

NameTypeDescription
site_id (required)stringSite identifier to query pod overviews for.
from (required)string (date-time)Start of the time range (inclusive).
to (required)string (date-time)End of the time range (exclusive).
namespaces (optional)string[]Optional namespace filter. Empty means all namespaces.
query (optional)stringOptional substring of the pod name to match. Empty means all pods.
Example
{
  "site_id": "abc123",
  "from": "2024-01-01T00:00:00Z",
  "to": "2024-01-01T01:00:00Z",
  "namespaces": [
    "default"
  ],
  "query": "nginx"
}

Response 200 OK

One row per pod, ordered by namespace and pod name.

PodOverviewRow[] application/json

Returns an array of PodOverviewRow

NameTypeDescription
timestamp (required)string (date-time)Timestamp of the metrics snapshot.
node_name (required)stringName of the node this pod is running on.
pod_name (required)stringName of the pod.
pod_namespace (required)stringKubernetes namespace the pod belongs to.
pod_uuid (required)stringUnique pod identifier.
phase (required)PodPhaseCurrent phase of the pod lifecycle.
labels (required)map<string, string>Kubernetes labels attached to the pod.
owner_references (required)OwnerReference[]Owner references (e.g. Deployment, ReplicaSet) for this pod.
containers (required)Container[]Containers running in this pod.
state (required)PodStateDerived pod state based on phase and container statuses.
pod_restart_count (required)integer (>= 0)Total number of container restarts for this pod.
pod_uptime_seconds (required)integer (>= 0)Pod uptime in seconds.

Deploys

POST /api/v2/deploys/stats bearer

Query deployment statistics

Request Body

StatsQuery application/json

NameTypeDescription
site_id (required)stringSite identifier, as a BSON ObjectId.
revision (required)stringGit revision or deployment identifier.
namespace (optional)string | nullOptional namespace filter (e.g., "web", "api"). Absent means all namespaces.
Example
{
  "site_id": "6591f2705fa150d75339e232",
  "revision": "abc-123",
  "namespace": "web"
}

Response 200 OK

Statistics for the revision, zero when nothing was recorded.

DeployStatsResult application/json

NameTypeDescription
throughput (required)integer (>= 0)Recorded requests and background jobs.
mean (required)numberMean duration in milliseconds.
error_rate (required)numberError rate as a percentage (0-100).
Example
{
  "throughput": 1001,
  "mean": 1.95,
  "error_rate": 1.05
}

Check-ins

POST /api/v2/check_ins/test_cron bearer

Test a cron expression

Returns the next check-in window for the cron expression. An invalid expression, timezone or timestamp still returns 200 with error set and no window.

Request Body

CronQuery application/json

NameTypeDescription
cron (required)stringCron expression to test (e.g. "0 * * * *").
wait_time_minutes (required)integerWait time in minutes for the check-in window.
timestamp (optional)integer | nullUnix timestamp in seconds to evaluate against. Defaults to the current time.
timezone (optional)stringIANA timezone for cron evaluation (e.g. "Europe/Amsterdam"). An empty string means UTC. Default: "".
Example
{
  "cron": "0 6 * * *",
  "wait_time_minutes": 5,
  "timestamp": 1614556800,
  "timezone": "Europe/Amsterdam"
}

Response 200 OK

The next window, or an error message when the input is invalid.

CronQueryResult application/json

NameTypeDescription
now (required)string (date-time)The time evaluated against: timestamp, or the current time when omitted or out of range.
next_start (required)string (date-time) | nullNext scheduled start time; null when error is set.
next_end (required)string (date-time) | nullNext scheduled end time (start + wait time); null when error is set.
error (required)string | nullWhy no window could be computed (invalid expression, timezone or timestamp); null on success.
Example: Invalid expression
{
  "now": "2021-03-01T00:00:00Z",
  "next_start": null,
  "next_end": null,
  "error": "Invalid cron error: Invalid pattern: ..."
}
Example: Valid expression
{
  "now": "2021-03-01T00:00:00Z",
  "next_start": "2021-03-01T05:00:00Z",
  "next_end": "2021-03-01T05:05:00Z",
  "error": null
}

Saved Visuals

GET /api/v2/saved_visuals/{id} no auth

Get a saved visual

Parameters

NameTypeDescription
id (required, path)stringHex-encoded ObjectId of the saved visual.

Response 200 OK

The saved visual.

SavedVisualOut application/json

NameTypeDescription
id (required)stringMongoDB ObjectId of the saved visual (hex-encoded).
resolution (required)stringTime resolution (e.g. "HOURLY", "MINUTELY").
value_format (required)stringValue format type (e.g. "number", "duration").
value_input (required)string | nullOptional input format specification; null when unset.
series (required)SerieOut[]Data series contained in this visual.
Example
{
  "id": "60f3b3b3b3b3b3b3b3b3b3b3",
  "resolution": "HOURLY",
  "value_format": "number",
  "value_input": null,
  "series": [
    {
      "color": "rgb(0,0,0)",
      "name": "test",
      "renderer": "line",
      "data": [
        {
          "x": "2020-04-12T22:10:57Z",
          "y": 1.0
        }
      ]
    }
  ]
}

Response 400 Bad Request

id is not a valid ObjectId (error is invalid_id).

BadRequestResponse application/json

Response 404 Not Found

No saved visual with this id.

ErrorResponse application/json

GET /api/v2/saved_visuals/{id}/csv no auth

Export a saved visual as CSV

Parameters

NameTypeDescription
id (required, path)stringHex-encoded ObjectId of the saved visual.

Response 200 OK

CSV with a timestamp column (RFC 3339) and one column per series, sorted by timestamp. Series with no point at a timestamp read 0.

Headers:

NameTypeDescription
Content-Dispositionstringattachment; filename="{id}.csv"

string text/csv

Example
timestamp,line one,line two
2020-04-12T22:00:00+00:00,1,10
2020-04-12T22:01:00+00:00,0,10
2020-04-12T22:02:00+00:00,1,0

Response 400 Bad Request

id is not a valid ObjectId (error is invalid_id).

BadRequestResponse application/json

Response 404 Not Found

No saved visual with this id.

ErrorResponse application/json

System

GET /api/v2 no auth

API home page

Response 200 OK

HTML page with API information and links.

string text/html

GET /api/v2/auth bearer

Test authentication

Response 200 OK

The token is valid.

AuthResponse application/json

NameTypeDescription
message (required)stringConfirmation message including the authenticated user ID.
Example
{
  "message": "Authenticated user 6694fca622fa81b8dd2e7178"
}
GET /api/v2/docs no auth

API documentation page

Response 200 OK

HTML page with the full API documentation.

string text/html

GET /api/v2/llms.txt no auth

API documentation for LLMs

Response 200 OK

Structured plain text following the llms.txt convention.

string text/plain

GET /api/v2/openapi.json no auth

OpenAPI specification

Response 200 OK

The OpenAPI document describing every documented endpoint.

any application/json

GET /api/v2/raise_error bearer

Trigger a test error

Response 500 Internal Server Error

Always fails with an internal server error.

ErrorResponse application/json

Type Reference

ActionEdge (object)

A single edge in the upstream or downstream list.

NameTypeDescription
site_id (optional)string | nullSite ID of the peer service if it is one the user has access to, otherwise null. Resolved at ingestion via the in-memory site metadata, so renames do not invalidate historical rows.
site_name (optional)string | nullCurrent display name of the peer site, if accessible to the user.
site_environment (optional)string | nullEnvironment of the peer site (e.g. "production"), if accessible to the user.
service (required)stringPeer service (app name) on the other end of the edge. For peers in the user's accessible sites this reflects the *current* name (looked up from MongoDB at query time); for external peers it falls back to the value the agent reported at ingestion.
namespace (required)stringPeer namespace.
action (required)stringPeer action name.
caller_kind (required)stringOTel span kind on the caller side.
callee_kind (required)stringOTel span kind on the callee side.
edge_type (required)stringSYNC or ASYNC.
count (required)integer (>= 0)Total request count over the time range.
error_count (required)integer (>= 0)Total error count over the time range.
mean (required)numberMean duration in milliseconds (count-weighted across the range).
p_90 (required)number90th percentile duration in milliseconds. Approximation: traffic-weighted average of per-minute pre-computed p_90 values (sum(p_90 * count) / sum(count)).
p_95 (required)number95th percentile duration in milliseconds. Approximation: traffic-weighted average of per-minute pre-computed p_95 values (sum(p_95 * count) / sum(count)).

ActionEdgesApiQuery (object)

Query parameters for listing upstream and downstream action edges.

NameTypeDescription
site_id (required)stringSite ID that anchors the query (the focused action's site).
namespace (required)stringFocused action's "<service>/<namespace>" (e.g. "PublicApi/web"), split on the first / (later / stay in the namespace). Both halves must be non-empty, else 400.
action (required)stringAction name of the focused action.
from (required)string (date-time)Start of the time range (inclusive).
to (required)string (date-time)End of the time range (exclusive).

ActionEdgesResponse (object)

Response shape for the action edges endpoint.

NameTypeDescription
upstream (required)ActionEdge[]Upstream edges (callers into the focused action).
downstream (required)ActionEdge[]Downstream edges (callees the focused action invoked).

ActionRow (object)

A single row in the actions list response, representing aggregated metrics for one namespace/action/digest combination.

NameTypeDescription
namespace (required)stringApplication namespace (e.g. "web", "background").
action (required)stringAction name (e.g. "UsersController#show").
digest (required)stringAction digest identifier.
mean (required)numberMean duration in milliseconds.
throughput (required)numberTotal request count in the queried time range.
error_rate (required)numberError percentage (0.0–100.0).
has_npo (required)booleanWhether an N+1 query has been detected for this action.

ActionsParams (object)

Identifies the slow event whose actions to list.

NameTypeDescription
site_id (required)stringSite to query.
from (required)string (date-time)Start of the time range; clamped to the account's data retention.
to (required)string (date-time)End of the time range; clamped to now.
digest (required)stringDigest of the slow event, as returned by the slow events endpoint.

ActionsQuery (object)

Query parameters for listing performance actions with aggregated metrics.

NameTypeDescription
site_id (required)stringSite identifier to scope the query to.
from (required)string (date-time)Start of the time range (inclusive).
to (required)string (date-time)End of the time range (inclusive).
namespaces (optional)string[]Namespaces to filter by. When empty, all namespaces are included.
revision (optional)string | nullOptional deployment revision to filter by.
action (optional)string | nullOptional action name to filter by.

Aggregation (enum)

The aggregation function applied when combining multiple values within a time bucket.

Serialized as uppercase strings (e.g. "SUM", "AVERAGE"). When no aggregation is explicitly set on a selector, a default is chosen based on the Field type.

"SUM" | "AVERAGE" | "MIN" | "MAX" | "FIRST" | "LAST"

AnomalyConfig (object)

Detector tuning for one anomaly run; each detector reads only its own fields.

NameTypeDescription
ceiling (optional)number | nullThe value a series is projected to cross, e.g. 100 for disk-usage %. The trend and time_to_threshold detectors produce no detections without it.
min_fit_quality (optional)number (>= 0, <= 1)Minimum R² below which the trend detector does not trust a projection. Default: 0.8.
spike_threshold (optional)number (> 0)Modified z-score at/above which the spike detector flags a point. Default: 3.5.
baseline_until (optional)integer | nullUnix seconds; spike and rate baselines use only points before it, and only points at/after it are flagged (e.g. a deploy time). Unset: the whole window.
changepoint_threshold (optional)number (> 0)MAD-scaled shift magnitude at/above which the changepoint detector reports a level shift. Default: 3.5.
horizon_minutes (optional)number (> 0) | nullThe time_to_threshold detector fires when ceiling is projected to be crossed within this many minutes; it produces no detections without it.
rate_numerator (optional)string | nullRate detector numerator metric (event count), e.g. "error_count". Required, with rate_denominator, for the rate detector to produce detections.
rate_denominator (optional)string | nullRate detector denominator metric (throughput), e.g. "trace_duration" selected with the COUNT field, paired with rate_numerator by tags.
rate_threshold (optional)number (> 0)Proportion z-score at/above which the rate detector flags a bucket. Default: 3.5.
rate_min_denominator (optional)number (>= 1)Minimum throughput a bucket needs before the rate detector tests it. Default: 20.0.

AnomalyPoint (object)

A single anomalous point flagged by a point-anomaly detector (e.g. spike).

The changepoint detector reuses this struct to describe a detected level shift, reinterpreting the fields: at is the shift boundary, baseline the robust level *before* the shift, value the robust level *after* it, and z_score the MAD-scaled shift magnitude (sign = direction: positive = stepped up, negative = stepped down).

The rate detector likewise reuses it for an anomalous rate bucket: at is the bucket, value the observed rate (numerator / denominator), baseline the robust baseline rate, and z_score the one-sample proportion z (sign = direction: positive = rate rose, negative = fell).

NameTypeDescription
at (required)integerUnix-seconds timestamp of the anomalous point (spike), shift boundary (changepoint) or rate bucket (rate).
value (required)numberThe point's value (spike), the robust level *after* the shift (changepoint) or the observed rate (rate).
z_score (required)numberRobust modified z-score (Iglewicz–Hoaglin) for a spike, the MAD-scaled shift magnitude for a changepoint, or the one-sample proportion z for a rate; its sign carries direction (positive = above the baseline / stepped up / rate rose, negative = below it / stepped down / rate fell).
baseline (required)numberRobust baseline the point deviates from (spike), the robust level *before* the shift (changepoint) or the robust baseline rate (rate).

AnomalyRequest (object)

The series to analyse, the detector to run and its tuning.

NameTypeDescription
query (required)TimeseriesQueryThe series to analyse; at most 30 days. Empty buckets are never filled, and projections are measured from to.
detector (optional)DetectorKindWhich detection algorithm to run. Default: "trend".
config (optional)AnomalyConfigDetector tuning (e.g. the ceiling a trend is projected to cross).

AnomalyResponse (object)

The analysed series and its detections.

NameTypeDescription
series (required)TimeseriesThe fetched series, to overlay the detections on.
detections (required)Detection[]The detections produced by the detector, one per anomalous series (possibly empty).

AttributeRequirement (one of)

Whether a group of attribute keys filters the slow events or is only returned.

VariantDescription
{ Required: string[] }Filters spans to those with at least one of these keys set to a non-empty value; the value is returned.
{ Optional: string[] }Always returned (empty when none of the keys is set); does not filter spans.

AuthResponse (object)

Response body for the authentication test endpoint.

NameTypeDescription
message (required)stringConfirmation message including the authenticated user ID.
Example
{
  "message": "Authenticated user 6694fca622fa81b8dd2e7178"
}

BadRequestResponse (object)

Standard body for HTTP 400 Bad Request responses. Branch on the stable error slug, display message as-is, and read per-error structured data from details.

NameTypeDescription
error (required)stringStable, machine-readable slug identifying the specific error case.
message (required)stringHuman-readable message. Safe to log or display to end users.
details (optional)anyPer-error structured payload. Shape varies by error.

Container (object)

A container within a Kubernetes pod.

NameTypeDescription
name (required)stringName of the container.
status (required)ContainerStatusCurrent status of the container.
exit_code (required)integerExit code of the container process (0 means success).
reason (required)stringHuman-readable reason for the container's current status.

ContainerStatus (enum)

Status of a container within a pod.

"Running" | "Terminated" | "Waiting" | "Unknown"

CronQuery (object)

Request body for testing a cron schedule expression.

NameTypeDescription
cron (required)stringCron expression to test (e.g. "0 * * * *").
wait_time_minutes (required)integerWait time in minutes for the check-in window.
timestamp (optional)integer | nullUnix timestamp in seconds to evaluate against. Defaults to the current time.
timezone (optional)stringIANA timezone for cron evaluation (e.g. "Europe/Amsterdam"). An empty string means UTC. Default: "".

CronQueryResult (object)

Result of evaluating a cron schedule expression.

NameTypeDescription
now (required)string (date-time)The time evaluated against: timestamp, or the current time when omitted or out of range.
next_start (required)string (date-time) | nullNext scheduled start time; null when error is set.
next_end (required)string (date-time) | nullNext scheduled end time (start + wait time); null when error is set.
error (required)string | nullWhy no window could be computed (invalid expression, timezone or timestamp); null on success.

DataPointOut (object)

A single data point in a saved visual series.

NameTypeDescription
x (required)string (date-time)Timestamp of this data point.
y (required)numberPrimary value.
y0 (optional)numberLower bound value for area charts.
y1 (optional)numberUpper bound value for area charts.

DeployStatsResult (object)

Aggregated metrics for one deployment. Without recorded samples, throughput is the error count, error_rate 100 (0 without errors) and mean 0.

NameTypeDescription
throughput (required)integer (>= 0)Recorded requests and background jobs.
mean (required)numberMean duration in milliseconds.
error_rate (required)numberError rate as a percentage (0-100).

Detection (object)

A single anomaly detected on one series.

NameTypeDescription
kind (required)DetectorKindWhich detector produced this detection.
series_id (required)stringThe id of the series this detection refers to.
score (required)numberDetector-specific score: fit quality 0.0..=1.0 (trend), urgency 0.0..=1.0 (time_to_threshold) or the max |z-score| (spike, changepoint, rate). Compare only within one kind; severity is comparable across detectors.
severity (required)SeveritySeverity bucket.
projection (optional)Projection | nullForward projection, from the trend and time_to_threshold detectors.
points (optional)AnomalyPoint[]The series' flagged points, from the spike, changepoint and rate detectors.
explanation (required)stringHuman-readable explanation, e.g. "disk_usage is projected to cross 100 in ~6 days".

DetectorKind (enum)

Which detection algorithm produced (or is requested to produce) a result.

"trend" | "spike" | "changepoint" | "time_to_threshold" | "rate"

ErrorLocation (object)

Error incident where a trace appears.

NameTypeDescription
site_id (required)stringSite identifier.
incident_number (required)integerIncident number that groups related errors.
exception_name (required)stringName of the exception (e.g. "RuntimeError").
incident_digests (required)string[]Digests from this trace that belong to this incident, matching the appsignal.incident_digest attribute on exception events.

ErrorResponse (object)

Error body returned for 401, 404 and 500 responses.

NameTypeDescription
error (required)stringHuman-readable error message.

ErrorTraceQuery (object)

The error incident whose trace to fetch.

NameTypeDescription
site_ids (required)string[]Sites to search; the token must have access to all of them.
digests (required)string[]Digests of the error incident.
trace_id (optional)string | nullA specific trace ID, or "last" (the default) for the most recent trace with a matching digest.

ErrorTracesQuery (object)

Filters and pagination for listing the traces of error incidents.

NameTypeDescription
site_ids (required)string[]Sites to search; the caller must have access to all of them.
digests (required)string[]Digests of the error incidents to list traces for.
query (optional)string | nullFilter query; supports revision and tag filters.
pagination (required)Pagination_TracePaginationPage size (capped at 100), order and cursor.

EventGroupItem (object)

One event in the event group list.

NameTypeDescription
digest (required)stringDigest identifying the event.
group (required)stringGroup the event belongs to (e.g. active_record), derived from name.
name (required)stringEvent name (e.g. sql.active_record).
title (optional)string | nullHuman-readable title.
body (optional)string | nullEvent body (e.g. the query text).
count (required)integer (>= 0)Number of occurrences in the time range.
mean (required)numberWeighted mean duration in milliseconds.
impact (required)numberTotal time spent in milliseconds (count * mean).

EventGroupListQuery (object)

Query for the event group list.

NameTypeDescription
site_id (required)stringSite to fetch events for, as a BSON ObjectId.
from (required)string (date-time)Start of the time range, rounded down to the start of its resolution bucket.
to (required)string (date-time)End of the time range (inclusive). Capped at now, then rounded up to the end of its resolution bucket; MINUTELY stops at the end of the minute 2 minutes ago.
resolution (optional)Resolution | nullSets how from and to are rounded. MINUTELY fits ranges of up to 12 hours within the last 2 days; when absent or unfit, MINUTELY is used if it fits, otherwise HOURLY.
groups (required)string[]Event groups to include (e.g. ["active_record", "moped"]). At least one.
order (optional)EventGroupOrderField to rank and truncate by. Default: "IMPACT".
limit (optional)integerMaximum number of rows to return. Clamped to 1–1000. Default: 1000.

EventGroupOrder (enum)

Field the event group list is ranked and truncated by.

"IMPACT" | "MEAN" | "THROUGHPUT"

Field (enum)

The specific measurement within a metric to retrieve.

A gauge metric only has a Gauge field; a counter metric only has a Counter field; a measurement metric has statistical fields such as Mean, Count, Min, Max and percentiles.

Serialized as uppercase strings (e.g. "GAUGE", "P95").

"GAUGE" | "COUNTER" | "MEAN" | "COUNT" | "MIN" | "MAX" | "P99" | "P95" | "P90" | "P80" | "P75" | "P70" | "P60" | "P50" | "P40" | "P30" | "P20" | "P10"

FillMode (enum)

How missing data points (empty time buckets) are filled when assembling a series.

"ZERO" | "PREVIOUS" | "NONE"

GroupBy (one of)

Specifies how rows in a List are grouped.

VariantDescription
{ Tag: string }Group by the value of a specific tag (e.g. "hostname"). The tag value becomes part of the row's id and group map.
"Name"Group by the metric name itself.

IncidentErrorRow (object)

A single incident digest's error count within the queried selection.

NameTypeDescription
incident_digest (required)stringThe incident digest.
namespace (required)stringApplication namespace the incident occurred in.
revision (required)stringMost recent deployment revision the incident occurred in within the queried time range.
error_count (required)integer (>= 0)Total error occurrences for this digest across the queried time range, summed across every matching revision.

IncidentErrorsQuery (object)

Query for the incident error list.

NameTypeDescription
site_id (required)stringSite to fetch incident error counts for.
from (required)string (date-time)Start of the time range (inclusive).
to (required)string (date-time)End of the time range (inclusive).
namespaces (optional)string[]Namespaces to filter by. When empty, all namespaces are included.
revision (optional)string | nullDeployment revision to filter by. When absent, all revisions are included.

IncidentKind (enum)

Whether something represents an exception or a performance incident.

"exception" | "performance"

List (object)

A tabular collection of Rows, returned for list-view queries.

Each row represents an aggregated metric value grouped by tags, used for displaying metric data in table format in the frontend.

NameTypeDescription
resolution (required)ResolutionThe time interval used for aggregation (e.g. one minute, one hour).
from (required)string (date-time)Start of the queried time range (inclusive).
to (required)string (date-time)End of the queried time range (inclusive).
rows (required)Row[]The rows of aggregated metric data.

ListQuery (object)

Query for fetching aggregated metric data in tabular form, used to populate list views.

Unlike TimeseriesQuery, which returns data points over time, a ListQuery returns one Row per unique combination of group-by values, with each row containing aggregated metric values.

NameTypeDescription
from (required)string (date-time)Start of the time range to query (inclusive).
to (required)string (date-time)End of the time range to query (inclusive).
resolution (optional)Resolution | nullThe desired interval for aggregation. When null, a resolution is automatically chosen based on the time range.
site_id (required)stringThe site to fetch metrics for.
select (required)ListSelector[]Selectors that define which metrics and fields to fetch. Each selector contributes a key-value entry in the resulting Row::data map.
group_by (required)GroupBy[]How to group metrics into rows. Each unique combination of group-by values produces one Row, whose id is derived from the grouped values.
limit (optional)integer | nullMaximum number of rows to return. When null, no limit is applied.
pagination (optional)Pagination_MetricsPagination | nullId-cursor paging (per_page 1 to 1000, rows ordered by id); takes precedence over limit. A page shorter than per_page is the last.

ListSelector (object)

Selects a specific metric, field and tag combination to include in a list response.

Each selector contributes one entry in the resulting Row::data map, keyed by id.

NameTypeDescription
id (required)stringThe key under which this selector's aggregated value appears in Row::data (e.g. "mean", "count").
name (required)stringThe metric name to query (e.g. "cpu_usage", "transaction_duration").
tags (required)map<string, string>Tag key-value pairs to filter on. May contain wildcard values (*) for tags that are included in the query's group_by.
field (required)FieldThe specific measurement field to retrieve (e.g. Gauge, Mean, P95).
aggregation (optional)Aggregation | nullThe aggregation function to apply when combining values within a time bucket. When null, a default is chosen based on the field type.

LocatorQuery (object)

The trace to locate and the sites to search.

NameTypeDescription
site_ids (required)string[]Sites to search across; the token must have access to all of them.
trace_id (required)stringThe trace to locate.

LogLine (object)

A log line; its attributes live inside json.

NameTypeDescription
timestamp (required)string (date-time)When the line was logged, with millisecond precision.
id (optional)string | nullUnique ID of the line.
source_id (optional)string | nullLog source the line was ingested through.
group (optional)string | nullGroup the line belongs to, such as the app or service name.
severity (optional)string | nullSeverity level, such as info or error.
message (optional)string | nullThe log message.
hostname (optional)string | nullHost that emitted the line.
json (optional)string | nullThe line's attributes as a JSON-encoded string.

LogStreamEvent (one of)

One server-sent event of a streamed log search, as the JSON data of the event.

VariantDescription
{ data: QueryProgress, type: "Progress" }Query statistics, sent after every searched time chunk.
{ data: LogLine[], type: "Data" }Log lines found in the last searched time chunk.
{ type: "Complete" }The search finished; always the last event.
{ data: string, type: "error" }The search failed; followed by Complete.

LogsQueryParams (object)

Filters and pagination for searching log lines.

NameTypeDescription
site_id (required)stringSite to search; an empty value returns no log lines.
from (optional)string (date-time) | nullStart of the time range; defaults to the start of the account's log retention and is clamped to it and now.
to (optional)string (date-time) | nullEnd of the time range; defaults to now and is clamped to from..now.
source_ids (required)string[]Log sources to search; an empty list returns no log lines.
query (required)stringLog search query; an empty string matches every line.
pagination (required)Pagination_LogPaginationPage size, order and cursor.

MetadataDistributions (one of)

A bare JSON array of key rows or value rows.

VariantDescription
MetadataKeyDistribution[]
MetadataValueDistribution[]

MetadataDistributionsQuery (object)

Query for the metadata distribution list.

NameTypeDescription
site_id (required)stringSite to fetch metadata for.
incident_digests (required)string[]Incident digests to include.
from (required)string (date-time)Start of the time range (inclusive).
to (optional)string (date-time) | nullEnd of the time range (inclusive). Defaults to now.
group_by (required)MetadataGroupByWhich dimension to group by (KEY or VALUE).
metadata_key (optional)string | nullThe metadata key to filter values by. Required when group_by is VALUE; ignored in KEY mode.
limit (optional)integer | nullMaximum rows to return, clamped to 1–1000. Defaults to 10 in VALUE mode; in KEY mode absent means no limit.

MetadataGroupBy (enum)

Which dimension the metadata distribution query groups by.

"KEY" | "VALUE"

MetadataKeyDistribution (object)

A single metadata key row (KEY mode).

NameTypeDescription
key (required)string | nullThe metadata key (e.g. hostname).
total (required)integer | nullTotal occurrences across all values.
unique (required)integer | nullNumber of distinct values.

MetadataValueDistribution (object)

A single metadata value row (VALUE mode).

NameTypeDescription
key (required)string | nullThe metadata value (e.g. frontend1), under the field name key.
value (required)integer | nullOccurrences of this value.

MetricType (enum)

The category of a metric, which determines how its values are interpreted.

Serialized as uppercase strings (e.g. "GAUGE", "COUNTER", "MEASUREMENT").

"GAUGE" | "COUNTER" | "MEASUREMENT"

MetricTypeAndTags (object)

Metadata describing a metric's type and the tag combinations it can be queried with.

Used to communicate which timeseries are available for a given metric name, so consumers know what tags they can filter or group by.

NameTypeDescription
metric_type (required)MetricTypeThe category of the metric (gauge, counter or measurement).
available_tags (required)string[][]The tag combinations available for this metric. Each inner vector represents one valid combination of tag names (e.g. [["hostname"], ["hostname", "namespace"]]).

NodesQuery (object)

Query for fetching Kubernetes node metrics.

NameTypeDescription
site_id (required)stringSite identifier to query nodes for.
from (required)string (date-time)Start of the time range (inclusive).
to (required)string (date-time)End of the time range (exclusive).
node_name (optional)stringOptional node name filter. Empty means all nodes.

NodesRow (object)

The latest Kubernetes node metrics within the requested time range.

NameTypeDescription
timestamp (required)string (date-time)Timestamp of the metrics snapshot.
node_name (required)stringName of the Kubernetes node.
cpu_usage_nano_cores (required)numberCPU usage in nanocores.
memory_rss_bytes (required)numberResident set size (RSS) memory in bytes.
memory_usage_bytes (required)numberTotal memory usage in bytes.
memory_working_set_bytes (required)numberWorking set memory in bytes.
memory_page_faults (required)numberNumber of page faults.
memory_major_page_faults (required)numberNumber of major page faults.
fs_used_bytes (required)numberFilesystem space used in bytes.
fs_available_bytes (required)numberFilesystem space available in bytes.
fs_capacity_bytes (required)numberTotal filesystem capacity in bytes.
fs_inodes_free (required)numberNumber of free filesystem inodes.
fs_inodes_used (required)numberNumber of used filesystem inodes.
fs_inodes (required)numberTotal number of filesystem inodes.
network_rx_bytes (required)numberNetwork bytes received.
network_tx_bytes (required)numberNetwork bytes transmitted.
phase (required)integer (>= 0)Node phase as a numeric value.

Order (enum)

Sort order for query results

Used across multiple domains for paginated and ordered queries.

"ASC" | "DESC"

OwnerReference (object)

A Kubernetes owner reference linking a pod to its controller.

NameTypeDescription
name (required)stringName of the owning resource (e.g. "my-deployment-abc123").
kind (required)stringKind of the owning resource (e.g. "ReplicaSet", "DaemonSet").
namespace (required)stringNamespace of the owning resource.

Pagination_LogPagination (object)

Keyset pagination settings, generic over each domain's cursor type.

NameTypeDescription
per_page (required)integer (>= 1)Number of results per page.
order (required)OrderSort order for results.
cursor (required){ time: string (date-time) | null, id: string | null }Pagination cursor for log lines.

Pagination_MetricsPagination (object)

Keyset pagination settings, generic over each domain's cursor type.

NameTypeDescription
per_page (required)integer (>= 1)Number of results per page.
order (required)OrderSort order for results.
cursor (required){ id: string | null }Pagination cursor type for metric lists.

Pagination_TracePagination (object)

Keyset pagination settings, generic over each domain's cursor type.

NameTypeDescription
per_page (required)integer (>= 1)Number of results per page.
order (required)OrderSort order for results.
cursor (required){ time: string (date-time) | null } | { duration: number | null }Pagination cursor type for traces.

PerformanceLocation (object)

Performance action where a trace appears.

NameTypeDescription
site_id (required)stringSite identifier.
namespace (required)stringNamespace of the action (e.g. "web").
action_name (required)stringName of the action (e.g. "POST /api/users").

PerformanceTraceQuery (object)

The performance action whose trace to fetch.

NameTypeDescription
site_ids (required)string[]Sites to search; the token must have access to all of them.
action_name (required)stringName of the action, e.g. POST /api/users.
namespace (required)stringNamespace of the action, e.g. web.
trace_id (optional)string | nullA specific trace ID, or "last" (the default) for the most recent trace of the action.

PerformanceTracesQuery (object)

Filters and pagination for listing the performance traces of one action.

NameTypeDescription
site_ids (required)string[]Sites to search; the caller must have access to all of them.
action_name (required)stringAction to list traces for, e.g. POST /api.
namespace (required)stringNamespace the action belongs to, e.g. web.
query (optional)string | nullFilter query; supports revision and tag filters.
duration_ms (optional)integer | nullOnly return traces at least this long, in milliseconds.
from (optional)string (date-time) | nullStart of the time range.
to (optional)string (date-time) | nullEnd of the time range.
pagination (required)Pagination_TracePaginationPage size (capped at 100), order and cursor.

PodOverviewRow (object)

A Kubernetes pod overview with metadata and status information.

NameTypeDescription
timestamp (required)string (date-time)Timestamp of the metrics snapshot.
node_name (required)stringName of the node this pod is running on.
pod_name (required)stringName of the pod.
pod_namespace (required)stringKubernetes namespace the pod belongs to.
pod_uuid (required)stringUnique pod identifier.
phase (required)PodPhaseCurrent phase of the pod lifecycle.
labels (required)map<string, string>Kubernetes labels attached to the pod.
owner_references (required)OwnerReference[]Owner references (e.g. Deployment, ReplicaSet) for this pod.
containers (required)Container[]Containers running in this pod.
state (required)PodStateDerived pod state based on phase and container statuses.
pod_restart_count (required)integer (>= 0)Total number of container restarts for this pod.
pod_uptime_seconds (required)integer (>= 0)Pod uptime in seconds.

PodOverviewsQuery (object)

Query for fetching Kubernetes pod overview data.

NameTypeDescription
site_id (required)stringSite identifier to query pod overviews for.
from (required)string (date-time)Start of the time range (inclusive).
to (required)string (date-time)End of the time range (exclusive).
namespaces (optional)string[]Optional namespace filter. Empty means all namespaces.
query (optional)stringOptional substring of the pod name to match. Empty means all pods.

PodPhase (enum)

Kubernetes pod lifecycle phase.

"Running" | "Succeeded" | "Pending" | "Failed" | "Unknown"

PodState (enum)

Derived state of a pod, combining phase and container statuses.

"Unknown" | "Pending" | "Running" | "Succeeded" | "Failed"

PodsQuery (object)

Query for fetching detailed Kubernetes pod metrics.

NameTypeDescription
site_id (required)stringSite identifier to query pods for.
from (required)string (date-time)Start of the time range (inclusive).
to (required)string (date-time)End of the time range (exclusive).
namespaces (optional)string[]Optional namespace filter. Empty means all namespaces.
pod_name (optional)stringOptional substring of the pod name to match. Empty means all pods.
node_names (optional)string[]Optional node name filter. Empty means all nodes.
state (optional)PodState | nullOptional pod state filter, applied to every snapshot in the time range rather than only the latest.

PodsRow (object)

The latest detailed Kubernetes pod metrics within the requested time range.

NameTypeDescription
timestamp (required)string (date-time)Timestamp of the metrics snapshot.
pod_name (required)stringName of the pod.
pod_namespace (required)stringKubernetes namespace the pod belongs to.
node_name (required)stringName of the node this pod is running on.
cpu_usage_nano_cores (required)numberCPU usage in nanocores.
cpu_usage_core_nano_seconds (required)numberCumulative CPU usage in core-nanoseconds.
memory_rss_bytes (required)numberResident set size (RSS) memory in bytes.
memory_usage_bytes (required)numberTotal memory usage in bytes.
memory_working_set_bytes (required)numberWorking set memory in bytes.
memory_page_faults (required)numberNumber of page faults.
memory_major_page_faults (required)numberNumber of major page faults.
ephemeral_storage_used_bytes (required)numberEphemeral storage used in bytes.
ephemeral_storage_capacity_bytes (required)numberEphemeral storage capacity in bytes.
network_rx_bytes (required)numberNetwork bytes received.
network_tx_bytes (required)numberNetwork bytes transmitted.
process_count (required)numberNumber of running processes.
phase (required)PodPhaseCurrent phase of the pod lifecycle.
state (required)PodStateDerived pod state based on phase and container statuses.
containers (required)Container[]Containers running in this pod.
pod_restart_count (required)integer (>= 0)Total number of container restarts for this pod.
pod_uptime_seconds (required)integer (>= 0)Pod uptime in seconds.

Point (object)

A single data point in a timeseries, representing a value at a specific moment in time.

NameTypeDescription
timestamp (required)string (date-time)The moment in time this data point represents, aligned to the query's timeframe resolution.
value (required)numberThe numeric metric value at this timestamp.

Projection (object)

A forward projection of a fitted linear trend toward a ceiling.

NameTypeDescription
slope_per_second (required)numberFitted slope, in value-units per second.
fit_quality (required)numberGoodness-of-fit (R², 0.0..=1.0) of the linear fit the projection rests on.
ceiling (required)numberThe ceiling the series is projected to cross.
cross_at (required)integerUnix-seconds timestamp at which the series is projected to cross the ceiling.
seconds_to_cross (required)integerSeconds from the reference time (now) until the projected crossing.

QueryProgress (object)

Progress of a log search, which runs over the time range in chunks.

NameTypeDescription
rows_read (required)integer (>= 0)Number of rows read so far across all chunks.
bytes_read (required)integer (>= 0)Number of bytes read so far across all chunks.
total_rows_to_read (required)integer (>= 0)Estimated total rows to read across all chunks.
progress_percentage (required)numberOverall progress as a percentage (0.0–100.0).
processed_chunks (required)integer (>= 0)Number of time chunks processed so far.
total_chunks (required)integer (>= 0)Total number of time chunks to process.
rows_returned (required)integer (>= 0)Number of rows included in the response so far.

RelatedTraceItem (object)

Related trace item showing an action where a slow event appears.

NameTypeDescription
action_name (required)stringName of the action containing the slow event.
namespace (required)stringNamespace the action belongs to.
count (required)integer (>= 0)Number of times the slow event appeared in this action.
trace_id (required)stringTrace ID of the most recent occurrence.
start_time (required)stringStart time of the most recent occurrence. Example: "2024-01-01 00:00:00.123456789".

Resolution (enum)

Time resolution that metrics can be returned in

"HOURLY" | "MINUTELY" | "DAILY"

Row (object)

A single row in a List, representing aggregated metric values for one group of tags.

Rows from different metric sources can be merged together using Row::merge, combining their data maps into a single row.

NameTypeDescription
id (required)stringUnique identifier for this row, typically derived from the group tag values.
group (required)map<string, string>Tag key-value pairs that define this row's grouping (e.g. {"hostname": "frontend1"}).
data (required)map<string, number>Aggregated metric values keyed by selector id (e.g. {"mean": 42.5, "count": 100.0}).

SampleKind (enum)

Specifies whether to search errors, performance samples, or both.

"all" | "exception" | "performance"

SavedVisualOut (object)

JSON response representation of a saved visual (chart).

NameTypeDescription
id (required)stringMongoDB ObjectId of the saved visual (hex-encoded).
resolution (required)stringTime resolution (e.g. "HOURLY", "MINUTELY").
value_format (required)stringValue format type (e.g. "number", "duration").
value_input (required)string | nullOptional input format specification; null when unset.
series (required)SerieOut[]Data series contained in this visual.

SearchRequest (object)

Request body for the unified search endpoint. Legacy samples match from and to by their minute or hour bucket rather than their exact time.

NameTypeDescription
site_ids (required)string[]Sites to search, as BSON ObjectIds: at least one, all in one account.
query (optional)string | nullBare words match an action name, exception name or tag value exactly, as one phrase. action:, error: and tag: match one field exactly, message: a case-insensitive whole-word phrase; quote values with spaces.
namespace (optional)string | nullOptional namespace filter (e.g. "web", "background").
kind (optional)SampleKindSample kind filter. Default: "all".
from (optional)string (date-time) | nullStart of the time range (inclusive). Defaults to, and is clamped to, the start of the account's retention.
to (optional)string (date-time) | nullEnd of the time range (inclusive). Defaults to now.
limit (optional)integer (>= 0)Maximum number of results to return. Clamped to at most 2000. Default: 50.

SearchResult (object)

A search result item returned by the unified search endpoint.

NameTypeDescription
result_type (required)IncidentKindWhether this is an exception or performance result.
source (required)SearchResultSourceWhether this result came from a trace or a legacy sample.
trace_id (required)stringIdentifier to open the trace or sample with.
site_id (required)stringSite identifier this result belongs to.
namespace (optional)string | nullNamespace the result belongs to (e.g. "web", "background").
revision (optional)string | nullGit revision or deployment identifier active when the result was recorded.
action_name (optional)string | nullAction name of the result (e.g. "POST /api/users").
time (required)string (date-time)Timestamp when the result was recorded.
duration (required)numberDuration in milliseconds of the matched span or sample.
tags (required)map<string, string>User-defined tags.
exception_name (optional)string | nullException name; present for exception results only.
exception_message (optional)string | nullException message; present for exception results only.
incident_digest (optional)string | nullIncident digest used to link to the incident page.
incident_number (optional)integer | nullIncident number, when the incident digest matches a known incident.

SearchResultSource (enum)

Whether a search result originates from an OpenTelemetry trace or a legacy sample.

"trace" | "sample"

Serie (object)

A single timeseries: a named sequence of points that share the same tags and field.

NameTypeDescription
id (required)stringUnique identifier for this series, composed of the metric name, sorted tags and field (e.g. "cpu_usage{hostname=frontend1};GAUGE").
name (required)stringThe metric name (e.g. "cpu_usage", "transaction_duration").
tags (required)map<string, string>Tag key-value pairs that distinguish this series from others with the same name (e.g. {"hostname": "frontend1"}).
max (required)numberThe maximum value across all data points in this series.
min (required)numberThe minimum value across all data points in this series.
field (required)FieldThe type of measurement this series represents (e.g. gauge, mean, a percentile).
data (required)Point[]The ordered sequence of data points, aligned to the query's timeframe resolution.

SerieOut (object)

A single data series within a saved visual.

NameTypeDescription
color (required)stringSeries color as a CSS color string (e.g. "rgb(0,0,0)").
name (required)stringDisplay name of the series.
renderer (required)stringRenderer type (e.g. "line", "area").
data (required)DataPointOut[]Ordered data points in this series.

Severity (enum)

Severity bucket for a detection, derived from how imminent / large the anomaly is.

"info" | "warning" | "critical"

SiteEdge (object)

A single service-level edge for the site dependency map. Unlike ActionEdge, this is aggregated across all actions in a service and carries no namespace or action name.

NameTypeDescription
site_id (optional)string | nullSite ID of the peer service if accessible to the user, else null.
site_name (optional)string | nullCurrent display name of the peer site, if accessible to the user.
site_environment (optional)string | nullEnvironment of the peer site (e.g. "production"), if accessible to the user.
service (required)stringPeer service name (app name on the other end of the edge).
count (required)integer (>= 0)Total request count over the time range.
error_count (required)integer (>= 0)Total error count over the time range.
mean (required)numberMean duration in milliseconds (count-weighted across the range).
p_90 (required)number90th percentile duration in milliseconds. Approximation: traffic-weighted average of per-minute pre-computed p_90 values (sum(p_90 * count) / sum(count)).
p_95 (required)number95th percentile duration in milliseconds. Approximation: traffic-weighted average of per-minute pre-computed p_95 values (sum(p_95 * count) / sum(count)).

SiteEdgesApiQuery (object)

Query parameters for listing site-level service dependency edges.

NameTypeDescription
site_id (required)stringSite ID that anchors the query.
from (required)string (date-time)Start of the time range (inclusive).
to (required)string (date-time)End of the time range (exclusive).

SiteEdgesResponse (object)

Response shape for the site edges endpoint.

NameTypeDescription
upstream (required)SiteEdge[]External services calling into this site (upstream).
downstream (required)SiteEdge[]External services this site calls (downstream).
internal (required)SiteEdge[]Internal services this site calls within itself (both sides share the focused site_id).

SlowEventItem (object)

A slow event aggregation (e.g. a slow database query).

NameTypeDescription
digest (required)stringHash digest identifying the slow event's operation.
count (required)integer (>= 0)Number of times this slow event occurred in the time range.
mean (required)numberMean duration of this slow event in milliseconds.
impact (required)numberRelative impact score (higher means more total time spent).
* (optional)stringAdditional attributes for the slow event (e.g. query body, category).

SlowEventsParams (object)

Filters for listing slow events such as slow database queries.

NameTypeDescription
site_id (required)stringSite to query.
from (required)string (date-time)Start of the time range; clamped to the account's data retention.
to (required)string (date-time)End of the time range; clamped to now.
span_kind (optional)SpanKind | nullOnly return spans of this kind.
wanted_attributes (required)map<string, AttributeRequirement>Attributes to return, keyed by category (e.g. payload, system). The key appsignal.library returns what follows appsignal/ in the span's scope (e.g. active_record), empty for other scopes.
excluded_attributes (optional)string[]Attribute keys to exclude; a span is excluded if any listed key is present.

SpanKind (enum)

The OpenTelemetry kind of a span, as a PascalCase string.

Client and Server are synchronous calls; Producer and Consumer are async jobs.

"Client" | "Server" | "Internal" | "Producer" | "Consumer"

StatsQuery (object)

Query for the aggregated metrics of one deployment revision, over all retained data.

NameTypeDescription
site_id (required)stringSite identifier, as a BSON ObjectId.
revision (required)stringGit revision or deployment identifier.
namespace (optional)string | nullOptional namespace filter (e.g., "web", "api"). Absent means all namespaces.

Timeseries (object)

A collection of series over a time range, aligned to the given resolution.

NameTypeDescription
resolution (required)ResolutionThe time interval between consecutive data points (e.g. one minute, one hour).
from (required)string (date-time)Start of the queried time range (inclusive).
to (required)string (date-time)End of the queried time range (inclusive).
series (required)Serie[]The individual timeseries that matched the query.

TimeseriesQuery (object)

Query for fetching timeseries metric data, used to populate graphs.

NameTypeDescription
from (required)string (date-time)Start of the time range to query (inclusive).
to (required)string (date-time)End of the time range to query (inclusive).
resolution (optional)Resolution | nullThe desired interval between data points. When null, a resolution is automatically chosen based on the time range.
site_id (required)stringThe site to fetch metrics for.
select (required)TimeseriesSelector[]Selectors that define which metrics and fields to fetch.
limit (optional)integer | nullMaximum number of unique series to return. When null, no limit is applied.

TimeseriesSelector (object)

Selects a specific metric, field and tag combination to include in a timeseries response.

NameTypeDescription
name (required)stringThe metric name to query (e.g. "cpu_usage", "transaction_duration").
tags (required)map<string, string>Tag key-value pairs to filter on (e.g. {"hostname": "frontend1"}).
field (required)FieldThe specific measurement field to retrieve (e.g. GAUGE, MEAN, P95).
aggregation (optional)Aggregation | nullThe aggregation function to apply when combining values within a time bucket. When omitted, a default is chosen based on the field (e.g. SUM for counters, AVERAGE for percentiles).
draw_null_as_zero (optional)booleanLegacy fill policy: true fills missing data points with 0.0, false carries the previous value forward. Superseded by fill. Default: true.
fill (optional)FillMode | nullPreferred fill policy; takes precedence over draw_null_as_zero when set.

TooManyRequestsResponse (object)

Error body returned for 429 responses.

NameTypeDescription
error (required)stringHuman-readable error message.
suggestion (optional)string | nullA cheaper way to write the request's filter. Only the trace list endpoints set it, and only for a filter with a known indexed rewrite.

Trace (object)

A trace summary representing a root span.

NameTypeDescription
span_id (required)stringUnique identifier for the root span.
trace_id (required)stringUnique identifier for the entire trace.
site_id (required)stringSite identifier this trace belongs to.
namespace (optional)string | nullNamespace the trace belongs to (e.g. "web", "background").
revision (optional)string | nullGit revision or deployment identifier active when the trace was recorded.
action_name (optional)string | nullAction name for the trace (e.g. "POST /api/users").
time (required)string (date-time)Timestamp when the trace started.
duration (required)numberTotal duration of the trace in milliseconds.
tags (required)map<string, string>User-defined tags extracted from span attributes.
has_npo (required)booleanWhether this trace contains N+1 query detection results.

TraceLocation (object)

Locations of a trace in performance and error contexts.

NameTypeDescription
performance (required)PerformanceLocation[]Performance actions where this trace appears.
errors (required)ErrorLocation[]Error incidents where this trace appears.

TraceQuery (object)

The trace to fetch and the sites to search.

NameTypeDescription
site_ids (required)string[]Sites to search; the token must have access to all of them.
trace_id (required)stringThe trace to fetch.
include_linked_spans (optional)booleanAlso return spans from other traces that link to this one.

TraceSpan (object)

A complete span with all its attributes, events and links.

NameTypeDescription
start_time (required)string (date-time)Timestamp when the span started.
end_time (required)string (date-time)Timestamp when the span ended.
site_id (required)stringIdentifier of the site this span belongs to.
trace_id (required)stringUnique identifier for the entire trace.
parent_span_id (required)stringSpan ID of the parent span, empty for root spans.
span_id (required)stringUnique identifier for this span.
digest (required)stringHash digest identifying the span's operation.
duration (required)numberDuration of the span in milliseconds.
trace_state (required)stringW3C trace state header value.
subtrace_root (required)booleanWhether this span is the root of a subtrace (a separate service boundary).
resource_attributes (required)map<string, string>Resource-level attributes (e.g. host, service metadata).
service_name (required)stringName of the service that produced this span.
namespace (required)stringNamespace the span belongs to (e.g. "web", "background").
revision (required)stringGit revision or deployment identifier active when the span was recorded.
scope_name (required)stringInstrumentation scope name (e.g. the library that produced the span).
scope_version (required)stringInstrumentation scope version.
action_name (required)stringAction name for the span (e.g. "POST /api/users").
span_name (required)stringLow-cardinality name of the operation (e.g. "HTTP GET").
span_kind (required)stringSpan kind (e.g. "server", "client", "internal").
span_attributes (required)map<string, string>Span-level attributes (e.g. HTTP headers, database statements).
status_code (required)stringOpenTelemetry status code: "unset", "ok" or "error".
status_message (required)stringHuman-readable status message, typically set on error.
events.timestamp (required)string[]Timestamps of span events.
events.name (required)string[]Names of span events (e.g. "exception").
events.attributes (required)map<string, string>[]Attributes for each span event.
links.trace_id (required)string[]Trace IDs of linked spans.
links.span_id (required)string[]Span IDs of linked spans.
links.trace_state (required)string[]Trace state values of linked spans.
links.attributes (required)map<string, string>[]Attributes for each span link.