# Islamic Network

> The Islamic calendar as a set of free, keyless APIs: the devotional year with what to read on each blessed day, what happened on this day in history, the prophets, saints, scholars and companions, their sayings in the original with translations, and the stories told of them.

App · Misc References · 28 actions. Web page: https://docs.lodol.com/docs/integrations/islamic-network

## Actions

### Browse devotions

Browse one collection of devotions: the duas, the adhkaar or the salawaat. Paginated. No API key required.

**Inputs**

- Collection (`collection`, text, required): Which collection to read: 'duas', 'adhkaars' or 'salawaats'. The routes spell these in the plural and answer the singular with a 404, so the singular is accepted here and translated: 'dua' and 'dhikr' both work. One of: `salawaats`, `adhkaars`, `duas`.
- Page (`page`, number): Which page of results to read, counting from 1. Every result reports 'total', 'total_pages' and 'has_more', so a loop can tell when it is done. From 1 to 10000.
- Results per page (`limit`, number): How many results per page, from 1 to 200. Defaults to 50. From 1 to 200.

**Outputs**

- `collection` (text)
- `count` (number)
- `devotions` (list)
- `has_more` (true/false)
- `limit` (number)
- `page` (number)
- `total` (number)
- `total_pages` (number)

**Example output**

```json
{
  "collection": "duas",
  "count": 1,
  "devotions": [
    {
      "days": null,
      "formula": null,
      "id": "ab9bf275-a40a-4764-8929-0dd2aca0536c",
      "months": null,
      "name": {
        "ar": "\u0635\u064e\u0644\u064e\u0627\u0629\u064f \u0627\u0644\u062a\u064e\u0651\u0633\u0652\u0628\u0650\u064a\u062d",
        "ar_latn": "\u1e62al\u0101t al-Tasb\u012b\u1e25",
        "en": "Salat al-Tasbih",
        "text": "Salat al-Tasbih"
      },
      "slug": "salat-al-tasbih",
      "url": "https://pray.api.islamic.network/v1/salaats/salat-al-tasbih"
    }
  ],
  "has_more": false,
  "limit": 50,
  "page": 1,
  "total": 57,
  "total_pages": 2
}
```

### Browse events

Browse every recorded event in calendar order, paginated. No API key required.

**Inputs**

- Page (`page`, number): Which page of results to read, counting from 1. Every result reports 'total', 'total_pages' and 'has_more', so a loop can tell when it is done. From 1 to 10000.
- Results per page (`limit`, number): How many results per page, from 1 to 200. Defaults to 50. From 1 to 200.

**Outputs**

- `count` (number)
- `events` (list)
- `has_more` (true/false)
- `limit` (number)
- `page` (number)
- `total` (number)
- `total_pages` (number)

**Example output**

```json
{
  "count": 1,
  "events": [
    {
      "date": {
        "day": 10,
        "month": 1
      },
      "description": {
        "html": null,
        "language": null,
        "text": null
      },
      "people": [],
      "slug": "acceptance-of-the-repentance-of-adam",
      "title": {
        "ar": "\u0642\u064e\u0628\u064f\u0648\u0644\u064f \u062a\u064e\u0648\u0652\u0628\u064e\u0629\u0650 \u0622\u062f\u064e\u0645\u064e \u0639\u064e\u0644\u064e\u064a\u0652\u0647\u0650 \u0627\u0644\u0633\u064e\u0651\u0644\u064e\u0627\u0645",
        "ar_latn": "Qab\u016bl Tawbat \u0100dam \u02bfalayhis-sal\u0101m",
        "en": "The acceptance of the repentance of Adam (peace be upon him)",
        "text": "The acceptance of the repentance of Adam (peace be upon him)"
      },
      "url": "https://events.api.islamic.network/v1/events/acceptance-of-the-repentance-of-adam"
    }
  ],
  "has_more": false,
  "limit": 50,
  "page": 1,
  "total": 120,
  "total_pages": 3
}
```

### Browse people

Browse the registry of people, optionally narrowed to one kind such as the prophets or the companions. Paginated. No API key required.

**Inputs**

- Only this kind (`person_kind`, text): Narrow to one kind of person, such as 'prophet'. Leave empty for everyone. The kinds a record carries are reported on every result, so browsing once shows what is available.
- Page (`page`, number): Which page of results to read, counting from 1. Every result reports 'total', 'total_pages' and 'has_more', so a loop can tell when it is done. From 1 to 10000.
- Results per page (`limit`, number): How many results per page, from 1 to 200. Defaults to 50. From 1 to 200.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `kind` (text)
- `limit` (number)
- `page` (number)
- `people` (list)
- `total` (number)
- `total_pages` (number)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "kind": null,
  "limit": 50,
  "page": 1,
  "people": [
    {
      "biography": {
        "html": null,
        "language": null,
        "text": null
      },
      "honorific": {
        "ar": null,
        "ar_latn": null,
        "en": "may Allah be pleased with him",
        "text": "may Allah be pleased with him"
      },
      "image_url": null,
      "kind": "family-of-the-prophet",
      "lifespan": null,
      "name": {
        "ar": "\u0627\u0644\u0639\u0628\u0627\u0633 \u0628\u0646 \u0639\u0644\u064a",
        "ar_latn": "al-\u02bfAbb\u0101s ibn \u02bfAl\u012b",
        "en": "al-Abbas ibn Ali (Abu al-Fadl)",
        "text": "al-Abbas ibn Ali (Abu al-Fadl)"
      },
      "slug": "abbas-ibn-ali",
      "traces": {
        "events": 1
      },
      "url": "https://people.api.islamic.network/v1/people/abbas-ibn-ali"
    }
  ],
  "total": 120,
  "total_pages": 3
}
```

### Browse prayers

Browse the prayers, each with the days and months it belongs to. Kept on its own route by the service rather than in the three collections, which is why it is its own step. No API key required.

**Inputs**

- Page (`page`, number): Which page of results to read, counting from 1. Every result reports 'total', 'total_pages' and 'has_more', so a loop can tell when it is done. From 1 to 10000.
- Results per page (`limit`, number): How many results per page, from 1 to 200. Defaults to 50. From 1 to 200.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `limit` (number)
- `page` (number)
- `salaats` (list)
- `total` (number)
- `total_pages` (number)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "limit": 50,
  "page": 1,
  "salaats": [
    {
      "days": null,
      "formula": null,
      "id": "ab9bf275-a40a-4764-8929-0dd2aca0536c",
      "months": null,
      "name": {
        "ar": "\u0635\u064e\u0644\u064e\u0627\u0629\u064f \u0627\u0644\u062a\u064e\u0651\u0633\u0652\u0628\u0650\u064a\u062d",
        "ar_latn": "\u1e62al\u0101t al-Tasb\u012b\u1e25",
        "en": "Salat al-Tasbih",
        "text": "Salat al-Tasbih"
      },
      "slug": "salat-al-tasbih",
      "url": "https://pray.api.islamic.network/v1/salaats/salat-al-tasbih"
    }
  ],
  "total": 12,
  "total_pages": 1
}
```

### Browse quotes

Browse the sayings, narrowed by author, theme or language. Paginated. No API key required.

**Inputs**

- From this person (`author`, text): Only this person's sayings, by their slug. Leave empty for everyone's.
- On this theme (`tag`, text): Only this theme. Leave empty for any.
- In this language (`language`, text): Only quotes available in this language, as a code such as 'en'. Leave empty for any.
- Page (`page`, number): Which page of results to read, counting from 1. Every result reports 'total', 'total_pages' and 'has_more', so a loop can tell when it is done. From 1 to 10000.
- Results per page (`limit`, number): How many results per page, from 1 to 200. Defaults to 50. From 1 to 200.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `limit` (number)
- `page` (number)
- `quotes` (list)
- `total` (number)
- `total_pages` (number)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "limit": 50,
  "page": 1,
  "quotes": [
    {
      "author": {
        "name": {
          "ar": null,
          "ar_latn": null,
          "en": "Bayazid Bistami",
          "text": "Bayazid Bistami"
        },
        "slug": "bayazid-bistami",
        "url": "https://people.api.islamic.network/v1/people/bayazid-bistami"
      },
      "id": 1,
      "original": {
        "language": "ar",
        "text": "\u0645\u064e\u0646\u0652 \u0644\u064e\u0627 \u0634\u064e\u064a\u0652\u062e\u064e \u0644\u064e\u0647\u064f \u0641\u064e\u0634\u064e\u064a\u0652\u062e\u064f\u0647\u064f \u0627\u0644\u0634\u064e\u0651\u064a\u0652\u0637\u064e\u0627\u0646"
      },
      "source": null,
      "tags": [],
      "text": "He who does not have a shaykh, his shaykh is Satan.",
      "translations": [
        {
          "language": "en",
          "text": "He who does not have a shaykh, his shaykh is Satan."
        }
      ],
      "url": "https://quotes.api.islamic.network/v1/quotes/1"
    }
  ],
  "total": 240,
  "total_pages": 5
}
```

### Browse stories

Browse the stories, newest first, narrowed by theme or by the person they concern. These are summaries: the service leaves the prose out of a list, so use 'Get a story' for the body. No API key required.

**Inputs**

- On this theme (`tag`, text): Only stories filed under this theme, by its slug. Use 'List story themes' to see what there is. Leave empty for all.
- About this person (`person`, text): Only stories concerning this person, by their slug. Leave empty for all.
- Page (`page`, number): Which page of results to read, counting from 1. Every result reports 'total', 'total_pages' and 'has_more', so a loop can tell when it is done. From 1 to 10000.
- Results per page (`limit`, number): How many results per page, from 1 to 200. Defaults to 50. From 1 to 200.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `limit` (number)
- `page` (number)
- `person` (text)
- `stories` (list)
- `tag` (text)
- `total` (number)
- `total_pages` (number)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "limit": 50,
  "page": 1,
  "person": null,
  "stories": [
    {
      "body": {
        "html": null,
        "language": null,
        "text": null
      },
      "description": {
        "html": null,
        "language": "en",
        "text": "A story of obedience and its reward."
      },
      "image_url": null,
      "people": [],
      "published": "2026-01-01",
      "slug": "the-blessing-of-following-without-question",
      "source": null,
      "tags": [],
      "title": {
        "ar": null,
        "ar_latn": null,
        "en": "The Blessing of Following Without Question",
        "text": "The Blessing of Following Without Question"
      },
      "url": "https://stories.api.islamic.network/v1/stories/the-blessing-of-following-without-question"
    }
  ],
  "tag": null,
  "total": 29,
  "total_pages": 1
}
```

### Check service status

Check whether Islamic Network is answering, and how quickly. This is five separate services on five hosts, so each is checked and reported on its own: 'ok' is true only when all five answered. Put this in front of a long workflow and branch on it, rather than discovering one service is down halfway through. Never fails the step. No API key required.

**Inputs**: None.

**Outputs**

- `api_count` (number)
- `apis` (object)
- `healthy_count` (number)
- `ok` (true/false)

**Example output**

```json
{
  "api_count": 5,
  "apis": {
    "events": {
      "latency_ms": 640.0,
      "message": null,
      "ok": true,
      "status_code": 200
    },
    "people": {
      "latency_ms": 640.0,
      "message": null,
      "ok": true,
      "status_code": 200
    },
    "pray": {
      "latency_ms": 640.0,
      "message": null,
      "ok": true,
      "status_code": 200
    },
    "quotes": {
      "latency_ms": 640.0,
      "message": null,
      "ok": true,
      "status_code": 200
    },
    "stories": {
      "latency_ms": 640.0,
      "message": null,
      "ok": true,
      "status_code": 200
    }
  },
  "healthy_count": 5,
  "ok": true
}
```

### Find a person

Find a prophet, saint, scholar or companion by name and get back the slug the other steps need. The step to put in front of the rest when all a workflow has is a name out of a form field. Diacritics are folded by the service, so 'ali' finds the names written with their marks. No API key required.

**Inputs**

- Name (`query`, text, required): What to look for. Islamic Network folds diacritics itself, so 'ashura' finds 'ʿĀshūrāʾ' without the marks. At least 2 characters.
- Page (`page`, number): Which page of results to read, counting from 1. Every result reports 'total', 'total_pages' and 'has_more', so a loop can tell when it is done. From 1 to 10000.
- Results per page (`limit`, number): How many results per page, from 1 to 200. Defaults to 50. From 1 to 200.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `limit` (number)
- `page` (number)
- `query` (text)
- `results` (list)
- `total` (number)
- `total_pages` (number)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "limit": 50,
  "page": 1,
  "query": "ali",
  "results": [
    {
      "honorific": {
        "ar": null,
        "ar_latn": null,
        "en": "may Allah be pleased with him",
        "text": "may Allah be pleased with him"
      },
      "id": null,
      "kind": "family-of-the-prophet",
      "matched_in": [
        "name"
      ],
      "name": {
        "ar": "\u0627\u0644\u0639\u0628\u0627\u0633 \u0628\u0646 \u0639\u0644\u064a",
        "ar_latn": "al-\u02bfAbb\u0101s ibn \u02bfAl\u012b",
        "en": "al-Abbas ibn Ali (Abu al-Fadl)",
        "text": "al-Abbas ibn Ali (Abu al-Fadl)"
      },
      "slug": "abbas-ibn-ali",
      "type": "person",
      "url": "https://people.api.islamic.network/v1/people/abbas-ibn-ali"
    }
  ],
  "total": 29,
  "total_pages": 1
}
```

### Get a day's devotions

Everything the calendar holds for one day of the Hijri year, named by month and day. An ordinary day comes back with 'has_devotions' false rather than as an error, because most days are ordinary. No API key required.

**Inputs**

- Hijri month (`month`, number, required): The Hijri month, as a number from 1 to 12. 1 is Muharram and 12 is Dhu al-Hijjah. Use 'List the Hijri months' if you need the names. From 1 to 12.
- Day of the month (`day`, number, required): The day of the Hijri month, from 1 to 30. Most days are ordinary days with nothing recorded on them, which comes back as an empty result rather than an error. From 1 to 30.

**Outputs**

- `day` (object)
- `day_number` (number)
- `devotion_count` (number)
- `has_devotions` (true/false)
- `month_number` (number)

**Example output**

```json
{
  "day": {
    "adhkaars": [],
    "description": {
      "html": "<p>On this day, many significant occurrences have occurred.</p>",
      "language": "en",
      "text": "On this day, many significant occurrences have occurred."
    },
    "devotion_count": 1,
    "duas": [],
    "events": [
      {
        "date": {
          "day": 10,
          "month": 1
        },
        "description": {
          "html": null,
          "language": null,
          "text": null
        },
        "people": [],
        "slug": "acceptance-of-the-repentance-of-adam",
        "title": {
          "ar": "\u0642\u064e\u0628\u064f\u0648\u0644\u064f \u062a\u064e\u0648\u0652\u0628\u064e\u0629\u0650 \u0622\u062f\u064e\u0645\u064e \u0639\u064e\u0644\u064e\u064a\u0652\u0647\u0650 \u0627\u0644\u0633\u064e\u0651\u0644\u064e\u0627\u0645",
          "ar_latn": "Qab\u016bl Tawbat \u0100dam \u02bfalayhis-sal\u0101m",
          "en": "The acceptance of the repentance of Adam (peace be upon him)",
          "text": "The acceptance of the repentance of Adam (peace be upon him)"
        },
        "url": "https://events.api.islamic.network/v1/events/acceptance-of-the-repentance-of-adam"
      }
    ],
    "id": "0e23cec0-2cf1-459b-b12d-4c8df75c6454",
    "month": {
      "description": {
        "html": null,
        "language": null,
        "text": null
      },
      "name": {
        "ar": "\u0645\u064f\u062d\u064e\u0631\u064e\u0651\u0645",
        "ar_latn": "Mu\u1e25arram",
        "en": "Muharram",
        "text": "Muharram"
      },
      "number": 1,
      "url": "https://pray.api.islamic.network/v1/calendar/1"
    },
    "name": {
      "ar": "\u064a\u064e\u0648\u0652\u0645\u064f \u0639\u064e\u0627\u0634\u064f\u0648\u0631\u064e\u0627\u0621",
      "ar_latn": "Yawm \u02bf\u0100sh\u016br\u0101\u02be",
      "en": "Day of Ashura",
      "text": "Day of Ashura"
    },
    "number": 10,
    "salaats": [
      {
        "days": null,
        "formula": null,
        "id": "ab9bf275-a40a-4764-8929-0dd2aca0536c",
        "months": null,
        "name": {
          "ar": "\u0635\u064e\u0644\u064e\u0627\u0629\u064f \u0627\u0644\u062a\u064e\u0651\u0633\u0652\u0628\u0650\u064a\u062d",
          "ar_latn": "\u1e62al\u0101t al-Tasb\u012b\u1e25",
          "en": "Salat al-Tasbih",
          "text": "Salat al-Tasbih"
        },
        "slug": "salat-al-tasbih",
        "url": "https://pray.api.islamic.network/v1/salaats/salat-al-tasbih"
      }
    ],
    "salawaats": [],
    "slug": "muharram-10",
    "url": "https://pray.api.islamic.network/v1/calendar/1/10",
    "what_to_do": {
      "html": "<ul><li>Salam should be given to at least 10 Muslims.</li></ul>",
      "language": "en",
      "text": "Salam should be given to at least 10 Muslims."
    }
  },
  "day_number": 10,
  "devotion_count": 1,
  "has_devotions": true,
  "month_number": 1
}
```

### Get a day's events

Every event recorded on one Hijri day, named by month and day. A day with nothing recorded comes back empty rather than as an error. No API key required.

**Inputs**

- Hijri month (`month`, number, required): The Hijri month, as a number from 1 to 12. 1 is Muharram and 12 is Dhu al-Hijjah. Use 'List the Hijri months' if you need the names. From 1 to 12.
- Day of the month (`day`, number, required): The day of the Hijri month, from 1 to 30. Most days are ordinary days with nothing recorded on them, which comes back as an empty result rather than an error. From 1 to 30.

**Outputs**

- `day_number` (number)
- `event_count` (number)
- `events` (list)
- `has_events` (true/false)
- `month_number` (number)

**Example output**

```json
{
  "day_number": 10,
  "event_count": 1,
  "events": [
    {
      "date": {
        "day": 10,
        "month": 1
      },
      "description": {
        "html": null,
        "language": null,
        "text": null
      },
      "people": [],
      "slug": "acceptance-of-the-repentance-of-adam",
      "title": {
        "ar": "\u0642\u064e\u0628\u064f\u0648\u0644\u064f \u062a\u064e\u0648\u0652\u0628\u064e\u0629\u0650 \u0622\u062f\u064e\u0645\u064e \u0639\u064e\u0644\u064e\u064a\u0652\u0647\u0650 \u0627\u0644\u0633\u064e\u0651\u0644\u064e\u0627\u0645",
        "ar_latn": "Qab\u016bl Tawbat \u0100dam \u02bfalayhis-sal\u0101m",
        "en": "The acceptance of the repentance of Adam (peace be upon him)",
        "text": "The acceptance of the repentance of Adam (peace be upon him)"
      },
      "url": "https://events.api.islamic.network/v1/events/acceptance-of-the-repentance-of-adam"
    }
  ],
  "has_events": true,
  "month_number": 1
}
```

### Get a devotion

One prayer, salawaat, dhikr or dua in full, by collection and slug, including the formula to recite. Slugs come from the browse and search steps and are stable, so one stored last month still names the same devotion. No API key required.

**Inputs**

- Collection (`collection`, text, required): Which collection to read: 'duas', 'adhkaars' or 'salawaats'. The routes spell these in the plural and answer the singular with a 404, so the singular is accepted here and translated: 'dua' and 'dhikr' both work. 'salaats' is accepted too, for a prayer.
- Slug (`slug`, text, required): The devotion's slug, as an earlier step reported it, such as 'dua-al-afiyah'.

**Outputs**

- `collection` (text)
- `devotion` (object)

**Example output**

```json
{
  "collection": "salaats",
  "devotion": {
    "days": null,
    "formula": null,
    "id": "ab9bf275-a40a-4764-8929-0dd2aca0536c",
    "months": null,
    "name": {
      "ar": "\u0635\u064e\u0644\u064e\u0627\u0629\u064f \u0627\u0644\u062a\u064e\u0651\u0633\u0652\u0628\u0650\u064a\u062d",
      "ar_latn": "\u1e62al\u0101t al-Tasb\u012b\u1e25",
      "en": "Salat al-Tasbih",
      "text": "Salat al-Tasbih"
    },
    "slug": "salat-al-tasbih",
    "url": "https://pray.api.islamic.network/v1/salaats/salat-al-tasbih"
  }
}
```

### Get a month's devotions

One Hijri month at a glance: its blessed days and the devotions kept through it. The step to build a monthly calendar or digest from. No API key required.

**Inputs**

- Hijri month (`month`, number, required): The Hijri month, as a number from 1 to 12. 1 is Muharram and 12 is Dhu al-Hijjah. Use 'List the Hijri months' if you need the names. From 1 to 12.

**Outputs**

- `adhkaars` (list)
- `day_count` (number)
- `days` (list)
- `description` (object)
- `duas` (list)
- `month` (object)
- `salaats` (list)
- `salawaats` (list)

**Example output**

```json
{
  "adhkaars": [],
  "day_count": 1,
  "days": [
    {
      "month": {
        "description": {
          "html": null,
          "language": null,
          "text": null
        },
        "name": {
          "ar": "\u0645\u064f\u062d\u064e\u0631\u064e\u0651\u0645",
          "ar_latn": "Mu\u1e25arram",
          "en": "Muharram",
          "text": "Muharram"
        },
        "number": 1,
        "url": "https://pray.api.islamic.network/v1/calendar/1"
      },
      "name": {
        "ar": "\u0623\u064e\u064a\u064e\u0651\u0627\u0645\u064f \u0627\u0644\u0652\u0628\u0650\u064a\u0636",
        "ar_latn": "Ayy\u0101m al-B\u012b\u1e0d",
        "en": "The White Days (Ayy\u0101m al-B\u012b\u1e0d)",
        "text": "The White Days (Ayy\u0101m al-B\u012b\u1e0d)"
      },
      "number": 13,
      "slug": "rabi-al-thani-13",
      "url": "https://pray.api.islamic.network/v1/calendar/4/13"
    }
  ],
  "description": {
    "html": null,
    "language": null,
    "text": null
  },
  "duas": [],
  "month": {
    "description": {
      "html": null,
      "language": null,
      "text": null
    },
    "name": {
      "ar": "\u0645\u064f\u062d\u064e\u0631\u064e\u0651\u0645",
      "ar_latn": "Mu\u1e25arram",
      "en": "Muharram",
      "text": "Muharram"
    },
    "number": 1,
    "url": "https://pray.api.islamic.network/v1/calendar/1"
  },
  "salaats": [
    {
      "days": null,
      "formula": null,
      "id": "ab9bf275-a40a-4764-8929-0dd2aca0536c",
      "months": null,
      "name": {
        "ar": "\u0635\u064e\u0644\u064e\u0627\u0629\u064f \u0627\u0644\u062a\u064e\u0651\u0633\u0652\u0628\u0650\u064a\u062d",
        "ar_latn": "\u1e62al\u0101t al-Tasb\u012b\u1e25",
        "en": "Salat al-Tasbih",
        "text": "Salat al-Tasbih"
      },
      "slug": "salat-al-tasbih",
      "url": "https://pray.api.islamic.network/v1/salaats/salat-al-tasbih"
    }
  ],
  "salawaats": []
}
```

### Get a month's events

Every event recorded through one Hijri month, for a monthly digest or a look ahead. No API key required.

**Inputs**

- Hijri month (`month`, number, required): The Hijri month, as a number from 1 to 12. 1 is Muharram and 12 is Dhu al-Hijjah. Use 'List the Hijri months' if you need the names. From 1 to 12.

**Outputs**

- `event_count` (number)
- `events` (list)
- `month` (object)
- `month_number` (number)

**Example output**

```json
{
  "event_count": 1,
  "events": [
    {
      "date": {
        "day": 10,
        "month": 1
      },
      "description": {
        "html": null,
        "language": null,
        "text": null
      },
      "people": [],
      "slug": "acceptance-of-the-repentance-of-adam",
      "title": {
        "ar": "\u0642\u064e\u0628\u064f\u0648\u0644\u064f \u062a\u064e\u0648\u0652\u0628\u064e\u0629\u0650 \u0622\u062f\u064e\u0645\u064e \u0639\u064e\u0644\u064e\u064a\u0652\u0647\u0650 \u0627\u0644\u0633\u064e\u0651\u0644\u064e\u0627\u0645",
        "ar_latn": "Qab\u016bl Tawbat \u0100dam \u02bfalayhis-sal\u0101m",
        "en": "The acceptance of the repentance of Adam (peace be upon him)",
        "text": "The acceptance of the repentance of Adam (peace be upon him)"
      },
      "url": "https://events.api.islamic.network/v1/events/acceptance-of-the-repentance-of-adam"
    }
  ],
  "month": {
    "description": {
      "html": null,
      "language": null,
      "text": null
    },
    "name": {
      "ar": "\u0645\u064f\u062d\u064e\u0631\u064e\u0651\u0645",
      "ar_latn": "Mu\u1e25arram",
      "en": "Muharram",
      "text": "Muharram"
    },
    "number": 1,
    "url": "https://pray.api.islamic.network/v1/calendar/1"
  },
  "month_number": 1
}
```

### Get a person

One person in full: their name in three scripts, the honorific traditionally said after it, their kind, their biography and how much the rest of the ecosystem holds about them. No API key required.

**Inputs**

- Person's slug (`slug`, text, required): The person's slug, as 'Find a person' reported it.

**Outputs**

- `person` (object)

**Example output**

```json
{
  "person": {
    "biography": {
      "html": null,
      "language": null,
      "text": null
    },
    "honorific": {
      "ar": null,
      "ar_latn": null,
      "en": "may Allah be pleased with him",
      "text": "may Allah be pleased with him"
    },
    "image_url": null,
    "kind": "family-of-the-prophet",
    "lifespan": null,
    "name": {
      "ar": "\u0627\u0644\u0639\u0628\u0627\u0633 \u0628\u0646 \u0639\u0644\u064a",
      "ar_latn": "al-\u02bfAbb\u0101s ibn \u02bfAl\u012b",
      "en": "al-Abbas ibn Ali (Abu al-Fadl)",
      "text": "al-Abbas ibn Ali (Abu al-Fadl)"
    },
    "slug": "abbas-ibn-ali",
    "traces": {
      "events": 1
    },
    "url": "https://people.api.islamic.network/v1/people/abbas-ibn-ali"
  }
}
```

### Get a person's events

Every event involving one person, by their slug. Put 'Find a person' in front of this to turn a name into a slug. No API key required.

**Inputs**

- Person's slug (`slug`, text, required): The person's slug, as 'Find a person' or 'Get a person' reported it.
- Page (`page`, number): Which page of results to read, counting from 1. Every result reports 'total', 'total_pages' and 'has_more', so a loop can tell when it is done. From 1 to 10000.
- Results per page (`limit`, number): How many results per page, from 1 to 200. Defaults to 50. From 1 to 200.

**Outputs**

- `count` (number)
- `events` (list)
- `has_more` (true/false)
- `limit` (number)
- `page` (number)
- `person` (object)
- `person_slug` (text)
- `total` (number)
- `total_pages` (number)

**Example output**

```json
{
  "count": 1,
  "events": [
    {
      "date": {
        "day": 10,
        "month": 1
      },
      "description": {
        "html": null,
        "language": null,
        "text": null
      },
      "people": [],
      "slug": "acceptance-of-the-repentance-of-adam",
      "title": {
        "ar": "\u0642\u064e\u0628\u064f\u0648\u0644\u064f \u062a\u064e\u0648\u0652\u0628\u064e\u0629\u0650 \u0622\u062f\u064e\u0645\u064e \u0639\u064e\u0644\u064e\u064a\u0652\u0647\u0650 \u0627\u0644\u0633\u064e\u0651\u0644\u064e\u0627\u0645",
        "ar_latn": "Qab\u016bl Tawbat \u0100dam \u02bfalayhis-sal\u0101m",
        "en": "The acceptance of the repentance of Adam (peace be upon him)",
        "text": "The acceptance of the repentance of Adam (peace be upon him)"
      },
      "url": "https://events.api.islamic.network/v1/events/acceptance-of-the-repentance-of-adam"
    }
  ],
  "has_more": false,
  "limit": 50,
  "page": 1,
  "person": {
    "name": {
      "ar": "\u0627\u0644\u0639\u0628\u0627\u0633 \u0628\u0646 \u0639\u0644\u064a",
      "ar_latn": "al-\u02bfAbb\u0101s ibn \u02bfAl\u012b",
      "en": "al-Abbas ibn Ali (Abu al-Fadl)",
      "text": "al-Abbas ibn Ali (Abu al-Fadl)"
    },
    "slug": "abbas-ibn-ali",
    "url": "https://people.api.islamic.network/v1/people/abbas-ibn-ali"
  },
  "person_slug": "abbas-ibn-ali",
  "total": 1,
  "total_pages": 1
}
```

### Get a person's quotes

Every saying attributed to one person, by their slug. No API key required.

**Inputs**

- Person's slug (`slug`, text, required): The person's slug, as 'Find a person' reported it.
- Page (`page`, number): Which page of results to read, counting from 1. Every result reports 'total', 'total_pages' and 'has_more', so a loop can tell when it is done. From 1 to 10000.
- Results per page (`limit`, number): How many results per page, from 1 to 200. Defaults to 50. From 1 to 200.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `limit` (number)
- `page` (number)
- `person` (object)
- `person_slug` (text)
- `quotes` (list)
- `total` (number)
- `total_pages` (number)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "limit": 50,
  "page": 1,
  "person": {
    "name": {
      "ar": "\u0628\u064e\u0627\u064a\u064e\u0632\u0650\u064a\u062f \u0627\u0644\u0652\u0628\u0650\u0633\u0652\u0637\u064e\u0627\u0645\u0650\u064a",
      "ar_latn": "B\u0101yaz\u012bd al-Bis\u1e6d\u0101m\u012b",
      "en": "Bayazid Bistami",
      "text": "Bayazid Bistami"
    },
    "slug": "bayazid-bistami",
    "url": "https://people.api.islamic.network/v1/people/bayazid-bistami"
  },
  "person_slug": "bayazid-bistami",
  "quotes": [
    {
      "author": {
        "name": {
          "ar": null,
          "ar_latn": null,
          "en": "Bayazid Bistami",
          "text": "Bayazid Bistami"
        },
        "slug": "bayazid-bistami",
        "url": "https://people.api.islamic.network/v1/people/bayazid-bistami"
      },
      "id": 1,
      "original": {
        "language": "ar",
        "text": "\u0645\u064e\u0646\u0652 \u0644\u064e\u0627 \u0634\u064e\u064a\u0652\u062e\u064e \u0644\u064e\u0647\u064f \u0641\u064e\u0634\u064e\u064a\u0652\u062e\u064f\u0647\u064f \u0627\u0644\u0634\u064e\u0651\u064a\u0652\u0637\u064e\u0627\u0646"
      },
      "source": null,
      "tags": [],
      "text": "He who does not have a shaykh, his shaykh is Satan.",
      "translations": [
        {
          "language": "en",
          "text": "He who does not have a shaykh, his shaykh is Satan."
        }
      ],
      "url": "https://quotes.api.islamic.network/v1/quotes/1"
    }
  ],
  "total": 8,
  "total_pages": 1
}
```

### Get a quote

One specific saying by its id, for re-posting something an earlier step found. Ids are stable, so one stored last month still means the same saying. No API key required.

**Inputs**

- Quote ID (`quote_id`, text, required): The quote's id, as an earlier step reported it.

**Outputs**

- `quote` (object)

**Example output**

```json
{
  "quote": {
    "author": {
      "name": {
        "ar": null,
        "ar_latn": null,
        "en": "Bayazid Bistami",
        "text": "Bayazid Bistami"
      },
      "slug": "bayazid-bistami",
      "url": "https://people.api.islamic.network/v1/people/bayazid-bistami"
    },
    "id": 1,
    "original": {
      "language": "ar",
      "text": "\u0645\u064e\u0646\u0652 \u0644\u064e\u0627 \u0634\u064e\u064a\u0652\u062e\u064e \u0644\u064e\u0647\u064f \u0641\u064e\u0634\u064e\u064a\u0652\u062e\u064f\u0647\u064f \u0627\u0644\u0634\u064e\u0651\u064a\u0652\u0637\u064e\u0627\u0646"
    },
    "source": null,
    "tags": [],
    "text": "He who does not have a shaykh, his shaykh is Satan.",
    "translations": [
      {
        "language": "en",
        "text": "He who does not have a shaykh, his shaykh is Satan."
      }
    ],
    "url": "https://quotes.api.islamic.network/v1/quotes/1"
  }
}
```

### Get a random quote

One saying of the saints, ready to post, in the original with its translation. Narrow it to one author, one theme or one language, or leave all three empty to draw from everything. No API key required.

**Inputs**

- From this person (`author`, text): Only draw from this person, by their slug. Leave empty to draw from anyone.
- On this theme (`tag`, text): Only draw from this theme. Leave empty for any.
- In this language (`language`, text): Only draw quotes available in this language, as a code such as 'en'. Leave empty for any.

**Outputs**

- `quote` (object)

**Example output**

```json
{
  "quote": {
    "author": {
      "name": {
        "ar": null,
        "ar_latn": null,
        "en": "Bayazid Bistami",
        "text": "Bayazid Bistami"
      },
      "slug": "bayazid-bistami",
      "url": "https://people.api.islamic.network/v1/people/bayazid-bistami"
    },
    "id": 1,
    "original": {
      "language": "ar",
      "text": "\u0645\u064e\u0646\u0652 \u0644\u064e\u0627 \u0634\u064e\u064a\u0652\u062e\u064e \u0644\u064e\u0647\u064f \u0641\u064e\u0634\u064e\u064a\u0652\u062e\u064f\u0647\u064f \u0627\u0644\u0634\u064e\u0651\u064a\u0652\u0637\u064e\u0627\u0646"
    },
    "source": null,
    "tags": [],
    "text": "He who does not have a shaykh, his shaykh is Satan.",
    "translations": [
      {
        "language": "en",
        "text": "He who does not have a shaykh, his shaykh is Satan."
      }
    ],
    "url": "https://quotes.api.islamic.network/v1/quotes/1"
  }
}
```

### Get a story

One story in full, with its prose, the people it concerns, its themes and its artwork. The browse and search steps return summaries without the prose, so this is the step that fetches the body. No API key required.

**Inputs**

- Slug (`slug`, text, required): The story's slug, as an earlier step reported it.

**Outputs**

- `story` (object)

**Example output**

```json
{
  "story": {
    "body": {
      "html": null,
      "language": null,
      "text": null
    },
    "description": {
      "html": null,
      "language": "en",
      "text": "A story of obedience and its reward."
    },
    "image_url": null,
    "people": [],
    "published": "2026-01-01",
    "slug": "the-blessing-of-following-without-question",
    "source": null,
    "tags": [],
    "title": {
      "ar": null,
      "ar_latn": null,
      "en": "The Blessing of Following Without Question",
      "text": "The Blessing of Following Without Question"
    },
    "url": "https://stories.api.islamic.network/v1/stories/the-blessing-of-following-without-question"
  }
}
```

### Get an event

One event in full by its slug, with its description and the people it concerns. Put 'Search events' in front of this when all a workflow has is a name. No API key required.

**Inputs**

- Slug (`slug`, text, required): The event's slug, as an earlier step reported it.

**Outputs**

- `event` (object)

**Example output**

```json
{
  "event": {
    "date": {
      "day": 10,
      "month": 1
    },
    "description": {
      "html": null,
      "language": null,
      "text": null
    },
    "people": [],
    "slug": "acceptance-of-the-repentance-of-adam",
    "title": {
      "ar": "\u0642\u064e\u0628\u064f\u0648\u0644\u064f \u062a\u064e\u0648\u0652\u0628\u064e\u0629\u0650 \u0622\u062f\u064e\u0645\u064e \u0639\u064e\u0644\u064e\u064a\u0652\u0647\u0650 \u0627\u0644\u0633\u064e\u0651\u0644\u064e\u0627\u0645",
      "ar_latn": "Qab\u016bl Tawbat \u0100dam \u02bfalayhis-sal\u0101m",
      "en": "The acceptance of the repentance of Adam (peace be upon him)",
      "text": "The acceptance of the repentance of Adam (peace be upon him)"
    },
    "url": "https://events.api.islamic.network/v1/events/acceptance-of-the-repentance-of-adam"
  }
}
```

### Get today's devotions

What to read today: the day's name, what is traditionally done on it, and the prayers, salawaat, adhkaar and duas offered. Most days of the year are ordinary days, so this usually comes back with 'has_devotions' false and a 'next' pointing at the coming blessed day, with the days until it where that can be counted. Branch on 'has_devotions' to stay quiet on an ordinary morning, or announce what is coming. No API key required.

**Inputs**

- Date (`date`, date): The Gregorian day to resolve, as YYYY-MM-DD. Leave empty for today. Islamic Network's own routes insist on DD-MM-YYYY and answer anything else with an error, so either spelling is accepted here and converted on the way out: a date picker's value can be passed straight in.

**Outputs**

- `date` (object)
- `day` (object)
- `days_until_next` (number)
- `devotion_count` (number)
- `has_devotions` (true/false)
- `month` (object)
- `next` (object)

**Example output**

```json
{
  "date": {
    "gregorian": "2026-09-16",
    "hijri": {
      "day": 5,
      "month": 4,
      "year": 1448
    },
    "hijri_text": "5/4/1448 AH"
  },
  "day": null,
  "days_until_next": 8,
  "devotion_count": 0,
  "has_devotions": false,
  "month": {
    "description": {
      "html": null,
      "language": null,
      "text": null
    },
    "name": {
      "ar": "\u0645\u064f\u062d\u064e\u0631\u064e\u0651\u0645",
      "ar_latn": "Mu\u1e25arram",
      "en": "Muharram",
      "text": "Muharram"
    },
    "number": 1,
    "url": "https://pray.api.islamic.network/v1/calendar/1"
  },
  "next": {
    "month": {
      "description": {
        "html": null,
        "language": null,
        "text": null
      },
      "name": {
        "ar": "\u0645\u064f\u062d\u064e\u0631\u064e\u0651\u0645",
        "ar_latn": "Mu\u1e25arram",
        "en": "Muharram",
        "text": "Muharram"
      },
      "number": 1,
      "url": "https://pray.api.islamic.network/v1/calendar/1"
    },
    "name": {
      "ar": "\u0623\u064e\u064a\u064e\u0651\u0627\u0645\u064f \u0627\u0644\u0652\u0628\u0650\u064a\u0636",
      "ar_latn": "Ayy\u0101m al-B\u012b\u1e0d",
      "en": "The White Days (Ayy\u0101m al-B\u012b\u1e0d)",
      "text": "The White Days (Ayy\u0101m al-B\u012b\u1e0d)"
    },
    "number": 13,
    "slug": "rabi-al-thani-13",
    "url": "https://pray.api.islamic.network/v1/calendar/4/13"
  }
}
```

### Get today's events

What happened on today's Hijri date. Like the devotional calendar, most days carry nothing, so this usually returns 'has_events' false with a 'next' pointing at the coming anniversary. Branch on 'has_events' rather than posting an empty list. No API key required.

**Inputs**

- Date (`date`, date): The Gregorian day to resolve, as YYYY-MM-DD. Leave empty for today. Islamic Network's own routes insist on DD-MM-YYYY and answer anything else with an error, so either spelling is accepted here and converted on the way out: a date picker's value can be passed straight in.

**Outputs**

- `date` (object)
- `days_until_next` (number)
- `event_count` (number)
- `events` (list)
- `has_events` (true/false)
- `month` (object)
- `next` (object)

**Example output**

```json
{
  "date": {
    "gregorian": "2026-09-16",
    "hijri": {
      "day": 5,
      "month": 4,
      "year": 1448
    },
    "hijri_text": "5/4/1448 AH"
  },
  "days_until_next": 6,
  "event_count": 0,
  "events": [],
  "has_events": false,
  "month": {
    "description": {
      "html": null,
      "language": null,
      "text": null
    },
    "name": {
      "ar": "\u0645\u064f\u062d\u064e\u0631\u064e\u0651\u0645",
      "ar_latn": "Mu\u1e25arram",
      "en": "Muharram",
      "text": "Muharram"
    },
    "number": 1,
    "url": "https://pray.api.islamic.network/v1/calendar/1"
  },
  "next": {
    "date": {
      "day": 10,
      "month": 1
    },
    "description": {
      "html": null,
      "language": null,
      "text": null
    },
    "people": [],
    "slug": "acceptance-of-the-repentance-of-adam",
    "title": {
      "ar": "\u0642\u064e\u0628\u064f\u0648\u0644\u064f \u062a\u064e\u0648\u0652\u0628\u064e\u0629\u0650 \u0622\u062f\u064e\u0645\u064e \u0639\u064e\u0644\u064e\u064a\u0652\u0647\u0650 \u0627\u0644\u0633\u064e\u0651\u0644\u064e\u0627\u0645",
      "ar_latn": "Qab\u016bl Tawbat \u0100dam \u02bfalayhis-sal\u0101m",
      "en": "The acceptance of the repentance of Adam (peace be upon him)",
      "text": "The acceptance of the repentance of Adam (peace be upon him)"
    },
    "url": "https://events.api.islamic.network/v1/events/acceptance-of-the-repentance-of-adam"
  }
}
```

### List story themes

The themes the stories are filed under, each with how many it holds. The step to put in front of 'Browse stories' when you want a themed selection. No API key required.

**Inputs**

- Page (`page`, number): Which page of results to read, counting from 1. Every result reports 'total', 'total_pages' and 'has_more', so a loop can tell when it is done. From 1 to 10000.
- Results per page (`limit`, number): How many results per page, from 1 to 200. Defaults to 50. From 1 to 200.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `limit` (number)
- `page` (number)
- `tags` (list)
- `total` (number)
- `total_pages` (number)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "limit": 50,
  "page": 1,
  "tags": [
    {
      "name": {
        "ar": null,
        "ar_latn": null,
        "en": "Blessing",
        "text": "Blessing"
      },
      "slug": "blessing",
      "story_count": 4,
      "url": "https://stories.api.islamic.network/v1/tags/blessing"
    }
  ],
  "total": 40,
  "total_pages": 1
}
```

### List the Hijri months

The twelve months of the Hijri year, each named in English, in Arabic and in transliteration. Useful for turning a month number into a name, or for looping over the year. No API key required.

**Inputs**: None.

**Outputs**

- `month_count` (number)
- `months` (list)

**Example output**

```json
{
  "month_count": 12,
  "months": [
    {
      "description": {
        "html": null,
        "language": null,
        "text": null
      },
      "name": {
        "ar": "\u0645\u064f\u062d\u064e\u0631\u064e\u0651\u0645",
        "ar_latn": "Mu\u1e25arram",
        "en": "Muharram",
        "text": "Muharram"
      },
      "number": 1,
      "url": "https://pray.api.islamic.network/v1/calendar/1"
    }
  ]
}
```

### Search devotions

Search the devotional calendar by name. Diacritics are folded by the service, so 'dua al afiyah' finds the one written with its marks. Narrow to particular collections with the type filter. No API key required.

**Inputs**

- Search for (`query`, text, required): What to look for. Islamic Network folds diacritics itself, so 'ashura' finds 'ʿĀshūrāʾ' without the marks. At least 2 characters.
- Only these kinds (`type`, text): Comma separated kinds to narrow to, such as 'salaats,adhkaars'. Leave empty to search everything.
- Page (`page`, number): Which page of results to read, counting from 1. Every result reports 'total', 'total_pages' and 'has_more', so a loop can tell when it is done. From 1 to 10000.
- Results per page (`limit`, number): How many results per page, from 1 to 200. Defaults to 50. From 1 to 200.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `limit` (number)
- `page` (number)
- `query` (text)
- `results` (list)
- `total` (number)
- `total_pages` (number)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "limit": 50,
  "page": 1,
  "query": "tasbih",
  "results": [
    {
      "honorific": {
        "ar": null,
        "ar_latn": null,
        "en": "may Allah be pleased with him",
        "text": "may Allah be pleased with him"
      },
      "id": null,
      "kind": "family-of-the-prophet",
      "matched_in": [
        "name"
      ],
      "name": {
        "ar": "\u0627\u0644\u0639\u0628\u0627\u0633 \u0628\u0646 \u0639\u0644\u064a",
        "ar_latn": "al-\u02bfAbb\u0101s ibn \u02bfAl\u012b",
        "en": "al-Abbas ibn Ali (Abu al-Fadl)",
        "text": "al-Abbas ibn Ali (Abu al-Fadl)"
      },
      "slug": "salat-al-tasbih",
      "type": "salaat",
      "url": "https://people.api.islamic.network/v1/people/abbas-ibn-ali"
    }
  ],
  "total": 1,
  "total_pages": 1
}
```

### Search events

Search the events by name, with diacritics folded for you. A search that matches nothing comes back empty rather than failing the step. No API key required.

**Inputs**

- Search for (`query`, text, required): What to look for. Islamic Network folds diacritics itself, so 'ashura' finds 'ʿĀshūrāʾ' without the marks. At least 2 characters.
- Page (`page`, number): Which page of results to read, counting from 1. Every result reports 'total', 'total_pages' and 'has_more', so a loop can tell when it is done. From 1 to 10000.
- Results per page (`limit`, number): How many results per page, from 1 to 200. Defaults to 50. From 1 to 200.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `limit` (number)
- `page` (number)
- `query` (text)
- `results` (list)
- `total` (number)
- `total_pages` (number)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "limit": 50,
  "page": 1,
  "query": "ashura",
  "results": [
    {
      "honorific": {
        "ar": null,
        "ar_latn": null,
        "en": "may Allah be pleased with him",
        "text": "may Allah be pleased with him"
      },
      "id": null,
      "kind": "family-of-the-prophet",
      "matched_in": [
        "name"
      ],
      "name": {
        "ar": "\u0627\u0644\u0639\u0628\u0627\u0633 \u0628\u0646 \u0639\u0644\u064a",
        "ar_latn": "al-\u02bfAbb\u0101s ibn \u02bfAl\u012b",
        "en": "al-Abbas ibn Ali (Abu al-Fadl)",
        "text": "al-Abbas ibn Ali (Abu al-Fadl)"
      },
      "slug": "abbas-ibn-ali",
      "type": "event",
      "url": "https://people.api.islamic.network/v1/people/abbas-ibn-ali"
    }
  ],
  "total": 1,
  "total_pages": 1
}
```

### Search quotes

Search the sayings, with diacritics folded for you. A search that matches nothing comes back empty rather than failing the step. No API key required.

**Inputs**

- Search for (`query`, text, required): What to look for. Islamic Network folds diacritics itself, so 'ashura' finds 'ʿĀshūrāʾ' without the marks. At least 2 characters.
- Page (`page`, number): Which page of results to read, counting from 1. Every result reports 'total', 'total_pages' and 'has_more', so a loop can tell when it is done. From 1 to 10000.
- Results per page (`limit`, number): How many results per page, from 1 to 200. Defaults to 50. From 1 to 200.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `limit` (number)
- `page` (number)
- `query` (text)
- `results` (list)
- `total` (number)
- `total_pages` (number)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "limit": 50,
  "page": 1,
  "query": "heart",
  "results": [
    {
      "honorific": {
        "ar": null,
        "ar_latn": null,
        "en": "may Allah be pleased with him",
        "text": "may Allah be pleased with him"
      },
      "id": null,
      "kind": "family-of-the-prophet",
      "matched_in": [
        "name"
      ],
      "name": {
        "ar": "\u0627\u0644\u0639\u0628\u0627\u0633 \u0628\u0646 \u0639\u0644\u064a",
        "ar_latn": "al-\u02bfAbb\u0101s ibn \u02bfAl\u012b",
        "en": "al-Abbas ibn Ali (Abu al-Fadl)",
        "text": "al-Abbas ibn Ali (Abu al-Fadl)"
      },
      "slug": "abbas-ibn-ali",
      "type": "quote",
      "url": "https://people.api.islamic.network/v1/people/abbas-ibn-ali"
    }
  ],
  "total": 12,
  "total_pages": 1
}
```

### Search stories

Search the stories, with diacritics folded for you. A search that matches nothing comes back empty rather than failing the step. No API key required.

**Inputs**

- Search for (`query`, text, required): What to look for. Islamic Network folds diacritics itself, so 'ashura' finds 'ʿĀshūrāʾ' without the marks. At least 2 characters.
- Page (`page`, number): Which page of results to read, counting from 1. Every result reports 'total', 'total_pages' and 'has_more', so a loop can tell when it is done. From 1 to 10000.
- Results per page (`limit`, number): How many results per page, from 1 to 200. Defaults to 50. From 1 to 200.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `limit` (number)
- `page` (number)
- `query` (text)
- `results` (list)
- `total` (number)
- `total_pages` (number)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "limit": 50,
  "page": 1,
  "query": "light",
  "results": [
    {
      "honorific": {
        "ar": null,
        "ar_latn": null,
        "en": "may Allah be pleased with him",
        "text": "may Allah be pleased with him"
      },
      "id": null,
      "kind": "family-of-the-prophet",
      "matched_in": [
        "name"
      ],
      "name": {
        "ar": "\u0627\u0644\u0639\u0628\u0627\u0633 \u0628\u0646 \u0639\u0644\u064a",
        "ar_latn": "al-\u02bfAbb\u0101s ibn \u02bfAl\u012b",
        "en": "al-Abbas ibn Ali (Abu al-Fadl)",
        "text": "al-Abbas ibn Ali (Abu al-Fadl)"
      },
      "slug": "abbas-ibn-ali",
      "type": "story",
      "url": "https://people.api.islamic.network/v1/people/abbas-ibn-ali"
    }
  ],
  "total": 3,
  "total_pages": 1
}
```
