# ZenQuotes

> Pull inspirational quotes from ZenQuotes, the hand-curated quotation API. Get the quote of the day, draw one at random or a batch to reuse, narrow to an author such as Abraham Lincoln or a keyword such as happiness, list the authors and keywords the service knows, and read the notable events, births and deaths for any day of the year from its On This Day feed. Works without a key on the free tier, which allows 5 requests every 30 seconds; add a ZenQuotes API key to lift the limit and unlock the subscriber options.

App · Misc References · 8 actions. Web page: https://docs.lodol.com/docs/integrations/zenquotes

## Actions

### Check service status

Check whether ZenQuotes is answering, and how quickly. This is the one action that reports a problem as a value instead of failing the step, so a workflow can decide what to do about it. Being throttled on the free tier is reported separately from being down, and the answer says whether the connection carries an API key.

**Inputs**: None.

**Outputs**

- `has_api_key` (true/false)
- `message` (text)
- `online` (true/false)
- `rate_limited` (true/false)
- `reachable` (true/false)
- `response_time_ms` (number)
- `status_code` (number)

**Example output**

```json
{
  "has_api_key": false,
  "message": "ZenQuotes is up and answering on the free tier.",
  "online": true,
  "rate_limited": false,
  "reachable": true,
  "response_time_ms": 92.3,
  "status_code": 200
}
```

### Get a random quote

Get one random quote from ZenQuotes, with its author, ready to post, and the attribution line the free tier asks for. Narrow it to one author or one keyword, or leave both empty to draw from the whole collection. ZenQuotes asks apps that post often to fetch a batch with Get quotes instead and reuse it.

**Inputs**

- Author (`author`, text): Only a quote by this author. The author, as a name such as 'Abraham Lincoln' or the tag ZenQuotes uses, such as 'abraham-lincoln'. The dropdown is filled from the service's authors list, which ZenQuotes serves only to a connection with an API key; on the free tier type the name or tag instead. The author link that list reports is accepted too. Leave empty for any author.
- Keyword (`keyword`, text): Only quotes matching this keyword, such as 'happiness'. The dropdown is filled from the service's keyword list, which ZenQuotes serves only to a connection with an API key; on the free tier type the keyword instead. ZenQuotes documents the filter itself beside its subscription too, so a keyless call may be answered with a message asking for a key. Leave empty to draw from every quote.
- Custom quotes only (`custom`, true/false): Only draw from the custom quotes loaded into the ZenQuotes account the connection's key belongs to. Subscribers can load up to 500 of their own; this needs an API key on the connection. Off by default. Default: `false`.

**Outputs**

- `attribution` (text)
- `author` (text)
- `custom` (true/false)
- `keyword` (text)
- `quote` (object)

**Example output**

```json
{
  "attribution": "Inspirational quotes provided by ZenQuotes API (https://zenquotes.io/)",
  "author": null,
  "custom": false,
  "keyword": null,
  "quote": {
    "author": "Tony Robbins",
    "author_image_url": "https://zenquotes.io/img/tony-robbins.jpg",
    "author_tag": "tony-robbins",
    "character_count": 63,
    "html": "<blockquote>&ldquo;Lack of emotion causes lack of progress and lack of motivation.&rdquo; &mdash; <footer>Tony Robbins</footer></blockquote>",
    "text": "Lack of emotion causes lack of progress and lack of motivation."
  }
}
```

### Get quotes

Get a batch of random quotes from ZenQuotes, up to 50, optionally all matching one keyword. This is the call the service asks apps to make: it always answers with 50, meant to be kept and looped over locally and refreshed every hour or so, so a workflow that posts several quotes should take them from one batch rather than drawing one at a time.

**Inputs**

- Keyword (`keyword`, text): Only quotes matching this keyword, such as 'happiness'. The dropdown is filled from the service's keyword list, which ZenQuotes serves only to a connection with an API key; on the free tier type the keyword instead. ZenQuotes documents the filter itself beside its subscription too, so a keyless call may be answered with a message asking for a key. Leave empty to draw from every quote.
- Custom quotes only (`custom`, true/false): Only draw from the custom quotes loaded into the ZenQuotes account the connection's key belongs to. Subscribers can load up to 500 of their own; this needs an API key on the connection. Off by default. Default: `false`.
- Number of quotes (`limit`, number): How many quotes to return, from 1 to 50. Defaults to 10. ZenQuotes always sends a batch of 50 and asks apps to reuse it rather than draw one quote at a time, so the batch is trimmed here and its full size is reported as batch_size. From 1 to 50.

**Outputs**

- `attribution` (text)
- `batch_size` (number)
- `custom` (true/false)
- `keyword` (text)
- `quote_count` (number)
- `quotes` (list)
- `requested_count` (number)

**Example output**

```json
{
  "attribution": "Inspirational quotes provided by ZenQuotes API (https://zenquotes.io/)",
  "batch_size": 50,
  "custom": false,
  "keyword": null,
  "quote_count": 2,
  "quotes": [
    {
      "author": "Tony Robbins",
      "author_image_url": "https://zenquotes.io/img/tony-robbins.jpg",
      "author_tag": "tony-robbins",
      "character_count": 63,
      "html": "<blockquote>&ldquo;Lack of emotion causes lack of progress and lack of motivation.&rdquo; &mdash; <footer>Tony Robbins</footer></blockquote>",
      "text": "Lack of emotion causes lack of progress and lack of motivation."
    },
    {
      "author": "Elbert Hubbard",
      "author_image_url": "https://zenquotes.io/img/elbert-hubbard.jpg",
      "author_tag": "elbert-hubbard",
      "character_count": 67,
      "html": "<blockquote>&ldquo;The friend is the man who knows all about you, and still likes you.&rdquo; &mdash; <footer>Elbert Hubbard</footer></blockquote>",
      "text": "The friend is the man who knows all about you, and still likes you."
    }
  ],
  "requested_count": 2
}
```

### Get quotes by author

Get a batch of quotes by one author, up to 50, for a themed post or a page about them. The author can be picked from the dropdown, typed as a name or a tag, or chained from List authors. ZenQuotes documents this route beside its subscription, so a keyless connection may be answered with a message asking for a key, which the step reports as it was said.

**Inputs**

- Author (`author`, text, required): The author, as a name such as 'Abraham Lincoln' or the tag ZenQuotes uses, such as 'abraham-lincoln'. The dropdown is filled from the service's authors list, which ZenQuotes serves only to a connection with an API key; on the free tier type the name or tag instead. The author link that list reports is accepted too.
- Number of quotes (`limit`, number): How many quotes to return, from 1 to 50. Defaults to 10. ZenQuotes always sends a batch of 50 and asks apps to reuse it rather than draw one quote at a time, so the batch is trimmed here and its full size is reported as batch_size. From 1 to 50.

**Outputs**

- `attribution` (text)
- `author` (text)
- `batch_size` (number)
- `quote_count` (number)
- `quotes` (list)
- `requested_count` (number)

**Example output**

```json
{
  "attribution": "Inspirational quotes provided by ZenQuotes API (https://zenquotes.io/)",
  "author": "tony-robbins",
  "batch_size": 50,
  "quote_count": 1,
  "quotes": [
    {
      "author": "Tony Robbins",
      "author_image_url": "https://zenquotes.io/img/tony-robbins.jpg",
      "author_tag": "tony-robbins",
      "character_count": 63,
      "html": "<blockquote>&ldquo;Lack of emotion causes lack of progress and lack of motivation.&rdquo; &mdash; <footer>Tony Robbins</footer></blockquote>",
      "text": "Lack of emotion causes lack of progress and lack of motivation."
    }
  ],
  "requested_count": 1
}
```

### Get the quote of the day

Get the one quote ZenQuotes features today, the same for everyone who asks, with the date it is for. A new one is chosen at midnight US Central time, so a daily post scheduled after that never repeats yesterday's; ZenQuotes asks apps to fetch it once a day rather than on every view.

**Inputs**: None.

**Outputs**

- `attribution` (text)
- `date` (text)
- `quote` (object)

**Example output**

```json
{
  "attribution": "Inspirational quotes provided by ZenQuotes API (https://zenquotes.io/)",
  "date": "2026-09-02",
  "quote": {
    "author": "Elbert Hubbard",
    "author_image_url": "https://zenquotes.io/img/elbert-hubbard.jpg",
    "author_tag": "elbert-hubbard",
    "character_count": 67,
    "html": "<blockquote>&ldquo;The friend is the man who knows all about you, and still likes you.&rdquo; &mdash; <footer>Elbert Hubbard</footer></blockquote>",
    "text": "The friend is the man who knows all about you, and still likes you."
  }
}
```

### Get what happened on this day

Get the notable events, births and deaths for a calendar day from ZenQuotes' On This Day feed, each with its year, a plain description and the Wikipedia links behind it. Leave the date empty for today, which is what a daily post wants, or pick any date to look up its anniversaries; the year is ignored. Keep just the categories you need and cap how many of each come back.

**Inputs**

- Day (`date`, date): The day to look up. Only the month and the day are used, so any year will do. Leave empty for today on the service's clock, US Central time.
- Categories (`categories`, text): Which of the day's lists to fill in. Leave every box empty for all three. The counts always report the day's totals whichever lists are kept. One or more of: `events`, `births`, `deaths`.
- Entries per category (`limit`, number): How many entries to keep from each list, from 1 to 500. Leave empty for every entry the day holds, which is the default. A busy date can hold a few hundred, so the day's totals are always reported beside the lists. From 1 to 500.

**Outputs**

- `attribution` (text)
- `birth_count` (number)
- `births` (list)
- `categories` (list)
- `date` (text)
- `day` (number)
- `death_count` (number)
- `deaths` (list)
- `event_count` (number)
- `events` (list)
- `limit` (number)
- `month` (number)
- `updated` (text)

**Example output**

```json
{
  "attribution": "Historical data provided by ZenQuotes API (https://zenquotes.io/)",
  "birth_count": 1,
  "births": [
    {
      "description": "Friedrich Spanheim, Dutch theologian and academic (d. 1649)",
      "html": "<a href=\"https://wikipedia.org/wiki/1600\" title=\"1600\">1600</a> &#8211; <a href=\"https://wikipedia.org/wiki/Friedrich_Spanheim\" title=\"Friedrich Spanheim\">Friedrich Spanheim</a>, Dutch theologian and academic (d. 1649)",
      "links": [
        {
          "text": "1600",
          "url": "https://wikipedia.org/wiki/1600"
        },
        {
          "text": "Friedrich Spanheim",
          "url": "https://wikipedia.org/wiki/Friedrich_Spanheim"
        }
      ],
      "text": "1600 \u2013 Friedrich Spanheim, Dutch theologian and academic (d. 1649)",
      "year": "1600"
    }
  ],
  "categories": [
    "events",
    "births",
    "deaths"
  ],
  "date": "January 1",
  "day": 1,
  "death_count": 1,
  "deaths": [
    {
      "description": "Joachim du Bellay, French poet and critic (b. 1522)",
      "html": "<a href=\"https://wikipedia.org/wiki/1560\" title=\"1560\">1560</a> &#8211; <a href=\"https://wikipedia.org/wiki/Joachim_du_Bellay\" title=\"Joachim du Bellay\">Joachim du Bellay</a>, French poet and critic (b. 1522)",
      "links": [
        {
          "text": "1560",
          "url": "https://wikipedia.org/wiki/1560"
        },
        {
          "text": "Joachim du Bellay",
          "url": "https://wikipedia.org/wiki/Joachim_du_Bellay"
        }
      ],
      "text": "1560 \u2013 Joachim du Bellay, French poet and critic (b. 1522)",
      "year": "1560"
    }
  ],
  "event_count": 1,
  "events": [
    {
      "description": "Croatian nobles elect Ferdinand I of Austria as King of Croatia in the Parliament on Cetin.",
      "html": "<a href=\"https://wikipedia.org/wiki/1527\" title=\"1527\">1527</a> &#8211; Croatian nobles elect <a href=\"https://wikipedia.org/wiki/Ferdinand_I,_Holy_Roman_Emperor\" title=\"Ferdinand I, Holy Roman Emperor\">Ferdinand I</a> of Austria as <a href=\"https://wikipedia.org/wiki/List_of_rulers_of_Croatia#King_of_Croatia\" title=\"List of rulers of Croatia\">King of Croatia</a> in the <a href=\"https://wikipedia.org/wiki/Parliament_on_Cetin\" class=\"mw-redirect\" title=\"Parliament on Cetin\">Parliament on Cetin</a>.",
      "links": [
        {
          "text": "1527",
          "url": "https://wikipedia.org/wiki/1527"
        },
        {
          "text": "Ferdinand I",
          "url": "https://wikipedia.org/wiki/Ferdinand_I,_Holy_Roman_Emperor"
        },
        {
          "text": "King of Croatia",
          "url": "https://wikipedia.org/wiki/List_of_rulers_of_Croatia#King_of_Croatia"
        },
        {
          "text": "Parliament on Cetin",
          "url": "https://wikipedia.org/wiki/Parliament_on_Cetin"
        }
      ],
      "text": "1527 \u2013 Croatian nobles elect Ferdinand I of Austria as King of Croatia in the Parliament on Cetin.",
      "year": "1527"
    }
  ],
  "limit": null,
  "month": 1,
  "updated": "2021-04-10T14:18:46+00:00"
}
```

### List authors

List the authors ZenQuotes holds quotes by, each with the tag the author actions take and a link to their quotes, so a step can choose one here and hand the tag on. The service adds figures every month, so the list is fetched live rather than written down. ZenQuotes serves this list only to a connection with an API key; on the free tier the step reports the service's own message asking for one. Turn on custom to list the authors of the account's own custom quotes instead.

**Inputs**

- Custom quotes only (`custom`, true/false): List only the authors of the custom quotes loaded into the ZenQuotes account the connection's key belongs to. Needs an API key on the connection. Off by default. Default: `false`.

**Outputs**

- `author_count` (number)
- `authors` (list)
- `custom` (true/false)

**Example output**

```json
{
  "author_count": 2,
  "authors": [
    {
      "image_url": "https://zenquotes.io/img/abraham-lincoln.jpg",
      "name": "Abraham Lincoln",
      "quotes_url": "https://zenquotes.io/api/quotes/author/abraham-lincoln/",
      "tag": "abraham-lincoln"
    },
    {
      "image_url": null,
      "name": "Zig Ziglar",
      "quotes_url": "https://zenquotes.io/api/quotes/author/zig-ziglar/",
      "tag": "zig-ziglar"
    }
  ],
  "custom": false
}
```

### List keywords

List the keywords ZenQuotes can filter quotes by, such as happiness, so a step can choose one here and hand it to Get quotes or Get a random quote. The list is the service's own and is fetched live. ZenQuotes serves it only to a connection with an API key; on the free tier the step reports the service's own message asking for one.

**Inputs**: None.

**Outputs**

- `keyword_count` (number)
- `keywords` (list)

**Example output**

```json
{
  "keyword_count": 3,
  "keywords": [
    "happiness",
    "success",
    "wisdom"
  ]
}
```
