---
title: "Get a participant's measured availability"
method: GET
path: "/v1/participants/{id}/availability"
tags: ["Participants"]
---

# Get a participant's measured availability

`GET /v1/participants/{id}/availability`

## Request

- Base URL: `https://api.peppolstatus.com`
- URL: `https://api.peppolstatus.com/v1/participants/{id}/availability`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

The real, probe-measured reachability of one Peppol ID over time. Two lanes — the participant's SMP host (discovery) and its Access Point host(s) (delivery) — are read from the uptime ladder and merged per bucket into one verdict (available | degraded | unreachable | no_data): an AP with any down check is unreachable; an AP up/degraded with the SMP down is degraded (discovery impaired, still deliverable); both lanes up is available. Returns per-lane `UptimeBucket` ladders, the worst-of combined lane, 30/90-day + full headline uptime (degraded counts as available), a monthly 99.5% Peppol AP service-level TARGET (never a contractual claim), host-change markers and window-overlapping incidents. `daily` spans the full history; `hourly` covers the last 90 days. Buckets before the 2026-08-02 AP epoch carry partial AP attribution (`pre_epoch`).

## Path parameters

- `id` string, required

## Query parameters

- `resolution` 'daily' | 'hourly'
- `from` string, date-time
- `to` string, date-time

## Response `200`

The participant's measured availability.

- ParticipantAvailability: A Peppol ID's measured availability: per-lane uptime ladders, the merged combined lane, headline uptime, a monthly service-level TARGET, host-change markers and overlapping incidents.
  - `id` string, required: Canonical `scheme::value` Peppol identifier.
  - `resolution` 'daily' | 'hourly', required
  - `coverage_from` string, date-time, nullable, required: Earliest bucket held for this ID; null when nothing is monitored.
  - `window` object, required
    - `from` string, date-time, required
    - `to` string, date-time, required
  - `pre_epoch_partial` boolean, required: Any returned bucket precedes the 2026-08-02 AP epoch.
  - `epoch` string, date-time, required
  - `headline` object, required: Headline uptime %, degraded counts as available. The uptime_pct_* fields are AP delivery-lane uptime (the measured delivery lane, AP-scoped — not overall availability); the smp_uptime_pct_* companions are the SMP discovery-lane uptime.
    - `uptime_pct_30d` number, nullable, required: AP delivery uptime over the trailing 30 days.
    - `uptime_pct_90d` number, nullable, required: AP delivery uptime over the trailing 90 days.
    - `uptime_pct_full` number, nullable, required: AP delivery uptime over the full held window.
    - `checks_total_full` integer, required: AP delivery checks over the full held window.
    - `smp_uptime_pct_30d` number, nullable, required: SMP discovery uptime over the trailing 30 days.
    - `smp_uptime_pct_90d` number, nullable, required: SMP discovery uptime over the trailing 90 days.
    - `smp_uptime_pct_full` number, nullable, required: SMP discovery uptime over the full held window.
    - `smp_checks_total_full` integer, required: SMP discovery checks over the full held window.
  - `sla_target` object, required: A Peppol AP service-level TARGET — a target, never a contractual claim.
    - `target_pct` number, required
    - `scope` string, required
    - `months` object[], required
      - `month` string, required: Calendar month, `YYYY-MM` (UTC).
      - `ap_uptime_pct` number, nullable, required
      - `meets_target` boolean, required
  - `lanes` object, required
    - `smp` object, required
      - `host` string, nullable, required
      - `buckets` UptimeBucket[], required
        - `resolution` 'hourly' | 'daily' | 'monthly', required
        - `hostname` string, required
        - `role` 'SMP' | 'AP', required
        - `location` string, required
        - `bucket_start` string, date-time, required
        - `checks_total` integer, required
        - `up` integer, required
        - `degraded` integer, required
        - `down` integer, required
        - `uptime_pct` number, required
        - `phases` UptimePhasePercentiles, required
          - `dns` UptimePercentiles, required: Latency percentiles for one phase, whole milliseconds.
            - `p50` number, required
            - `p95` number, required
            - `p99` number, required
          - `tcp` UptimePercentiles, required: Latency percentiles for one phase, whole milliseconds.
            - `p50` number, required
            - `p95` number, required
            - `p99` number, required
          - `tls` UptimePercentiles, required: Latency percentiles for one phase, whole milliseconds.
            - `p50` number, required
            - `p95` number, required
            - `p99` number, required
          - `http` UptimePercentiles, required: Latency percentiles for one phase, whole milliseconds.
            - `p50` number, required
            - `p95` number, required
            - `p99` number, required
          - `total` UptimePercentiles, required: Latency percentiles for one phase, whole milliseconds.
            - `p50` number, required
            - `p95` number, required
            - `p99` number, required
    - `ap` object, required
      - `hosts` string[], required
      - `buckets` UptimeBucket[], required: The worst-of AP bucket per bucket_start.
        - `resolution` 'hourly' | 'daily' | 'monthly', required
        - `hostname` string, required
        - `role` 'SMP' | 'AP', required
        - `location` string, required
        - `bucket_start` string, date-time, required
        - `checks_total` integer, required
        - `up` integer, required
        - `degraded` integer, required
        - `down` integer, required
        - `uptime_pct` number, required
        - `phases` UptimePhasePercentiles, required
          - `dns` UptimePercentiles, required: Latency percentiles for one phase, whole milliseconds.
            - `p50` number, required
            - `p95` number, required
            - `p99` number, required
          - `tcp` UptimePercentiles, required: Latency percentiles for one phase, whole milliseconds.
            - `p50` number, required
            - `p95` number, required
            - `p99` number, required
          - `tls` UptimePercentiles, required: Latency percentiles for one phase, whole milliseconds.
            - `p50` number, required
            - `p95` number, required
            - `p99` number, required
          - `http` UptimePercentiles, required: Latency percentiles for one phase, whole milliseconds.
            - `p50` number, required
            - `p95` number, required
            - `p99` number, required
          - `total` UptimePercentiles, required: Latency percentiles for one phase, whole milliseconds.
            - `p50` number, required
            - `p95` number, required
            - `p99` number, required
      - `by_host` object, required
    - `combined` CombinedAvailabilityBucket[], required
      - `bucket_start` string, date-time, required
      - `verdict` 'available' | 'degraded' | 'unreachable' | 'no_data', required: The merged per-bucket verdict: available (both lanes up), degraded (AP up but discovery/SMP down, or an AP host degraded), unreachable (an AP host down), or no_data (the delivery lane was not measured).
      - `smp_host` string, nullable, required
      - `ap_hosts` string[], required
      - `smp` object, nullable, required
        - `up` integer, required
        - `degraded` integer, required
        - `down` integer, required
        - `checks_total` integer, required
        - `uptime_pct` number, required
      - `ap` object, nullable, required
        - `up` integer, required
        - `degraded` integer, required
        - `down` integer, required
        - `checks_total` integer, required
        - `uptime_pct` number, required
        - `worst_host` string, nullable, required
      - `pre_epoch` boolean, required: The bucket precedes the 2026-08-02 AP epoch: AP attribution is partial.
  - `host_changes` object[], required
    - `at` string, date-time, required
    - `kind` 'smp' | 'ap', required
    - `from` string, nullable, required
    - `to` string, nullable, required
  - `incidents` object[], required
    - `id` integer, required
    - `hostname` string, required
    - `role` 'SMP' | 'AP', required
    - `status` string, required
    - `severity` string, required
    - `started_at` string, date-time, required
    - `ended_at` string, date-time, nullable, required

## Other responses

- `400`: An invalid `id`, `resolution` or range.

---

[API](https://skmtc.dev/peppolstatus/apis/peppolstatus-api.md) · [All operations](https://skmtc.dev/peppolstatus/apis/peppolstatus-api/llms.txt) · [OpenAPI document](https://skmtc.dev/peppolstatus/apis/peppolstatus-api/revisions/7e74fb32f23c?raw)
