---
title: "Get data for upcoming calendar events"
method: GET
path: "/statistics/calendar"
tags: ["Statistics"]
---

# Get data for upcoming calendar events

`GET /statistics/calendar`

## Query parameters

- `startDate` string, required
- `endDate` string

## Response `200`

OK

- CalendarDataDTO
  - `data` object[], required — Date for the calendar entry
    - `date` string, required — Date for the calendar entry
    - `upcomingRecurringPayments` number, required — Count of upcoming recurring payments for this date
    - `upcomingRetries` number, required — Count of upcoming retries for this date
    - `successfulRebills` number, required — Count of successful rebills for this date
    - `softDeclines` number, required — Count of soft declines for this date
    - `hardDeclines` number, required — Count of hard declines for this date

## Other responses

- `202` — The merchant is entitled but its environment is not provisioned yet. Provisioning has been kicked off (exactly once) and is in progress; retry the request — it succeeds once the environment is ready. Returned only for identity-token (dashboard) requests bound to a merchant, not for secret-key API calls; any such endpoint can return it while provisioning is underway.
- `400` — The request was rejected. `type` is `invalid_request_error` when the request itself is at fault — `errors` then lists every problem found, with field-attributable entries prefixed by the field’s path; `invalid_state_error` when the request was well-formed but the resource is not in a state that allows it; or `payment_error` when the payment was refused by the issuer or processor.
- `401` — No API key was supplied, or the key is not valid. `type` is `authentication_error`.
- `403` — The API key is valid but lacks the permission this operation requires. `type` is `permission_error`.
- `429` — Too many requests. The rate limit is applied per client across all operations. `type` is `rate_limit_error`.
- `500` — The request could not be completed because of an unexpected error. `type` is `api_error`.
- `504` — The request exceeded the processing time limit and was abandoned. `type` is `api_error` and `code` is `timeout` — unlike a plain 500 the request may still have taken effect, so retry with the same idempotency key rather than blindly.

---

[API](https://skmtc.dev/odus/apis/odus-orchestration-api.md) · [All operations](https://skmtc.dev/odus/apis/odus-orchestration-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/odus/odus-orchestration-api/revisions/d5fdcba31576/schema)
