---
title: "Get Attempt Metrics"
method: GET
path: "/metrics/attempts"
tags: ["Metrics"]
---

# Get Attempt Metrics

`GET /metrics/attempts`

Returns aggregated delivery attempt metrics. Supports time bucketing via granularity,
dimensional grouping, and filtering.

**Measures:** `count`, `successful_count`, `failed_count`, `error_rate`,
`first_attempt_count`, `retry_count`, `manual_retry_count`, `avg_attempt_number`,
`rate`, `successful_rate`, `failed_rate`

**Dimensions:** `tenant_id` (admin-only), `destination_id`, `destination_type`, `topic`, `status`, `code`, `manual`, `attempt_number`

**Filters:** `tenant_id` (admin-only), `destination_id`, `destination_type`, `topic`, `status`, `code`, `manual`, `attempt_number`

## Query parameters

- `time` object, required
  - `start` string, date-time, required — Start of the time range (inclusive). ISO 8601 timestamp.
  - `end` string, date-time, required — End of the time range (exclusive). ISO 8601 timestamp.
- `granularity` string
- `measures` union, required
  - 'count' | 'successful_count' | 'failed_count' | 'error_rate' | 'first_attempt_count' | 'retry_count' | 'manual_retry_count' | 'avg_attempt_number' | 'rate' | 'successful_rate' | 'failed_rate'
  - string[]
- `dimensions` union
  - 'tenant_id' | 'destination_id' | 'destination_type' | 'topic' | 'status' | 'code' | 'manual' | 'attempt_number'
  - string[]
- `filters[destination_id]` union
  - string
  - string[]
- `filters[destination_type]` union
  - 'webhook' | 'aws_sqs' | 'rabbitmq' | 'hookdeck' | 'aws_kinesis' | 'azure_servicebus' | 'aws_s3' | 'gcp_pubsub' — Type of destination.
  - DestinationType[]
- `filters[topic]` union
  - string
  - string[]
- `filters[status]` union
  - 'success' | 'failed'
  - string[]
- `filters[code]` union
  - string
  - string[]
- `filters[manual]` 'true' | 'false'
- `filters[attempt_number]` union
  - string
  - string[]
- `filters[tenant_id]` union
  - string
  - string[]

## Response `200`

Aggregated attempt metrics.

- MetricsResponse
  - `data` MetricsDataPoint[] — Array of aggregated data points.
    - `time_bucket` string, date-time — Start of the time bucket. Absent when no granularity is specified.
    - `dimensions` object — Dimension values for this data point. Empty object when no dimensions are requested.
    - `metrics` object — Requested measure values for this data point.
  - `metadata` MetricsMetadata
    - `granularity` string — The granularity used for time bucketing. Absent when none was specified.
    - `query_time_ms` integer — Query execution time in milliseconds.
    - `row_count` integer — Number of data points returned.
    - `row_limit` integer — Maximum number of rows the query will return.
    - `truncated` boolean — Whether the results were truncated due to hitting the row limit.

## Other responses

- `400` — Malformed JSON or invalid request parameters.
- `401` — Missing or invalid authentication credentials.
- `403` — JWT caller attempted to use admin-only dimension or filter (tenant_id).
- `500` — Unexpected server error.

---

[API](https://skmtc.net/hookdeck/apis/outpost-api.md) · [All operations](https://skmtc.net/hookdeck/apis/outpost-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/hookdeck/outpost-api/revisions/506c7bcee34b/schema)
