---
title: "Per-country participant churn"
method: GET
path: "/v1/stats/countries/{code}"
tags: ["Participants"]
---

# Per-country participant churn

`GET /v1/stats/countries/{code}`

## Request

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

New (joiner) vs departed (leaver) participants for one country, as a daily series and an all-time monthly rollup, from the hourly churn rollup. A valid but unknown country returns empty arrays. Keyless-cacheable.

## Path parameters

- `code` string, required

## Query parameters

- `from` string, date
- `to` string, date

## Response `200`

The country's daily + monthly participant churn.

- object
  - `country` string, required: The normalized (uppercase) country code.
  - `churn_epoch` string, date, required: The date joiner counting begins (earlier is backfill, not churn).
  - `unique_organizations` integer, nullable: Distinct organizations behind this country's participant IDs (derived company_key), or null until the rollup has computed it (issue #451).
  - `daily` object[], required
    - `day` string, date, required
    - `joiners` integer, required
    - `leavers` integer, required
  - `monthly` object[], required
    - `month` string, required: The month as `YYYY-MM`.
    - `joiners` integer, required
    - `leavers` integer, required
    - `net` integer, required: joiners - leavers.

## Other responses

- `400`: An invalid `code`, `from` or `to`.

---

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