# Kanye Rest

> Pull Kanye West quotes from kanye.rest, the free 'Kanye as a Service' API. Draw one at random or a batch of them, search every quote for a word, read the whole catalogue, or pick a quote of the day that stays the same all day so a scheduled post never tells two. Every quote comes back with its attribution and a stable id you can store and look up again, neither of which the service itself provides, and the handful of quotes with strong language are left out unless you ask for them.

App · Misc References · 7 actions. Web page: https://docs.lodol.com/docs/integrations/kanye-rest

## Actions

### Check service status

Check whether kanye.rest 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 is reported separately from being down.

**Inputs**: None.

**Outputs**

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

**Example output**

```json
{
  "message": "kanye.rest is up and answering.",
  "online": true,
  "rate_limited": false,
  "reachable": true,
  "response_time_ms": 42.7,
  "status_code": 200
}
```

### Get a quote

Get one specific quote back, by the id an earlier step reported or by the quote's own text. This is what re-posting a quote you found yesterday needs, and what tells you whether one you stored is still in the catalogue. The service publishes no ids of its own, so the id is Lodol's and is derived from the quote's text.

**Inputs**

- Quote ID (`quote_id`, text, required): The quote's id, twelve characters of hex, or the quote's exact text. Usually this comes from an earlier step: every action here returns an 'id' for each quote it hands back.

**Outputs**

- `quote` (object): One Kanye West quote, ready to post.

**Example output**

```json
{
  "quote": {
    "author": "Kanye West",
    "character_count": 31,
    "id": "d97e0042e0b3",
    "quote": "I love sleep; it's my favorite.",
    "safe_for_work": true,
    "source_url": "https://kanye.rest/",
    "text": "I love sleep; it's my favorite.",
    "word_count": 6
  }
}
```

### Get a random quote

Get one random Kanye West quote, ready to post, with the attribution the service leaves off. Quotes with strong language are skipped unless you ask for them. This is the service's own random route, so a second run gives a different quote. Use Get the quote of the day where a day's workflow must post the same one every time it runs.

**Inputs**

- Safe for work only (`safe_for_work`, true/false): Leave out the quotes with strong language in them. On by default, so a step posting to a team channel cannot draw one by accident. The service publishes no rating of its own, so this filter is Lodol's and is applied to what it sends; every quote returned also carries its own 'safe_for_work' flag, and the number left out is always reported. Default: `true`.

**Outputs**

- `quote` (object): One Kanye West quote, ready to post.
- `safe_for_work_only` (true/false)

**Example output**

```json
{
  "quote": {
    "author": "Kanye West",
    "character_count": 31,
    "id": "d97e0042e0b3",
    "quote": "I love sleep; it's my favorite.",
    "safe_for_work": true,
    "source_url": "https://kanye.rest/",
    "text": "I love sleep; it's my favorite.",
    "word_count": 6
  },
  "safe_for_work_only": true
}
```

### Get every quote

Read the whole catalogue, in the service's own order, so a workflow can keep its own copy, count it, or step through it. The service returns every quote at once with no paging of its own, so the number and starting point here page through that one response rather than costing a request each.

**Inputs**

- Number of quotes (`limit`, number): How many quotes to return. Leave it alone to get all of them, which is what this action is for. Set it, with the starting point below, to walk the catalogue a page at a time instead. From 1 to 1000. Default: `1000`.
- Start from (`offset`, number): How many quotes to skip first, counting from 0. Compare it with 'total_count' to tell 'that is the end of the catalogue' from 'I asked past the end'. At least 0. Default: `0`.
- Safe for work only (`safe_for_work`, true/false): Leave out the quotes with strong language in them. On by default, so a step posting to a team channel cannot draw one by accident. The service publishes no rating of its own, so this filter is Lodol's and is applied to what it sends; every quote returned also carries its own 'safe_for_work' flag, and the number left out is always reported. Default: `true`.

**Outputs**

- `excluded_count` (number)
- `limit` (number)
- `offset` (number)
- `quote_count` (number)
- `quotes` (list)
- `safe_for_work_only` (true/false)
- `total_count` (number): How many quotes the catalogue holds after filtering, however many were returned.

**Example output**

```json
{
  "excluded_count": 2,
  "limit": 1000,
  "offset": 0,
  "quote_count": 2,
  "quotes": [
    {
      "author": "Kanye West",
      "character_count": 52,
      "id": "f85953d5414b",
      "quote": "I feel like I'm too busy writing history to read it.",
      "safe_for_work": true,
      "source_url": "https://kanye.rest/",
      "text": "I feel like I'm too busy writing history to read it.",
      "word_count": 11
    },
    {
      "author": "Kanye West",
      "character_count": 31,
      "id": "d97e0042e0b3",
      "quote": "I love sleep; it's my favorite.",
      "safe_for_work": true,
      "source_url": "https://kanye.rest/",
      "text": "I love sleep; it's my favorite.",
      "word_count": 6
    }
  ],
  "safe_for_work_only": true,
  "total_count": 120
}
```

### Get random quotes

Get several different Kanye West quotes at once, up to 50. No quote is drawn twice in the same batch, and the whole batch costs one request however many you ask for. Asking for more than the catalogue holds returns what there is rather than failing, and says how many that was.

**Inputs**

- Number of quotes (`count`, number): How many quotes to draw, from 1 to 50. Defaults to 5. The catalogue is small, about a hundred quotes, so a large batch may be most of it. From 1 to 50. Default: `5`.
- Safe for work only (`safe_for_work`, true/false): Leave out the quotes with strong language in them. On by default, so a step posting to a team channel cannot draw one by accident. The service publishes no rating of its own, so this filter is Lodol's and is applied to what it sends; every quote returned also carries its own 'safe_for_work' flag, and the number left out is always reported. Default: `true`.

**Outputs**

- `available_count` (number): How many quotes the draw could choose from, after filtering.
- `excluded_count` (number): How many quotes the safe-for-work filter left out.
- `quote_count` (number)
- `quotes` (list)
- `requested_count` (number)
- `safe_for_work_only` (true/false)

**Example output**

```json
{
  "available_count": 120,
  "excluded_count": 2,
  "quote_count": 2,
  "quotes": [
    {
      "author": "Kanye West",
      "character_count": 52,
      "id": "f85953d5414b",
      "quote": "I feel like I'm too busy writing history to read it.",
      "safe_for_work": true,
      "source_url": "https://kanye.rest/",
      "text": "I feel like I'm too busy writing history to read it.",
      "word_count": 11
    },
    {
      "author": "Kanye West",
      "character_count": 31,
      "id": "d97e0042e0b3",
      "quote": "I love sleep; it's my favorite.",
      "safe_for_work": true,
      "source_url": "https://kanye.rest/",
      "text": "I love sleep; it's my favorite.",
      "word_count": 6
    }
  ],
  "requested_count": 2,
  "safe_for_work_only": true
}
```

### Get the quote of the day

Pick one quote for a day and keep picking that same quote all day. A random draw gives a different one on every call, so a daily workflow that retries, or that two people run an hour apart, posts two different quotes for the one day. This one is fixed by the date: the same date always gives the same quote, and tomorrow gives a different one. Add a seed of your own to have two workspaces post different quotes on the same day.

**Inputs**

- Day (`date`, date): The day to pick a quote for. Leave empty for today in UTC, which is what a scheduled step wants.
- Seed (`seed`, text): Any text you like, mixed into the day so that two workspaces running this on the same day get different quotes. Leave empty to share the day's quote with everyone else.
- Safe for work only (`safe_for_work`, true/false): Leave out the quotes with strong language in them. On by default, so a step posting to a team channel cannot draw one by accident. The service publishes no rating of its own, so this filter is Lodol's and is applied to what it sends; every quote returned also carries its own 'safe_for_work' flag, and the number left out is always reported. Default: `true`.

**Outputs**

- `date` (text)
- `excluded_count` (number)
- `pool_size` (number): How many quotes the day's pick was made from.
- `quote` (object): One Kanye West quote, ready to post.
- `safe_for_work_only` (true/false)
- `seed` (text)

**Example output**

```json
{
  "date": "2026-09-15",
  "excluded_count": 2,
  "pool_size": 120,
  "quote": {
    "author": "Kanye West",
    "character_count": 52,
    "id": "f85953d5414b",
    "quote": "I feel like I'm too busy writing history to read it.",
    "safe_for_work": true,
    "source_url": "https://kanye.rest/",
    "text": "I feel like I'm too busy writing history to read it.",
    "word_count": 11
  },
  "safe_for_work_only": true,
  "seed": "2026-09-15"
}
```

### Search quotes

Find the quotes that mention something: a word, a name, a subject, best match first. The service has no search of its own, so the matching and the ranking are done here over the whole catalogue in one request, with a whole-word hit worth far more than one buried inside a longer word. The total number of matches is always reported, however many are returned.

**Inputs**

- Search for (`query`, text, required): The word or phrase to look for in the quotes. Matching ignores capitalisation.
- Number of results (`limit`, number): How many matches to return, from 1 to 100. Defaults to 10. From 1 to 100. Default: `10`.
- Safe for work only (`safe_for_work`, true/false): Leave out the quotes with strong language in them. On by default, so a step posting to a team channel cannot draw one by accident. The service publishes no rating of its own, so this filter is Lodol's and is applied to what it sends; every quote returned also carries its own 'safe_for_work' flag, and the number left out is always reported. Default: `true`.

**Outputs**

- `excluded_count` (number)
- `match_count` (number)
- `matches` (list)
- `query` (text)
- `safe_for_work_only` (true/false)
- `searched_count` (number): How many quotes were searched.
- `total_matches` (number)

**Example output**

```json
{
  "excluded_count": 2,
  "match_count": 1,
  "matches": [
    {
      "author": "Kanye West",
      "character_count": 31,
      "id": "d97e0042e0b3",
      "quote": "I love sleep; it's my favorite.",
      "safe_for_work": true,
      "source_url": "https://kanye.rest/",
      "text": "I love sleep; it's my favorite.",
      "word_count": 6
    }
  ],
  "query": "sleep",
  "safe_for_work_only": true,
  "searched_count": 120,
  "total_matches": 1
}
```
