Display Persian, Islamic, and Gregorian dates on your website
Use the public Emrooz API for calendar catalogs, localized event tags, holiday feeds, and embeddable calendar widgets. Developer API keys unlock higher request limits and webhook management.
Base URL
https://api.emrooz.app/api/v1Create a developer API key
curl -X POST https://api.emrooz.app/api/v1/developer/register \
-H "Content-Type: application/json" \
-d '{
"name": "Calendar Integration",
"email": "[email protected]",
"company": "Example Co",
"website": "https://example.com"
}'Call a public catalog endpoint with a developer key
curl https://api.emrooz.app/api/v1/calendar/public-events?locale=en \
-H "X-API-Key: emz_your_api_key_here"| Method | Path | Description |
|---|---|---|
| POST | /developer/register | Create a developer API key. The response includes `api_key` once, plus the key prefix, plan, and rate limit. |
| GET | /developer/plans | List available developer plans, rate limits, and included features. |
| GET | /developer/me | Return the current developer key profile and active webhook subscriptions. Requires a developer API key. |
| POST | /developer/rotate-key | Rotate the current developer key and return the new `api_key` once. Requires a developer API key. |
| GET | /calendar/public-events/manifest | Return public calendar catalog metadata, including the current version and calendar offset data. |
| GET | /calendar/public-events/tags | Return localized public event tags. Supports the `locale` query parameter. |
| GET | /calendar/public-events | Return the published public event catalog. Supports `locale`, `country_code`, `region`, and `tag` filters. |
| GET | /feeds/holidays/{country}/{calendar}.ics | Return an iCalendar holiday feed. A developer key enables the combined `country=all` feed. |
| POST | /embed/validate-key | Validate an `emb_` widget key for a host and return plan, white-label, accent color, and remaining-load metadata. |
The backend currently publishes one catalog-change webhook. Subscribe to it when your integration needs to refresh cached public calendar data after the catalog version changes.
Event name
calendar.version_bumpWhen it fires
It fires when the public calendar catalog version is bumped, including admin catalog changes, Islamic offset updates, and scheduled publication refreshes.
Create a webhook subscription
curl -X POST https://api.emrooz.app/api/v1/developer/webhooks \
-H "Content-Type: application/json" \
-H "X-API-Key: emz_your_api_key_here" \
-d '{
"url": "https://example.com/webhooks/emrooz",
"event": "calendar.version_bump"
}'Example delivery payload
{
"event": "calendar.version_bump",
"data": {
"version": 42,
"updated_at": "2026-06-12T15:30:00+00:00",
"events_count": 384
},
"timestamp": "2026-06-12T15:30:01+00:00"
}| Method | Path | Description |
|---|---|---|
| POST | /developer/webhooks | Create a webhook subscription for `calendar.version_bump`. Requires the `calendar_data` developer plan. The response returns `secret` once. |
| DELETE | /developer/webhooks/{webhook} | Delete one webhook subscription owned by the current developer key. |
After you receive an API key, place this code anywhere in your HTML page:
Every external embed requires `data-key`. Free keys keep the Emrooz footer; Pro keys unlock white-label and server-managed accent color.
<div id="emrooz-widget"></div>
<script src="https://emrooz.app/embed.js"
data-key="emb_your_api_key_here">
</script>Customize the widget via `data-*` attributes and API key settings:
| Attribute | Type | Default | Description |
|---|---|---|---|
| data-theme | "light" | "dark" | "auto" | "auto" | Widget color theme |
| data-locale | "fa" | "en" | "ar" | "fa" | Language and digit system |
| data-target | CSS selector | "#emrooz-widget" | Widget container selector |
| data-key | string | (required) | API key for monthly quota and paid features (white-label, custom accent) |
Dark theme:
<div id="emrooz-widget"></div>
<script src="https://emrooz.app/embed.js"
data-key="emb_your_api_key_here"
data-theme="dark">
</script>English locale:
<div id="emrooz-widget"></div>
<script src="https://emrooz.app/embed.js"
data-key="emb_your_api_key_here"
data-locale="en"
data-theme="light">
</script>Pro key:
<div id="emrooz-widget"></div>
<script src="https://emrooz.app/embed.js"
data-key="emb_your_pro_key_here"
data-theme="auto">
</script>
<!-- White-label + accent color are configured on the API key -->The widget below is loaded live from emrooz.app:
Free plan for personal sites and Pro plan for businesses
Free
Pro
RecommendedUsage with API key:
<div id="emrooz-widget"></div>
<script src="https://emrooz.app/embed.js"
data-key="emb_your_api_key_here"
data-theme="auto">
</script>