---
title: "Public holiday calendar for a country, paid per call over x402 (same data is free at /v1/{country}/public-holidays)"
method: GET
path: "/v1/holidays/{country}"
tags: ["Reference data"]
---

# Public holiday calendar for a country, paid per call over x402 (same data is free at /v1/{country}/public-holidays)

`GET /v1/holidays/{country}`

## Request

- Base URL: `https://asiaref.dev`
- URL: `https://asiaref.dev/v1/holidays/{country}`
- Auth: one of:
  - API key in header `PAYMENT-SIGNATURE`
  - API key in header `X-PAYMENT`
  - API key in header `X-API-Key`

The same cited payload as GET /v1/{country}/public-holidays, sold per call so x402 agents and indexes (Coinbase Bazaar) can discover and pay for it like any other resource. Optional ?year=YYYY filters to one calendar year. Website visitors and anyone happy with the free route should use /v1/{country}/public-holidays, which stays free.

## Path parameters

- `country` 'ae' | 'bd' | 'bh' | 'cn' | 'hk' | 'id' | 'il' | 'in' | 'iq' | 'jo' | 'jp' | 'kr' | 'kw' | 'kz' | 'lk' | 'my' | 'np' | 'om' | 'ph' | 'pk' | 'qa' | 'sa' | 'sg' | 'th' | 'tr' | 'tw' | 'uz' | 'vn', required

## Query parameters

- `year` string

## Response `200`

Holiday calendar, plus `subdivisions` where the country has regions

- object
  - `country` string, required: ISO 3166-1 alpha-2 country code
  - `series` string, required
  - `value` unknown, required
  - `unit` string
  - `effective_from` string, date, nullable, required
  - `effective_from_basis` 'restatement': Optional. Absent: effective_from is the date the value became the law (a genuine change point). 'restatement': effective_from is the date the value's CURRENT LEGAL BASIS took effect (a new tax code, an annual finance law) while the value itself is older and its true origin is not primary-verifiable — a verified floor, not a change. Do not read a restatement row as the value having changed on that date.
  - `last_confirmed` string, date, required: When this value was last verified against the official source
  - `source` object, required
    - `name` string, required
    - `url` string, uri, required
  - `stale` boolean, required: True when past the expected update cycle — treat with caution
  - `notes` string
  - `effective_rate` number: Optional. Combined effective rate where statutory levies stack on top of the standard rate (e.g. Ghana VAT 15% + NHIL 2.5% + GETFund 2.5% = 20%). Present only where it differs from value.
  - `components` object[]: Optional. Breakdown of a composite rate into its named statutory components (present only where applicable, e.g. Ghana VAT).
    - `name` string, required
    - `rate` number, required
  - `confidence_label` 'high' | 'medium' | 'low': Derived from source type, verification age, stale. Rules: /label-rules
  - `coverage_label` 'ready' | 'partial' | 'gap': ready=complete, partial=limited, gap=no number. Rules: /label-rules
  - `label_basis` object: Inputs and rule ids behind both labels

## Other responses

- `402`: Payment required (x402)
- `404`: Unknown country

---

[API](https://skmtc.dev/asiaref/apis/asiaref-asian-government-reference-data.md) · [All operations](https://skmtc.dev/asiaref/apis/asiaref-asian-government-reference-data/llms.txt) · [OpenAPI document](https://skmtc.dev/asiaref/apis/asiaref-asian-government-reference-data/revisions/5f44dcf21e74?raw)
