REST API for metrics, traces, logs, Kubernetes monitoring, and deployment tracking.
Most endpoints require a token. Pass it in one of two ways:
Authorization: Bearer <token>?token=<token>Endpoints marked no auth do not require a token.
Endpoints return these unless they document their own:
| Status | When | Body |
|---|---|---|
400 Bad Request | Malformed request, or input the server cannot process. | BadRequestResponse |
401 Unauthorized | Missing or invalid authentication token. Only on endpoints that require a token. | ErrorResponse |
404 Not Found | Route or resource not found. | ErrorResponse |
429 Too Many Requests | External query concurrency limit exceeded; retry shortly. | TooManyRequestsResponse |
500 Internal Server Error | Unhandled server-side failure. | ErrorResponse |
/api/v2/metrics/anomaly/api/v2/metrics/list/api/v2/metrics/names/{site_id}/api/v2/metrics/timeseries/api/v2/metrics/type_and_tags/{site_id}/{metric_name}/api/v2/tracing/action_edges/api/v2/tracing/actions/api/v2/tracing/errors/api/v2/tracing/locator/api/v2/tracing/metadata_distributions/api/v2/tracing/site_edges/api/v2/tracing/slow_events/api/v2/tracing/slow_events/actions/api/v2/tracing/trace/api/v2/tracing/trace/error/api/v2/tracing/trace/performance/api/v2/tracing/traces/errors/api/v2/tracing/traces/performance/api/v2/events/group_list/api/v2/search/api/v2/logs/lines/api/v2/kubernetes/nodes/api/v2/kubernetes/pods/api/v2/kubernetes/pods/overview/api/v2/deploys/stats/api/v2/check_ins/test_cron/api/v2/saved_visuals/{id}/api/v2/saved_visuals/{id}/csv/api/v2/api/v2/auth/api/v2/docs/api/v2/llms.txt/api/v2/openapi.json/api/v2/raise_errorDetect anomalies in a metrics timeseries
AnomalyRequest application/json
| Name | Type | Description |
|---|---|---|
query (required) | TimeseriesQuery | The series to analyse; at most 30 days. Empty buckets are never filled, and projections are measured from to. |
detector (optional) | DetectorKind | Which detection algorithm to run. Default: "trend". |
config (optional) | AnomalyConfig | Detector tuning (e.g. the ceiling a trend is projected to cross). |
{
"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
}
}The fetched series and its detections.
AnomalyResponse application/json
| Name | Type | Description |
|---|---|---|
series (required) | Timeseries | The fetched series, to overlay the detections on. |
detections (required) | Detection[] | The detections produced by the detector, one per anomalous series (possibly empty). |
Invalid query, including a window longer than 30 days.
BadRequestResponse application/json
List aggregated metrics
ListQuery application/json
| Name | Type | Description |
|---|---|---|
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 | null | The desired interval for aggregation. When null, a resolution is automatically chosen based on the time range. |
site_id (required) | string | The 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 | null | Maximum number of rows to return. When null, no limit is applied. |
pagination (optional) | Pagination_MetricsPagination | null | Id-cursor paging (per_page 1 to 1000, rows ordered by id); takes precedence over limit. A page shorter than per_page is the last. |
{
"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"
}
]
}One row per unique combination of group-by values.
List application/json
| Name | Type | Description |
|---|---|---|
resolution (required) | Resolution | The 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. |
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
List metric names
| Name | Type | Description |
|---|---|---|
site_id (required, path) | string | The site to list metric names for. |
filter (optional, query) | string | Only return names containing this term, ignoring case (at most 200 characters). |
The site's metric names.
string[] application/json
[
"cpu",
"disk_io",
"memory",
"network_tx"
]Malformed request, or a filter that is too long or contains control characters.
BadRequestResponse application/json
Query a metrics timeseries
TimeseriesQuery application/json
| Name | Type | Description |
|---|---|---|
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 | null | The desired interval between data points. When null, a resolution is automatically chosen based on the time range. |
site_id (required) | string | The site to fetch metrics for. |
select (required) | TimeseriesSelector[] | Selectors that define which metrics and fields to fetch. |
limit (optional) | integer | null | Maximum number of unique series to return. When null, no limit is applied. |
{
"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"
}
}
]
}The matching series.
Timeseries application/json
| Name | Type | Description |
|---|---|---|
resolution (required) | Resolution | The 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 a metric's type and tags
| Name | Type | Description |
|---|---|---|
site_id (required, path) | string | The site the metric belongs to. |
metric_name (required, path) | string | The metric to describe. |
The metric's type and tag combinations.
MetricTypeAndTags application/json
| Name | Type | Description |
|---|---|---|
metric_type (required) | MetricType | The 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"]]). |
{
"metric_type": "GAUGE",
"available_tags": [
[
"hostname"
],
[
"hostname",
"state"
]
]
}The metric does not exist.
ErrorResponse application/json
List action edges
ActionEdgesApiQuery application/json
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site ID that anchors the query (the focused action's site). |
namespace (required) | string | Focused 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) | string | Action 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). |
{
"site_id": "abc123",
"namespace": "PublicApi/web",
"action": "UsersController#show",
"from": "2024-01-01T00:00:00Z",
"to": "2024-01-01T01:00:00Z"
}The focused action's upstream and downstream edges.
ActionEdgesResponse application/json
| Name | Type | Description |
|---|---|---|
upstream (required) | ActionEdge[] | Upstream edges (callers into the focused action). |
downstream (required) | ActionEdge[] | Downstream edges (callees the focused action invoked). |
{
"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": []
}namespace is not <service>/<namespace> with both halves non-empty, or the query is otherwise invalid.
BadRequestResponse application/json
List performance actions
ActionsQuery application/json
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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 | null | Optional deployment revision to filter by. |
action (optional) | string | null | Optional action name to filter by. |
{
"site_id": "abc123",
"from": "2024-01-01T00:00:00Z",
"to": "2024-01-01T01:00:00Z",
"namespaces": [
"web"
]
}One row per namespace, action and digest.
ActionRow[] application/json
Returns an array of ActionRow
| Name | Type | Description |
|---|---|---|
namespace (required) | string | Application namespace (e.g. "web", "background"). |
action (required) | string | Action name (e.g. "UsersController#show"). |
digest (required) | string | Action digest identifier. |
mean (required) | number | Mean duration in milliseconds. |
throughput (required) | number | Total request count in the queried time range. |
error_rate (required) | number | Error percentage (0.0–100.0). |
has_npo (required) | boolean | Whether an N+1 query has been detected for this action. |
[
{
"namespace": "web",
"action": "UsersController#show",
"digest": "a1b2c3",
"mean": 123.4,
"throughput": 5200.0,
"error_rate": 0.8,
"has_npo": false
}
]List incident error counts
IncidentErrorsQuery application/json
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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 | null | Deployment revision to filter by. When absent, all revisions are included. |
Incident digests matching the filter, with their error counts.
IncidentErrorRow[] application/json
Returns an array of IncidentErrorRow
| Name | Type | Description |
|---|---|---|
incident_digest (required) | string | The incident digest. |
namespace (required) | string | Application namespace the incident occurred in. |
revision (required) | string | Most 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. |
Locate a trace
LocatorQuery application/json
| Name | Type | Description |
|---|---|---|
site_ids (required) | string[] | Sites to search across; the token must have access to all of them. |
trace_id (required) | string | The trace to locate. |
{
"site_ids": [
"abc123"
],
"trace_id": "5baa0559ff2f4d35f3b2cd90d312bac3"
}The performance actions and error incidents the trace appears in; both lists are empty when it is not found.
TraceLocation application/json
| Name | Type | Description |
|---|---|---|
performance (required) | PerformanceLocation[] | Performance actions where this trace appears. |
errors (required) | ErrorLocation[] | Error incidents where this trace appears. |
{
"performance": [
{
"site_id": "abc123",
"namespace": "web",
"action_name": "POST /api/users"
}
],
"errors": [
{
"site_id": "abc123",
"incident_number": 42,
"exception_name": "RuntimeError",
"incident_digests": [
"1234567890"
]
}
]
}List incident metadata distributions
MetadataDistributionsQuery application/json
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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) | null | End of the time range (inclusive). Defaults to now. |
group_by (required) | MetadataGroupBy | Which dimension to group by (KEY or VALUE). |
metadata_key (optional) | string | null | The metadata key to filter values by. Required when group_by is VALUE; ignored in KEY mode. |
limit (optional) | integer | null | Maximum rows to return, clamped to 1–1000. Defaults to 10 in VALUE mode; in KEY mode absent means no limit. |
{
"site_id": "abc123",
"incident_digests": [
"1023993"
],
"from": "2024-01-01T00:00:00Z",
"group_by": "VALUE",
"metadata_key": "hostname"
}A bare array: key rows in KEY mode, value rows in VALUE mode.
MetadataDistributions application/json
| Variant | Description |
|---|---|
| MetadataKeyDistribution[] | |
| MetadataValueDistribution[] |
[
{
"key": "frontend1",
"value": 42
}
]incident_digests is empty, or group_by is VALUE without a metadata_key.
BadRequestResponse application/json
List site edges
SiteEdgesApiQuery application/json
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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). |
{
"site_id": "abc123",
"from": "2024-01-01T00:00:00Z",
"to": "2024-01-01T01:00:00Z"
}The site's service edges, grouped by direction.
SiteEdgesResponse application/json
| Name | Type | Description |
|---|---|---|
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). |
{
"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": []
}List slow events
SlowEventsParams application/json
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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 | null | Only 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. |
{
"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"
]
}
}
}The slow events, with the requested attributes.
SlowEventItem[] application/json
Returns an array of SlowEventItem
| Name | Type | Description |
|---|---|---|
digest (required) | string | Hash digest identifying the slow event's operation. |
count (required) | integer (>= 0) | Number of times this slow event occurred in the time range. |
mean (required) | number | Mean duration of this slow event in milliseconds. |
impact (required) | number | Relative impact score (higher means more total time spent). |
* (optional) | string | Additional attributes for the slow event (e.g. query body, category). |
[
{
"digest": "1234567890",
"count": 42,
"mean": 125.5,
"impact": 5271.0,
"payload": "SELECT * FROM users WHERE id = ?",
"system": "postgresql"
}
]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
List actions for a slow event
ActionsParams application/json
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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) | string | Digest of the slow event, as returned by the slow events endpoint. |
{
"site_id": "abc123",
"from": "2024-01-01T00:00:00Z",
"to": "2024-01-01T01:00:00Z",
"digest": "1234567890"
}The actions the slow event appears in.
RelatedTraceItem[] application/json
Returns an array of RelatedTraceItem
| Name | Type | Description |
|---|---|---|
action_name (required) | string | Name of the action containing the slow event. |
namespace (required) | string | Namespace the action belongs to. |
count (required) | integer (>= 0) | Number of times the slow event appeared in this action. |
trace_id (required) | string | Trace ID of the most recent occurrence. |
start_time (required) | string | Start time of the most recent occurrence. Example: "2024-01-01 00:00:00.123456789". |
[
{
"action_name": "UsersController#index",
"namespace": "web",
"count": 42,
"trace_id": "0af7651916cd43dd8448eb211c80319c",
"start_time": "2024-01-01 00:00:00.123456789"
}
]Get a trace
TraceQuery application/json
| Name | Type | Description |
|---|---|---|
site_ids (required) | string[] | Sites to search; the token must have access to all of them. |
trace_id (required) | string | The trace to fetch. |
include_linked_spans (optional) | boolean | Also return spans from other traces that link to this one. |
{
"site_ids": [
"abc123"
],
"trace_id": "5baa0559ff2f4d35f3b2cd90d312bac3"
}The trace's spans, or an empty array when the trace is not found.
TraceSpan[] application/json
Returns an array of TraceSpan
| Name | Type | Description |
|---|---|---|
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) | string | Identifier of the site this span belongs to. |
trace_id (required) | string | Unique identifier for the entire trace. |
parent_span_id (required) | string | Span ID of the parent span, empty for root spans. |
span_id (required) | string | Unique identifier for this span. |
digest (required) | string | Hash digest identifying the span's operation. |
duration (required) | number | Duration of the span in milliseconds. |
trace_state (required) | string | W3C trace state header value. |
subtrace_root (required) | boolean | Whether 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) | string | Name of the service that produced this span. |
namespace (required) | string | Namespace the span belongs to (e.g. "web", "background"). |
revision (required) | string | Git revision or deployment identifier active when the span was recorded. |
scope_name (required) | string | Instrumentation scope name (e.g. the library that produced the span). |
scope_version (required) | string | Instrumentation scope version. |
action_name (required) | string | Action name for the span (e.g. "POST /api/users"). |
span_name (required) | string | Low-cardinality name of the operation (e.g. "HTTP GET"). |
span_kind (required) | string | Span kind (e.g. "server", "client", "internal"). |
span_attributes (required) | map<string, string> | Span-level attributes (e.g. HTTP headers, database statements). |
status_code (required) | string | OpenTelemetry status code: "unset", "ok" or "error". |
status_message (required) | string | Human-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. |
Get an error incident's trace
ErrorTraceQuery application/json
| Name | Type | Description |
|---|---|---|
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 | null | A specific trace ID, or "last" (the default) for the most recent trace with a matching digest. |
{
"site_ids": [
"abc123"
],
"digests": [
"1234567890"
],
"trace_id": "last"
}The trace's spans.
TraceSpan[] application/json
Returns an array of TraceSpan
| Name | Type | Description |
|---|---|---|
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) | string | Identifier of the site this span belongs to. |
trace_id (required) | string | Unique identifier for the entire trace. |
parent_span_id (required) | string | Span ID of the parent span, empty for root spans. |
span_id (required) | string | Unique identifier for this span. |
digest (required) | string | Hash digest identifying the span's operation. |
duration (required) | number | Duration of the span in milliseconds. |
trace_state (required) | string | W3C trace state header value. |
subtrace_root (required) | boolean | Whether 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) | string | Name of the service that produced this span. |
namespace (required) | string | Namespace the span belongs to (e.g. "web", "background"). |
revision (required) | string | Git revision or deployment identifier active when the span was recorded. |
scope_name (required) | string | Instrumentation scope name (e.g. the library that produced the span). |
scope_version (required) | string | Instrumentation scope version. |
action_name (required) | string | Action name for the span (e.g. "POST /api/users"). |
span_name (required) | string | Low-cardinality name of the operation (e.g. "HTTP GET"). |
span_kind (required) | string | Span kind (e.g. "server", "client", "internal"). |
span_attributes (required) | map<string, string> | Span-level attributes (e.g. HTTP headers, database statements). |
status_code (required) | string | OpenTelemetry status code: "unset", "ok" or "error". |
status_message (required) | string | Human-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. |
No trace found for the digests or trace ID.
ErrorResponse application/json
Get a performance action's trace
PerformanceTraceQuery application/json
| Name | Type | Description |
|---|---|---|
site_ids (required) | string[] | Sites to search; the token must have access to all of them. |
action_name (required) | string | Name of the action, e.g. POST /api/users. |
namespace (required) | string | Namespace of the action, e.g. web. |
trace_id (optional) | string | null | A specific trace ID, or "last" (the default) for the most recent trace of the action. |
{
"site_ids": [
"abc123"
],
"namespace": "web",
"action_name": "POST /api/users",
"trace_id": "last"
}The trace's spans.
TraceSpan[] application/json
Returns an array of TraceSpan
| Name | Type | Description |
|---|---|---|
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) | string | Identifier of the site this span belongs to. |
trace_id (required) | string | Unique identifier for the entire trace. |
parent_span_id (required) | string | Span ID of the parent span, empty for root spans. |
span_id (required) | string | Unique identifier for this span. |
digest (required) | string | Hash digest identifying the span's operation. |
duration (required) | number | Duration of the span in milliseconds. |
trace_state (required) | string | W3C trace state header value. |
subtrace_root (required) | boolean | Whether 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) | string | Name of the service that produced this span. |
namespace (required) | string | Namespace the span belongs to (e.g. "web", "background"). |
revision (required) | string | Git revision or deployment identifier active when the span was recorded. |
scope_name (required) | string | Instrumentation scope name (e.g. the library that produced the span). |
scope_version (required) | string | Instrumentation scope version. |
action_name (required) | string | Action name for the span (e.g. "POST /api/users"). |
span_name (required) | string | Low-cardinality name of the operation (e.g. "HTTP GET"). |
span_kind (required) | string | Span kind (e.g. "server", "client", "internal"). |
span_attributes (required) | map<string, string> | Span-level attributes (e.g. HTTP headers, database statements). |
status_code (required) | string | OpenTelemetry status code: "unset", "ok" or "error". |
status_message (required) | string | Human-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. |
No trace found for the action or trace ID.
ErrorResponse application/json
List error traces
ErrorTracesQuery application/json
| Name | Type | Description |
|---|---|---|
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 | null | Filter query; supports revision and tag filters. |
pagination (required) | Pagination_TracePagination | Page size (capped at 100), order and cursor. |
{
"site_ids": [
"abc123"
],
"digests": [
"1234567890"
],
"pagination": {
"per_page": 50,
"order": "DESC",
"cursor": {
"time": null
}
}
}The matching trace summaries.
Trace[] application/json
Returns an array of Trace
| Name | Type | Description |
|---|---|---|
span_id (required) | string | Unique identifier for the root span. |
trace_id (required) | string | Unique identifier for the entire trace. |
site_id (required) | string | Site identifier this trace belongs to. |
namespace (optional) | string | null | Namespace the trace belongs to (e.g. "web", "background"). |
revision (optional) | string | null | Git revision or deployment identifier active when the trace was recorded. |
action_name (optional) | string | null | Action name for the trace (e.g. "POST /api/users"). |
time (required) | string (date-time) | Timestamp when the trace started. |
duration (required) | number | Total duration of the trace in milliseconds. |
tags (required) | map<string, string> | User-defined tags extracted from span attributes. |
has_npo (required) | boolean | Whether this trace contains N+1 query detection results. |
List performance traces
PerformanceTracesQuery application/json
| Name | Type | Description |
|---|---|---|
site_ids (required) | string[] | Sites to search; the caller must have access to all of them. |
action_name (required) | string | Action to list traces for, e.g. POST /api. |
namespace (required) | string | Namespace the action belongs to, e.g. web. |
query (optional) | string | null | Filter query; supports revision and tag filters. |
duration_ms (optional) | integer | null | Only return traces at least this long, in milliseconds. |
from (optional) | string (date-time) | null | Start of the time range. |
to (optional) | string (date-time) | null | End of the time range. |
pagination (required) | Pagination_TracePagination | Page size (capped at 100), order and cursor. |
{
"site_ids": [
"abc123"
],
"namespace": "web",
"action_name": "POST /api",
"duration_ms": 1000,
"pagination": {
"per_page": 50,
"order": "DESC",
"cursor": {
"time": null
}
}
}The matching trace summaries.
Trace[] application/json
Returns an array of Trace
| Name | Type | Description |
|---|---|---|
span_id (required) | string | Unique identifier for the root span. |
trace_id (required) | string | Unique identifier for the entire trace. |
site_id (required) | string | Site identifier this trace belongs to. |
namespace (optional) | string | null | Namespace the trace belongs to (e.g. "web", "background"). |
revision (optional) | string | null | Git revision or deployment identifier active when the trace was recorded. |
action_name (optional) | string | null | Action name for the trace (e.g. "POST /api/users"). |
time (required) | string (date-time) | Timestamp when the trace started. |
duration (required) | number | Total duration of the trace in milliseconds. |
tags (required) | map<string, string> | User-defined tags extracted from span attributes. |
has_npo (required) | boolean | Whether this trace contains N+1 query detection results. |
List the top events of event groups
EventGroupListQuery application/json
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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 | null | Sets 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) | EventGroupOrder | Field to rank and truncate by. Default: "IMPACT". |
limit (optional) | integer | Maximum number of rows to return. Clamped to 1–1000. Default: 1000. |
{
"site_id": "6591f2705fa150d75339e232",
"from": "2024-01-01T00:00:00Z",
"to": "2024-01-01T01:00:00Z",
"resolution": "HOURLY",
"groups": [
"active_record",
"moped"
],
"order": "IMPACT"
}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
| Name | Type | Description |
|---|---|---|
digest (required) | string | Digest identifying the event. |
group (required) | string | Group the event belongs to (e.g. active_record), derived from name. |
name (required) | string | Event name (e.g. sql.active_record). |
title (optional) | string | null | Human-readable title. |
body (optional) | string | null | Event body (e.g. the query text). |
count (required) | integer (>= 0) | Number of occurrences in the time range. |
mean (required) | number | Weighted mean duration in milliseconds. |
impact (required) | number | Total time spent in milliseconds (count * mean). |
groups is empty.
BadRequestResponse application/json
Search traces and samples
SearchRequest application/json
| Name | Type | Description |
|---|---|---|
site_ids (required) | string[] | Sites to search, as BSON ObjectIds: at least one, all in one account. |
query (optional) | string | null | Bare 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 | null | Optional namespace filter (e.g. "web", "background"). |
kind (optional) | SampleKind | Sample kind filter. Default: "all". |
from (optional) | string (date-time) | null | Start of the time range (inclusive). Defaults to, and is clamped to, the start of the account's retention. |
to (optional) | string (date-time) | null | End 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. |
{
"site_ids": [
"6591f2705fa150d75339e232"
],
"query": "error:RuntimeError",
"kind": "exception",
"from": "2024-01-01T00:00:00Z",
"to": "2024-01-02T00:00:00Z"
}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
| Name | Type | Description |
|---|---|---|
result_type (required) | IncidentKind | Whether this is an exception or performance result. |
source (required) | SearchResultSource | Whether this result came from a trace or a legacy sample. |
trace_id (required) | string | Identifier to open the trace or sample with. |
site_id (required) | string | Site identifier this result belongs to. |
namespace (optional) | string | null | Namespace the result belongs to (e.g. "web", "background"). |
revision (optional) | string | null | Git revision or deployment identifier active when the result was recorded. |
action_name (optional) | string | null | Action name of the result (e.g. "POST /api/users"). |
time (required) | string (date-time) | Timestamp when the result was recorded. |
duration (required) | number | Duration in milliseconds of the matched span or sample. |
tags (required) | map<string, string> | User-defined tags. |
exception_name (optional) | string | null | Exception name; present for exception results only. |
exception_message (optional) | string | null | Exception message; present for exception results only. |
incident_digest (optional) | string | null | Incident digest used to link to the incident page. |
incident_number (optional) | integer | null | Incident number, when the incident digest matches a known incident. |
Search log lines
LogsQueryParams application/json
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site to search; an empty value returns no log lines. |
from (optional) | string (date-time) | null | Start 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) | null | End 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) | string | Log search query; an empty string matches every line. |
pagination (required) | Pagination_LogPagination | Page size, order and cursor. |
{
"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
}
}
}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
| Name | Type | Description |
|---|---|---|
timestamp (required) | string (date-time) | When the line was logged, with millisecond precision. |
id (optional) | string | null | Unique ID of the line. |
source_id (optional) | string | null | Log source the line was ingested through. |
group (optional) | string | null | Group the line belongs to, such as the app or service name. |
severity (optional) | string | null | Severity level, such as info or error. |
message (optional) | string | null | The log message. |
hostname (optional) | string | null | Host that emitted the line. |
json (optional) | string | null | The line's attributes as a JSON-encoded string. |
string text/event-stream
Query Kubernetes node metrics
NodesQuery application/json
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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) | string | Optional node name filter. Empty means all nodes. |
{
"site_id": "abc123",
"from": "2024-01-01T00:00:00Z",
"to": "2024-01-01T01:00:00Z",
"node_name": "node-1"
}One row per node, ordered by node name.
NodesRow[] application/json
Returns an array of NodesRow
| Name | Type | Description |
|---|---|---|
timestamp (required) | string (date-time) | Timestamp of the metrics snapshot. |
node_name (required) | string | Name of the Kubernetes node. |
cpu_usage_nano_cores (required) | number | CPU usage in nanocores. |
memory_rss_bytes (required) | number | Resident set size (RSS) memory in bytes. |
memory_usage_bytes (required) | number | Total memory usage in bytes. |
memory_working_set_bytes (required) | number | Working set memory in bytes. |
memory_page_faults (required) | number | Number of page faults. |
memory_major_page_faults (required) | number | Number of major page faults. |
fs_used_bytes (required) | number | Filesystem space used in bytes. |
fs_available_bytes (required) | number | Filesystem space available in bytes. |
fs_capacity_bytes (required) | number | Total filesystem capacity in bytes. |
fs_inodes_free (required) | number | Number of free filesystem inodes. |
fs_inodes_used (required) | number | Number of used filesystem inodes. |
fs_inodes (required) | number | Total number of filesystem inodes. |
network_rx_bytes (required) | number | Network bytes received. |
network_tx_bytes (required) | number | Network bytes transmitted. |
phase (required) | integer (>= 0) | Node phase as a numeric value. |
Query Kubernetes pod metrics
PodsQuery application/json
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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) | string | Optional 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 | null | Optional pod state filter, applied to every snapshot in the time range rather than only the latest. |
{
"site_id": "abc123",
"from": "2024-01-01T00:00:00Z",
"to": "2024-01-01T01:00:00Z",
"namespaces": [
"default",
"kube-system"
],
"state": "Running"
}One row per pod, ordered by namespace and pod name.
PodsRow[] application/json
Returns an array of PodsRow
| Name | Type | Description |
|---|---|---|
timestamp (required) | string (date-time) | Timestamp of the metrics snapshot. |
pod_name (required) | string | Name of the pod. |
pod_namespace (required) | string | Kubernetes namespace the pod belongs to. |
node_name (required) | string | Name of the node this pod is running on. |
cpu_usage_nano_cores (required) | number | CPU usage in nanocores. |
cpu_usage_core_nano_seconds (required) | number | Cumulative CPU usage in core-nanoseconds. |
memory_rss_bytes (required) | number | Resident set size (RSS) memory in bytes. |
memory_usage_bytes (required) | number | Total memory usage in bytes. |
memory_working_set_bytes (required) | number | Working set memory in bytes. |
memory_page_faults (required) | number | Number of page faults. |
memory_major_page_faults (required) | number | Number of major page faults. |
ephemeral_storage_used_bytes (required) | number | Ephemeral storage used in bytes. |
ephemeral_storage_capacity_bytes (required) | number | Ephemeral storage capacity in bytes. |
network_rx_bytes (required) | number | Network bytes received. |
network_tx_bytes (required) | number | Network bytes transmitted. |
process_count (required) | number | Number of running processes. |
phase (required) | PodPhase | Current phase of the pod lifecycle. |
state (required) | PodState | Derived 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. |
Query Kubernetes pod overviews
PodOverviewsQuery application/json
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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) | string | Optional substring of the pod name to match. Empty means all pods. |
{
"site_id": "abc123",
"from": "2024-01-01T00:00:00Z",
"to": "2024-01-01T01:00:00Z",
"namespaces": [
"default"
],
"query": "nginx"
}One row per pod, ordered by namespace and pod name.
PodOverviewRow[] application/json
Returns an array of PodOverviewRow
| Name | Type | Description |
|---|---|---|
timestamp (required) | string (date-time) | Timestamp of the metrics snapshot. |
node_name (required) | string | Name of the node this pod is running on. |
pod_name (required) | string | Name of the pod. |
pod_namespace (required) | string | Kubernetes namespace the pod belongs to. |
pod_uuid (required) | string | Unique pod identifier. |
phase (required) | PodPhase | Current 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) | PodState | Derived 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. |
Query deployment statistics
StatsQuery application/json
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site identifier, as a BSON ObjectId. |
revision (required) | string | Git revision or deployment identifier. |
namespace (optional) | string | null | Optional namespace filter (e.g., "web", "api"). Absent means all namespaces. |
{
"site_id": "6591f2705fa150d75339e232",
"revision": "abc-123",
"namespace": "web"
}Statistics for the revision, zero when nothing was recorded.
DeployStatsResult application/json
| Name | Type | Description |
|---|---|---|
throughput (required) | integer (>= 0) | Recorded requests and background jobs. |
mean (required) | number | Mean duration in milliseconds. |
error_rate (required) | number | Error rate as a percentage (0-100). |
{
"throughput": 1001,
"mean": 1.95,
"error_rate": 1.05
}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.
CronQuery application/json
| Name | Type | Description |
|---|---|---|
cron (required) | string | Cron expression to test (e.g. "0 * * * *"). |
wait_time_minutes (required) | integer | Wait time in minutes for the check-in window. |
timestamp (optional) | integer | null | Unix timestamp in seconds to evaluate against. Defaults to the current time. |
timezone (optional) | string | IANA timezone for cron evaluation (e.g. "Europe/Amsterdam"). An empty string means UTC. Default: "". |
{
"cron": "0 6 * * *",
"wait_time_minutes": 5,
"timestamp": 1614556800,
"timezone": "Europe/Amsterdam"
}The next window, or an error message when the input is invalid.
CronQueryResult application/json
| Name | Type | Description |
|---|---|---|
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) | null | Next scheduled start time; null when error is set. |
next_end (required) | string (date-time) | null | Next scheduled end time (start + wait time); null when error is set. |
error (required) | string | null | Why no window could be computed (invalid expression, timezone or timestamp); null on success. |
{
"now": "2021-03-01T00:00:00Z",
"next_start": null,
"next_end": null,
"error": "Invalid cron error: Invalid pattern: ..."
}{
"now": "2021-03-01T00:00:00Z",
"next_start": "2021-03-01T05:00:00Z",
"next_end": "2021-03-01T05:05:00Z",
"error": null
}Get a saved visual
| Name | Type | Description |
|---|---|---|
id (required, path) | string | Hex-encoded ObjectId of the saved visual. |
The saved visual.
SavedVisualOut application/json
| Name | Type | Description |
|---|---|---|
id (required) | string | MongoDB ObjectId of the saved visual (hex-encoded). |
resolution (required) | string | Time resolution (e.g. "HOURLY", "MINUTELY"). |
value_format (required) | string | Value format type (e.g. "number", "duration"). |
value_input (required) | string | null | Optional input format specification; null when unset. |
series (required) | SerieOut[] | Data series contained in this visual. |
{
"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
}
]
}
]
}id is not a valid ObjectId (error is invalid_id).
BadRequestResponse application/json
No saved visual with this id.
ErrorResponse application/json
Export a saved visual as CSV
| Name | Type | Description |
|---|---|---|
id (required, path) | string | Hex-encoded ObjectId of the saved visual. |
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:
| Name | Type | Description |
|---|---|---|
Content-Disposition | string | attachment; filename="{id}.csv" |
string text/csv
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
id is not a valid ObjectId (error is invalid_id).
BadRequestResponse application/json
No saved visual with this id.
ErrorResponse application/json
API home page
HTML page with API information and links.
string text/html
Test authentication
The token is valid.
AuthResponse application/json
| Name | Type | Description |
|---|---|---|
message (required) | string | Confirmation message including the authenticated user ID. |
{
"message": "Authenticated user 6694fca622fa81b8dd2e7178"
}API documentation page
HTML page with the full API documentation.
string text/html
API documentation for LLMs
Structured plain text following the llms.txt convention.
string text/plain
OpenAPI specification
The OpenAPI document describing every documented endpoint.
any application/json
Trigger a test error
Always fails with an internal server error.
ErrorResponse application/json
A single edge in the upstream or downstream list.
| Name | Type | Description |
|---|---|---|
site_id (optional) | string | null | Site 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 | null | Current display name of the peer site, if accessible to the user. |
site_environment (optional) | string | null | Environment of the peer site (e.g. "production"), if accessible to the user. |
service (required) | string | Peer 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) | string | Peer namespace. |
action (required) | string | Peer action name. |
caller_kind (required) | string | OTel span kind on the caller side. |
callee_kind (required) | string | OTel span kind on the callee side. |
edge_type (required) | string | SYNC 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) | number | Mean duration in milliseconds (count-weighted across the range). |
p_90 (required) | number | 90th 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) | number | 95th percentile duration in milliseconds. Approximation: traffic-weighted average of per-minute pre-computed p_95 values (sum(p_95 * count) / sum(count)). |
Query parameters for listing upstream and downstream action edges.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site ID that anchors the query (the focused action's site). |
namespace (required) | string | Focused 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) | string | Action 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). |
Response shape for the action edges endpoint.
| Name | Type | Description |
|---|---|---|
upstream (required) | ActionEdge[] | Upstream edges (callers into the focused action). |
downstream (required) | ActionEdge[] | Downstream edges (callees the focused action invoked). |
A single row in the actions list response, representing aggregated metrics for one namespace/action/digest combination.
| Name | Type | Description |
|---|---|---|
namespace (required) | string | Application namespace (e.g. "web", "background"). |
action (required) | string | Action name (e.g. "UsersController#show"). |
digest (required) | string | Action digest identifier. |
mean (required) | number | Mean duration in milliseconds. |
throughput (required) | number | Total request count in the queried time range. |
error_rate (required) | number | Error percentage (0.0–100.0). |
has_npo (required) | boolean | Whether an N+1 query has been detected for this action. |
Identifies the slow event whose actions to list.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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) | string | Digest of the slow event, as returned by the slow events endpoint. |
Query parameters for listing performance actions with aggregated metrics.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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 | null | Optional deployment revision to filter by. |
action (optional) | string | null | Optional action name to filter by. |
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"
Detector tuning for one anomaly run; each detector reads only its own fields.
| Name | Type | Description |
|---|---|---|
ceiling (optional) | number | null | The 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 | null | Unix 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) | null | The 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 | null | Rate detector numerator metric (event count), e.g. "error_count". Required, with rate_denominator, for the rate detector to produce detections. |
rate_denominator (optional) | string | null | Rate 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. |
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).
| Name | Type | Description |
|---|---|---|
at (required) | integer | Unix-seconds timestamp of the anomalous point (spike), shift boundary (changepoint) or rate bucket (rate). |
value (required) | number | The point's value (spike), the robust level *after* the shift (changepoint) or the observed rate (rate). |
z_score (required) | number | Robust 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) | number | Robust baseline the point deviates from (spike), the robust level *before* the shift (changepoint) or the robust baseline rate (rate). |
The series to analyse, the detector to run and its tuning.
| Name | Type | Description |
|---|---|---|
query (required) | TimeseriesQuery | The series to analyse; at most 30 days. Empty buckets are never filled, and projections are measured from to. |
detector (optional) | DetectorKind | Which detection algorithm to run. Default: "trend". |
config (optional) | AnomalyConfig | Detector tuning (e.g. the ceiling a trend is projected to cross). |
The analysed series and its detections.
| Name | Type | Description |
|---|---|---|
series (required) | Timeseries | The fetched series, to overlay the detections on. |
detections (required) | Detection[] | The detections produced by the detector, one per anomalous series (possibly empty). |
Whether a group of attribute keys filters the slow events or is only returned.
| Variant | Description |
|---|---|
| { 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. |
Response body for the authentication test endpoint.
| Name | Type | Description |
|---|---|---|
message (required) | string | Confirmation message including the authenticated user ID. |
{
"message": "Authenticated user 6694fca622fa81b8dd2e7178"
}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.
| Name | Type | Description |
|---|---|---|
error (required) | string | Stable, machine-readable slug identifying the specific error case. |
message (required) | string | Human-readable message. Safe to log or display to end users. |
details (optional) | any | Per-error structured payload. Shape varies by error. |
A container within a Kubernetes pod.
| Name | Type | Description |
|---|---|---|
name (required) | string | Name of the container. |
status (required) | ContainerStatus | Current status of the container. |
exit_code (required) | integer | Exit code of the container process (0 means success). |
reason (required) | string | Human-readable reason for the container's current status. |
Status of a container within a pod.
"Running" | "Terminated" | "Waiting" | "Unknown"
Request body for testing a cron schedule expression.
| Name | Type | Description |
|---|---|---|
cron (required) | string | Cron expression to test (e.g. "0 * * * *"). |
wait_time_minutes (required) | integer | Wait time in minutes for the check-in window. |
timestamp (optional) | integer | null | Unix timestamp in seconds to evaluate against. Defaults to the current time. |
timezone (optional) | string | IANA timezone for cron evaluation (e.g. "Europe/Amsterdam"). An empty string means UTC. Default: "". |
Result of evaluating a cron schedule expression.
| Name | Type | Description |
|---|---|---|
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) | null | Next scheduled start time; null when error is set. |
next_end (required) | string (date-time) | null | Next scheduled end time (start + wait time); null when error is set. |
error (required) | string | null | Why no window could be computed (invalid expression, timezone or timestamp); null on success. |
A single data point in a saved visual series.
| Name | Type | Description |
|---|---|---|
x (required) | string (date-time) | Timestamp of this data point. |
y (required) | number | Primary value. |
y0 (optional) | number | Lower bound value for area charts. |
y1 (optional) | number | Upper bound value for area charts. |
Aggregated metrics for one deployment. Without recorded samples, throughput is the error count, error_rate 100 (0 without errors) and mean 0.
| Name | Type | Description |
|---|---|---|
throughput (required) | integer (>= 0) | Recorded requests and background jobs. |
mean (required) | number | Mean duration in milliseconds. |
error_rate (required) | number | Error rate as a percentage (0-100). |
A single anomaly detected on one series.
| Name | Type | Description |
|---|---|---|
kind (required) | DetectorKind | Which detector produced this detection. |
series_id (required) | string | The id of the series this detection refers to. |
score (required) | number | Detector-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) | Severity | Severity bucket. |
projection (optional) | Projection | null | Forward 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) | string | Human-readable explanation, e.g. "disk_usage is projected to cross 100 in ~6 days". |
Which detection algorithm produced (or is requested to produce) a result.
"trend" | "spike" | "changepoint" | "time_to_threshold" | "rate"
Error incident where a trace appears.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site identifier. |
incident_number (required) | integer | Incident number that groups related errors. |
exception_name (required) | string | Name 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. |
Error body returned for 401, 404 and 500 responses.
| Name | Type | Description |
|---|---|---|
error (required) | string | Human-readable error message. |
The error incident whose trace to fetch.
| Name | Type | Description |
|---|---|---|
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 | null | A specific trace ID, or "last" (the default) for the most recent trace with a matching digest. |
Filters and pagination for listing the traces of error incidents.
| Name | Type | Description |
|---|---|---|
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 | null | Filter query; supports revision and tag filters. |
pagination (required) | Pagination_TracePagination | Page size (capped at 100), order and cursor. |
One event in the event group list.
| Name | Type | Description |
|---|---|---|
digest (required) | string | Digest identifying the event. |
group (required) | string | Group the event belongs to (e.g. active_record), derived from name. |
name (required) | string | Event name (e.g. sql.active_record). |
title (optional) | string | null | Human-readable title. |
body (optional) | string | null | Event body (e.g. the query text). |
count (required) | integer (>= 0) | Number of occurrences in the time range. |
mean (required) | number | Weighted mean duration in milliseconds. |
impact (required) | number | Total time spent in milliseconds (count * mean). |
Query for the event group list.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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 | null | Sets 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) | EventGroupOrder | Field to rank and truncate by. Default: "IMPACT". |
limit (optional) | integer | Maximum number of rows to return. Clamped to 1–1000. Default: 1000. |
Field the event group list is ranked and truncated by.
"IMPACT" | "MEAN" | "THROUGHPUT"
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"
How missing data points (empty time buckets) are filled when assembling a series.
"ZERO" | "PREVIOUS" | "NONE"
Specifies how rows in a List are grouped.
| Variant | Description |
|---|---|
| { 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. |
A single incident digest's error count within the queried selection.
| Name | Type | Description |
|---|---|---|
incident_digest (required) | string | The incident digest. |
namespace (required) | string | Application namespace the incident occurred in. |
revision (required) | string | Most 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. |
Query for the incident error list.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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 | null | Deployment revision to filter by. When absent, all revisions are included. |
Whether something represents an exception or a performance incident.
"exception" | "performance"
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.
| Name | Type | Description |
|---|---|---|
resolution (required) | Resolution | The 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. |
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.
| Name | Type | Description |
|---|---|---|
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 | null | The desired interval for aggregation. When null, a resolution is automatically chosen based on the time range. |
site_id (required) | string | The 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 | null | Maximum number of rows to return. When null, no limit is applied. |
pagination (optional) | Pagination_MetricsPagination | null | Id-cursor paging (per_page 1 to 1000, rows ordered by id); takes precedence over limit. A page shorter than per_page is the last. |
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.
| Name | Type | Description |
|---|---|---|
id (required) | string | The key under which this selector's aggregated value appears in Row::data (e.g. "mean", "count"). |
name (required) | string | The 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) | Field | The specific measurement field to retrieve (e.g. Gauge, Mean, P95). |
aggregation (optional) | Aggregation | null | The aggregation function to apply when combining values within a time bucket. When null, a default is chosen based on the field type. |
The trace to locate and the sites to search.
| Name | Type | Description |
|---|---|---|
site_ids (required) | string[] | Sites to search across; the token must have access to all of them. |
trace_id (required) | string | The trace to locate. |
A log line; its attributes live inside json.
| Name | Type | Description |
|---|---|---|
timestamp (required) | string (date-time) | When the line was logged, with millisecond precision. |
id (optional) | string | null | Unique ID of the line. |
source_id (optional) | string | null | Log source the line was ingested through. |
group (optional) | string | null | Group the line belongs to, such as the app or service name. |
severity (optional) | string | null | Severity level, such as info or error. |
message (optional) | string | null | The log message. |
hostname (optional) | string | null | Host that emitted the line. |
json (optional) | string | null | The line's attributes as a JSON-encoded string. |
One server-sent event of a streamed log search, as the JSON data of the event.
| Variant | Description |
|---|---|
| { 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. |
Filters and pagination for searching log lines.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site to search; an empty value returns no log lines. |
from (optional) | string (date-time) | null | Start 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) | null | End 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) | string | Log search query; an empty string matches every line. |
pagination (required) | Pagination_LogPagination | Page size, order and cursor. |
A bare JSON array of key rows or value rows.
| Variant | Description |
|---|---|
| MetadataKeyDistribution[] | |
| MetadataValueDistribution[] |
Query for the metadata distribution list.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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) | null | End of the time range (inclusive). Defaults to now. |
group_by (required) | MetadataGroupBy | Which dimension to group by (KEY or VALUE). |
metadata_key (optional) | string | null | The metadata key to filter values by. Required when group_by is VALUE; ignored in KEY mode. |
limit (optional) | integer | null | Maximum rows to return, clamped to 1–1000. Defaults to 10 in VALUE mode; in KEY mode absent means no limit. |
Which dimension the metadata distribution query groups by.
"KEY" | "VALUE"
A single metadata key row (KEY mode).
| Name | Type | Description |
|---|---|---|
key (required) | string | null | The metadata key (e.g. hostname). |
total (required) | integer | null | Total occurrences across all values. |
unique (required) | integer | null | Number of distinct values. |
A single metadata value row (VALUE mode).
| Name | Type | Description |
|---|---|---|
key (required) | string | null | The metadata value (e.g. frontend1), under the field name key. |
value (required) | integer | null | Occurrences of this value. |
The category of a metric, which determines how its values are interpreted.
Serialized as uppercase strings (e.g. "GAUGE", "COUNTER", "MEASUREMENT").
"GAUGE" | "COUNTER" | "MEASUREMENT"
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.
| Name | Type | Description |
|---|---|---|
metric_type (required) | MetricType | The 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"]]). |
Query for fetching Kubernetes node metrics.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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) | string | Optional node name filter. Empty means all nodes. |
The latest Kubernetes node metrics within the requested time range.
| Name | Type | Description |
|---|---|---|
timestamp (required) | string (date-time) | Timestamp of the metrics snapshot. |
node_name (required) | string | Name of the Kubernetes node. |
cpu_usage_nano_cores (required) | number | CPU usage in nanocores. |
memory_rss_bytes (required) | number | Resident set size (RSS) memory in bytes. |
memory_usage_bytes (required) | number | Total memory usage in bytes. |
memory_working_set_bytes (required) | number | Working set memory in bytes. |
memory_page_faults (required) | number | Number of page faults. |
memory_major_page_faults (required) | number | Number of major page faults. |
fs_used_bytes (required) | number | Filesystem space used in bytes. |
fs_available_bytes (required) | number | Filesystem space available in bytes. |
fs_capacity_bytes (required) | number | Total filesystem capacity in bytes. |
fs_inodes_free (required) | number | Number of free filesystem inodes. |
fs_inodes_used (required) | number | Number of used filesystem inodes. |
fs_inodes (required) | number | Total number of filesystem inodes. |
network_rx_bytes (required) | number | Network bytes received. |
network_tx_bytes (required) | number | Network bytes transmitted. |
phase (required) | integer (>= 0) | Node phase as a numeric value. |
Sort order for query results
Used across multiple domains for paginated and ordered queries.
"ASC" | "DESC"
A Kubernetes owner reference linking a pod to its controller.
| Name | Type | Description |
|---|---|---|
name (required) | string | Name of the owning resource (e.g. "my-deployment-abc123"). |
kind (required) | string | Kind of the owning resource (e.g. "ReplicaSet", "DaemonSet"). |
namespace (required) | string | Namespace of the owning resource. |
Keyset pagination settings, generic over each domain's cursor type.
| Name | Type | Description |
|---|---|---|
per_page (required) | integer (>= 1) | Number of results per page. |
order (required) | Order | Sort order for results. |
cursor (required) | { time: string (date-time) | null, id: string | null } | Pagination cursor for log lines. |
Keyset pagination settings, generic over each domain's cursor type.
| Name | Type | Description |
|---|---|---|
per_page (required) | integer (>= 1) | Number of results per page. |
order (required) | Order | Sort order for results. |
cursor (required) | { id: string | null } | Pagination cursor type for metric lists. |
Keyset pagination settings, generic over each domain's cursor type.
| Name | Type | Description |
|---|---|---|
per_page (required) | integer (>= 1) | Number of results per page. |
order (required) | Order | Sort order for results. |
cursor (required) | { time: string (date-time) | null } | { duration: number | null } | Pagination cursor type for traces. |
Performance action where a trace appears.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site identifier. |
namespace (required) | string | Namespace of the action (e.g. "web"). |
action_name (required) | string | Name of the action (e.g. "POST /api/users"). |
The performance action whose trace to fetch.
| Name | Type | Description |
|---|---|---|
site_ids (required) | string[] | Sites to search; the token must have access to all of them. |
action_name (required) | string | Name of the action, e.g. POST /api/users. |
namespace (required) | string | Namespace of the action, e.g. web. |
trace_id (optional) | string | null | A specific trace ID, or "last" (the default) for the most recent trace of the action. |
Filters and pagination for listing the performance traces of one action.
| Name | Type | Description |
|---|---|---|
site_ids (required) | string[] | Sites to search; the caller must have access to all of them. |
action_name (required) | string | Action to list traces for, e.g. POST /api. |
namespace (required) | string | Namespace the action belongs to, e.g. web. |
query (optional) | string | null | Filter query; supports revision and tag filters. |
duration_ms (optional) | integer | null | Only return traces at least this long, in milliseconds. |
from (optional) | string (date-time) | null | Start of the time range. |
to (optional) | string (date-time) | null | End of the time range. |
pagination (required) | Pagination_TracePagination | Page size (capped at 100), order and cursor. |
A Kubernetes pod overview with metadata and status information.
| Name | Type | Description |
|---|---|---|
timestamp (required) | string (date-time) | Timestamp of the metrics snapshot. |
node_name (required) | string | Name of the node this pod is running on. |
pod_name (required) | string | Name of the pod. |
pod_namespace (required) | string | Kubernetes namespace the pod belongs to. |
pod_uuid (required) | string | Unique pod identifier. |
phase (required) | PodPhase | Current 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) | PodState | Derived 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. |
Query for fetching Kubernetes pod overview data.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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) | string | Optional substring of the pod name to match. Empty means all pods. |
Kubernetes pod lifecycle phase.
"Running" | "Succeeded" | "Pending" | "Failed" | "Unknown"
Derived state of a pod, combining phase and container statuses.
"Unknown" | "Pending" | "Running" | "Succeeded" | "Failed"
Query for fetching detailed Kubernetes pod metrics.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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) | string | Optional 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 | null | Optional pod state filter, applied to every snapshot in the time range rather than only the latest. |
The latest detailed Kubernetes pod metrics within the requested time range.
| Name | Type | Description |
|---|---|---|
timestamp (required) | string (date-time) | Timestamp of the metrics snapshot. |
pod_name (required) | string | Name of the pod. |
pod_namespace (required) | string | Kubernetes namespace the pod belongs to. |
node_name (required) | string | Name of the node this pod is running on. |
cpu_usage_nano_cores (required) | number | CPU usage in nanocores. |
cpu_usage_core_nano_seconds (required) | number | Cumulative CPU usage in core-nanoseconds. |
memory_rss_bytes (required) | number | Resident set size (RSS) memory in bytes. |
memory_usage_bytes (required) | number | Total memory usage in bytes. |
memory_working_set_bytes (required) | number | Working set memory in bytes. |
memory_page_faults (required) | number | Number of page faults. |
memory_major_page_faults (required) | number | Number of major page faults. |
ephemeral_storage_used_bytes (required) | number | Ephemeral storage used in bytes. |
ephemeral_storage_capacity_bytes (required) | number | Ephemeral storage capacity in bytes. |
network_rx_bytes (required) | number | Network bytes received. |
network_tx_bytes (required) | number | Network bytes transmitted. |
process_count (required) | number | Number of running processes. |
phase (required) | PodPhase | Current phase of the pod lifecycle. |
state (required) | PodState | Derived 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. |
A single data point in a timeseries, representing a value at a specific moment in time.
| Name | Type | Description |
|---|---|---|
timestamp (required) | string (date-time) | The moment in time this data point represents, aligned to the query's timeframe resolution. |
value (required) | number | The numeric metric value at this timestamp. |
A forward projection of a fitted linear trend toward a ceiling.
| Name | Type | Description |
|---|---|---|
slope_per_second (required) | number | Fitted slope, in value-units per second. |
fit_quality (required) | number | Goodness-of-fit (R², 0.0..=1.0) of the linear fit the projection rests on. |
ceiling (required) | number | The ceiling the series is projected to cross. |
cross_at (required) | integer | Unix-seconds timestamp at which the series is projected to cross the ceiling. |
seconds_to_cross (required) | integer | Seconds from the reference time (now) until the projected crossing. |
Progress of a log search, which runs over the time range in chunks.
| Name | Type | Description |
|---|---|---|
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) | number | Overall 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. |
Related trace item showing an action where a slow event appears.
| Name | Type | Description |
|---|---|---|
action_name (required) | string | Name of the action containing the slow event. |
namespace (required) | string | Namespace the action belongs to. |
count (required) | integer (>= 0) | Number of times the slow event appeared in this action. |
trace_id (required) | string | Trace ID of the most recent occurrence. |
start_time (required) | string | Start time of the most recent occurrence. Example: "2024-01-01 00:00:00.123456789". |
Time resolution that metrics can be returned in
"HOURLY" | "MINUTELY" | "DAILY"
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.
| Name | Type | Description |
|---|---|---|
id (required) | string | Unique 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}). |
Specifies whether to search errors, performance samples, or both.
"all" | "exception" | "performance"
JSON response representation of a saved visual (chart).
| Name | Type | Description |
|---|---|---|
id (required) | string | MongoDB ObjectId of the saved visual (hex-encoded). |
resolution (required) | string | Time resolution (e.g. "HOURLY", "MINUTELY"). |
value_format (required) | string | Value format type (e.g. "number", "duration"). |
value_input (required) | string | null | Optional input format specification; null when unset. |
series (required) | SerieOut[] | Data series contained in this visual. |
Request body for the unified search endpoint. Legacy samples match from and to by their minute or hour bucket rather than their exact time.
| Name | Type | Description |
|---|---|---|
site_ids (required) | string[] | Sites to search, as BSON ObjectIds: at least one, all in one account. |
query (optional) | string | null | Bare 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 | null | Optional namespace filter (e.g. "web", "background"). |
kind (optional) | SampleKind | Sample kind filter. Default: "all". |
from (optional) | string (date-time) | null | Start of the time range (inclusive). Defaults to, and is clamped to, the start of the account's retention. |
to (optional) | string (date-time) | null | End 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. |
A search result item returned by the unified search endpoint.
| Name | Type | Description |
|---|---|---|
result_type (required) | IncidentKind | Whether this is an exception or performance result. |
source (required) | SearchResultSource | Whether this result came from a trace or a legacy sample. |
trace_id (required) | string | Identifier to open the trace or sample with. |
site_id (required) | string | Site identifier this result belongs to. |
namespace (optional) | string | null | Namespace the result belongs to (e.g. "web", "background"). |
revision (optional) | string | null | Git revision or deployment identifier active when the result was recorded. |
action_name (optional) | string | null | Action name of the result (e.g. "POST /api/users"). |
time (required) | string (date-time) | Timestamp when the result was recorded. |
duration (required) | number | Duration in milliseconds of the matched span or sample. |
tags (required) | map<string, string> | User-defined tags. |
exception_name (optional) | string | null | Exception name; present for exception results only. |
exception_message (optional) | string | null | Exception message; present for exception results only. |
incident_digest (optional) | string | null | Incident digest used to link to the incident page. |
incident_number (optional) | integer | null | Incident number, when the incident digest matches a known incident. |
Whether a search result originates from an OpenTelemetry trace or a legacy sample.
"trace" | "sample"
A single timeseries: a named sequence of points that share the same tags and field.
| Name | Type | Description |
|---|---|---|
id (required) | string | Unique identifier for this series, composed of the metric name, sorted tags and field (e.g. "cpu_usage{hostname=frontend1};GAUGE"). |
name (required) | string | The 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) | number | The maximum value across all data points in this series. |
min (required) | number | The minimum value across all data points in this series. |
field (required) | Field | The 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. |
A single data series within a saved visual.
| Name | Type | Description |
|---|---|---|
color (required) | string | Series color as a CSS color string (e.g. "rgb(0,0,0)"). |
name (required) | string | Display name of the series. |
renderer (required) | string | Renderer type (e.g. "line", "area"). |
data (required) | DataPointOut[] | Ordered data points in this series. |
Severity bucket for a detection, derived from how imminent / large the anomaly is.
"info" | "warning" | "critical"
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.
| Name | Type | Description |
|---|---|---|
site_id (optional) | string | null | Site ID of the peer service if accessible to the user, else null. |
site_name (optional) | string | null | Current display name of the peer site, if accessible to the user. |
site_environment (optional) | string | null | Environment of the peer site (e.g. "production"), if accessible to the user. |
service (required) | string | Peer 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) | number | Mean duration in milliseconds (count-weighted across the range). |
p_90 (required) | number | 90th 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) | number | 95th percentile duration in milliseconds. Approximation: traffic-weighted average of per-minute pre-computed p_95 values (sum(p_95 * count) / sum(count)). |
Query parameters for listing site-level service dependency edges.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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). |
Response shape for the site edges endpoint.
| Name | Type | Description |
|---|---|---|
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). |
A slow event aggregation (e.g. a slow database query).
| Name | Type | Description |
|---|---|---|
digest (required) | string | Hash digest identifying the slow event's operation. |
count (required) | integer (>= 0) | Number of times this slow event occurred in the time range. |
mean (required) | number | Mean duration of this slow event in milliseconds. |
impact (required) | number | Relative impact score (higher means more total time spent). |
* (optional) | string | Additional attributes for the slow event (e.g. query body, category). |
Filters for listing slow events such as slow database queries.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site 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 | null | Only 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. |
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"
Query for the aggregated metrics of one deployment revision, over all retained data.
| Name | Type | Description |
|---|---|---|
site_id (required) | string | Site identifier, as a BSON ObjectId. |
revision (required) | string | Git revision or deployment identifier. |
namespace (optional) | string | null | Optional namespace filter (e.g., "web", "api"). Absent means all namespaces. |
A collection of series over a time range, aligned to the given resolution.
| Name | Type | Description |
|---|---|---|
resolution (required) | Resolution | The 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. |
Query for fetching timeseries metric data, used to populate graphs.
| Name | Type | Description |
|---|---|---|
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 | null | The desired interval between data points. When null, a resolution is automatically chosen based on the time range. |
site_id (required) | string | The site to fetch metrics for. |
select (required) | TimeseriesSelector[] | Selectors that define which metrics and fields to fetch. |
limit (optional) | integer | null | Maximum number of unique series to return. When null, no limit is applied. |
Selects a specific metric, field and tag combination to include in a timeseries response.
| Name | Type | Description |
|---|---|---|
name (required) | string | The 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) | Field | The specific measurement field to retrieve (e.g. GAUGE, MEAN, P95). |
aggregation (optional) | Aggregation | null | The 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) | boolean | Legacy fill policy: true fills missing data points with 0.0, false carries the previous value forward. Superseded by fill. Default: true. |
fill (optional) | FillMode | null | Preferred fill policy; takes precedence over draw_null_as_zero when set. |
Error body returned for 429 responses.
| Name | Type | Description |
|---|---|---|
error (required) | string | Human-readable error message. |
suggestion (optional) | string | null | A 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. |
A trace summary representing a root span.
| Name | Type | Description |
|---|---|---|
span_id (required) | string | Unique identifier for the root span. |
trace_id (required) | string | Unique identifier for the entire trace. |
site_id (required) | string | Site identifier this trace belongs to. |
namespace (optional) | string | null | Namespace the trace belongs to (e.g. "web", "background"). |
revision (optional) | string | null | Git revision or deployment identifier active when the trace was recorded. |
action_name (optional) | string | null | Action name for the trace (e.g. "POST /api/users"). |
time (required) | string (date-time) | Timestamp when the trace started. |
duration (required) | number | Total duration of the trace in milliseconds. |
tags (required) | map<string, string> | User-defined tags extracted from span attributes. |
has_npo (required) | boolean | Whether this trace contains N+1 query detection results. |
Locations of a trace in performance and error contexts.
| Name | Type | Description |
|---|---|---|
performance (required) | PerformanceLocation[] | Performance actions where this trace appears. |
errors (required) | ErrorLocation[] | Error incidents where this trace appears. |
The trace to fetch and the sites to search.
| Name | Type | Description |
|---|---|---|
site_ids (required) | string[] | Sites to search; the token must have access to all of them. |
trace_id (required) | string | The trace to fetch. |
include_linked_spans (optional) | boolean | Also return spans from other traces that link to this one. |
A complete span with all its attributes, events and links.
| Name | Type | Description |
|---|---|---|
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) | string | Identifier of the site this span belongs to. |
trace_id (required) | string | Unique identifier for the entire trace. |
parent_span_id (required) | string | Span ID of the parent span, empty for root spans. |
span_id (required) | string | Unique identifier for this span. |
digest (required) | string | Hash digest identifying the span's operation. |
duration (required) | number | Duration of the span in milliseconds. |
trace_state (required) | string | W3C trace state header value. |
subtrace_root (required) | boolean | Whether 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) | string | Name of the service that produced this span. |
namespace (required) | string | Namespace the span belongs to (e.g. "web", "background"). |
revision (required) | string | Git revision or deployment identifier active when the span was recorded. |
scope_name (required) | string | Instrumentation scope name (e.g. the library that produced the span). |
scope_version (required) | string | Instrumentation scope version. |
action_name (required) | string | Action name for the span (e.g. "POST /api/users"). |
span_name (required) | string | Low-cardinality name of the operation (e.g. "HTTP GET"). |
span_kind (required) | string | Span kind (e.g. "server", "client", "internal"). |
span_attributes (required) | map<string, string> | Span-level attributes (e.g. HTTP headers, database statements). |
status_code (required) | string | OpenTelemetry status code: "unset", "ok" or "error". |
status_message (required) | string | Human-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. |