# AnimeThemes

> Look up anime opening and ending themes on AnimeThemes, the community archive of OP/ED videos. Search the catalogue, browse anime by year, season, format or studio, follow an artist through every song they performed, and get direct streaming links to the WebM video and OGG audio of any theme. Also reads public playlists, the featured theme of the day, and the site's own documentation pages. No account or API key required.

App · Film, TV & Fandom · 29 actions. Web page: https://docs.lodol.com/docs/integrations/animethemes

## Actions

### Find anime by external site

Look an anime up on AnimeThemes using its id or URL on another site: MyAnimeList, AniList, Kitsu, aniDB, Anime-Planet, Crunchyroll, Netflix and the rest. Use this to bridge a workflow that already knows an anime from somewhere else into its opening and ending themes.

**Inputs**

- Site (`site`, text, required): The site the id or link belongs to. One of: `OFFICIAL_SITE` (Official site), `X` (X (Twitter)), `ANIDB`, `ANILIST`, `ANIME_PLANET` (Anime-Planet), `ANN` (Anime News Network), `KITSU`, `MAL` (MyAnimeList), `LIVECHART`, `WIKI` (Wikipedia), and 11 more.
- IDs on that site (`external_ids`, list): One or more ids of the anime on the chosen site (for AniList, 5081 is Bakemonogatari). Provide these or a link.
- Link on that site (`link`, text): The full URL of the entry on the chosen site, for example https://anilist.co/anime/5081. Provide this or the ids.
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: none. One or more of: `themes` (Themes (the OP/ED list)), `entries` (Theme versions), `videos` (Video files and streaming links), `artists` (Performing artists), `synonyms` (Alternative titles), `images` (Cover art), `resources` (Links to MyAnimeList, AniList, streaming services), `series` (Series it belongs to), `studios` (Studios that made it).

**Outputs**

- `anime` (list)
- `count` (number)
- `site` (text)

**Example output**

```json
{
  "anime": [
    {
      "createdAt": "2021-03-27 00:43:30",
      "format": "TV",
      "formatLocalized": "TV",
      "id": 218,
      "season": "SUMMER",
      "seasonLocalized": "Summer",
      "siteUrl": "https://animethemes.moe/anime/bakemonogatari",
      "slug": "bakemonogatari",
      "title": {
        "english": null,
        "native": null,
        "romaji": "Bakemonogatari"
      },
      "updatedAt": "2021-03-28 00:19:40",
      "year": 2009
    }
  ],
  "count": 1,
  "site": "ANILIST"
}
```

### Get a documentation page

Read one AnimeThemes documentation page by its path, such as the FAQ or the encoding guides, and get its Markdown body.

**Inputs**

- Page path (`slug`, text, required): The page's path on animethemes.moe, without a leading slash. List documentation pages returns it.
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: Page text (Markdown). One or more of: `body` (Page text (Markdown)), `neighbors` (Previous and next page). Default: `["body"]`.

**Outputs**

- `page` (object): The documentation page.

**Example output**

```json
{
  "page": {
    "body": "## AnimeThemes\n\n### What is AnimeThemes?\n\n...",
    "createdAt": "2022-02-15 17:04:03",
    "id": 1,
    "name": "Frequently Asked Questions",
    "slug": "about/faq",
    "updatedAt": "2024-06-01 12:00:00"
  }
}
```

### Get a playlist

Read one public AnimeThemes playlist and its tracks in playback order, each with the video's streaming link and the anime it comes from.

**Inputs**

- Playlist ID (`playlist_id`, text, required): The playlist's id, the short code in its URL (animethemes.moe/playlist/<id>). List playlists returns it.
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: Tracks, in playback order, Video file of each track, Theme version of each track, Theme and song of each track, Anime of each track. One or more of: `tracks` (Tracks, in playback order), `video` (Video file of each track), `entry` (Theme version of each track), `theme` (Theme and song of each track), `anime` (Anime of each track). Default: `["tracks", "video", "entry", "theme", "anime"]`.

**Outputs**

- `playlist` (object): The playlist.

**Example output**

```json
{
  "playlist": {
    "createdAt": "2024-08-25 23:43:19",
    "description": "This playlist is mostly used for testing new playlist features.",
    "id": "N4hK",
    "name": "Mani's Playlist",
    "siteUrl": "https://animethemes.moe/playlist/N4hK",
    "tracksCount": 3,
    "tracksExists": true,
    "updatedAt": "2024-08-25 23:43:19",
    "user": {
      "id": 1,
      "name": "Maniload"
    },
    "visibility": "PUBLIC",
    "visibilityLocalized": "Public"
  }
}
```

### Get a playlist track

Read one track of a playlist, with its position and the video, theme and anime it points at.

**Inputs**

- Playlist ID (`playlist_id`, text, required): The id of the playlist the track belongs to.
- Track ID (`track_id`, text, required): The track's id. List playlist tracks returns it for every track.
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: Video file, Theme version, Theme and song, Anime. One or more of: `video` (Video file), `entry` (Theme version), `theme` (Theme and song), `anime`. Default: `["video", "entry", "theme", "anime"]`.

**Outputs**

- `playlist_track` (object): The playlist track.

**Example output**

```json
{
  "playlist_track": {
    "animethemeentry": {
      "animetheme": {
        "anime": {
          "createdAt": "2021-03-27 00:43:30",
          "format": "TV",
          "formatLocalized": "TV",
          "id": 218,
          "season": "SUMMER",
          "seasonLocalized": "Summer",
          "siteUrl": "https://animethemes.moe/anime/bakemonogatari",
          "slug": "bakemonogatari",
          "title": {
            "english": null,
            "native": null,
            "romaji": "Bakemonogatari"
          },
          "updatedAt": "2021-03-28 00:19:40",
          "year": 2009
        },
        "createdAt": "2021-03-27 00:43:30",
        "group": null,
        "id": 3373,
        "sequence": 1,
        "slug": "OP1",
        "song": {
          "createdAt": "2021-03-27 00:43:30",
          "id": 3373,
          "title": {
            "native": null,
            "romaji": "staple stable"
          },
          "updatedAt": "2021-03-27 00:43:30"
        },
        "type": "OP",
        "typeLocalized": "OP",
        "updatedAt": "2021-03-27 00:43:30"
      },
      "createdAt": "2021-03-27 00:43:30",
      "episodes": "1-2",
      "id": 2571,
      "likesCount": 12,
      "notes": null,
      "nsfw": false,
      "spoiler": false,
      "tracksCount": 3,
      "updatedAt": "2021-03-27 00:43:30",
      "version": 1,
      "videos": {
        "nodes": [
          {
            "basename": "Bakemonogatari-OP1.webm",
            "createdAt": "2021-03-27 00:43:30",
            "filename": "Bakemonogatari-OP1",
            "id": 2712,
            "link": "https://v.animethemes.moe/Bakemonogatari-OP1.webm",
            "lyrics": false,
            "mimetype": "video/webm",
            "nc": true,
            "overlap": "NONE",
            "overlapLocalized": "None",
            "path": "2009/Summer/Bakemonogatari-OP1.webm",
            "priority": 1,
            "resolution": 1080,
            "size": 50602649,
            "source": "BD",
            "sourceLocalized": "BD",
            "subbed": false,
            "tags": "NCBD1080",
            "uncen": false,
            "updatedAt": "2021-03-27 00:43:30"
          }
        ],
        "pageInfo": {
          "count": 1,
          "total": 1
        }
      }
    },
    "createdAt": "2024-08-25 23:43:19",
    "id": "DlU7M56",
    "position": 1,
    "updatedAt": "2024-08-25 23:43:19",
    "video": {
      "basename": "Bakemonogatari-OP1.webm",
      "createdAt": "2021-03-27 00:43:30",
      "filename": "Bakemonogatari-OP1",
      "id": 2712,
      "link": "https://v.animethemes.moe/Bakemonogatari-OP1.webm",
      "lyrics": false,
      "mimetype": "video/webm",
      "nc": true,
      "overlap": "NONE",
      "overlapLocalized": "None",
      "path": "2009/Summer/Bakemonogatari-OP1.webm",
      "priority": 1,
      "resolution": 1080,
      "size": 50602649,
      "source": "BD",
      "sourceLocalized": "BD",
      "subbed": false,
      "tags": "NCBD1080",
      "uncen": false,
      "updatedAt": "2021-03-27 00:43:30"
    }
  }
}
```

### Get a series

Read one franchise and every anime AnimeThemes files under it, so a workflow can walk a whole series (every season, film and OVA) from a single step.

**Inputs**

- Series (`slug`, text, required): Pick a series, or reference a slug from an earlier step.
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: Anime in the series. One or more of: `anime` (Anime in the series). Default: `["anime"]`.

**Outputs**

- `series` (object): The series.

**Example output**

```json
{
  "series": {
    "createdAt": "2021-03-27 00:43:30",
    "id": 116,
    "name": "Monogatari",
    "siteUrl": "https://animethemes.moe/series/monogatari",
    "slug": "monogatari",
    "title": {
      "romaji": "Monogatari"
    },
    "updatedAt": "2021-03-27 00:43:30"
  }
}
```

### Get a studio

Read one animation studio and the anime it produced, plus its images and links to other sites.

**Inputs**

- Studio (`slug`, text, required): Pick a studio, or reference a slug from an earlier step.
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: Anime produced, Images, Links to other sites. One or more of: `anime` (Anime produced), `images`, `resources` (Links to other sites). Default: `["anime", "images", "resources"]`.

**Outputs**

- `studio` (object): The studio.

**Example output**

```json
{
  "studio": {
    "createdAt": "2021-03-27 00:43:30",
    "id": 11,
    "name": "Shaft",
    "siteUrl": "https://animethemes.moe/studio/shaft",
    "slug": "shaft",
    "updatedAt": "2021-03-27 00:43:30"
  }
}
```

### Get a video

Read one video file by its id: the direct WebM streaming link, the resolution and source, the encoding flags, the matching audio-only track, and the theme and anime it belongs to.

**Inputs**

- Video ID (`video_id`, number, required): The video's AnimeThemes id. Every action that returns videos includes it. At least 1.
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: Audio-only track, Encoding script, Theme versions it belongs to, Theme and song, Anime. One or more of: `audio` (Audio-only track), `script` (Encoding script), `entries` (Theme versions it belongs to), `theme` (Theme and song), `anime`. Default: `["audio", "script", "entries", "theme", "anime"]`.

**Outputs**

- `video` (object): The video.

**Example output**

```json
{
  "video": {
    "basename": "Bakemonogatari-OP1.webm",
    "createdAt": "2021-03-27 00:43:30",
    "filename": "Bakemonogatari-OP1",
    "id": 2712,
    "link": "https://v.animethemes.moe/Bakemonogatari-OP1.webm",
    "lyrics": false,
    "mimetype": "video/webm",
    "nc": true,
    "overlap": "NONE",
    "overlapLocalized": "None",
    "path": "2009/Summer/Bakemonogatari-OP1.webm",
    "priority": 1,
    "resolution": 1080,
    "size": 50602649,
    "source": "BD",
    "sourceLocalized": "BD",
    "subbed": false,
    "tags": "NCBD1080",
    "uncen": false,
    "updatedAt": "2021-03-27 00:43:30"
  }
}
```

### Get an anime

Read one anime by its AnimeThemes slug, together with its openings and endings, the songs and artists behind them, and a direct streaming link for every video. Use Search AnimeThemes or List anime first if you only have a title.

**Inputs**

- Anime slug (`slug`, text, required): The anime's AnimeThemes slug, as it appears in its URL (animethemes.moe/anime/<slug>). Search AnimeThemes and List anime both return it.
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: Themes (the OP/ED list), Theme versions, Video files and streaming links, Performing artists, Cover art, Links to MyAnimeList, AniList, streaming services. One or more of: `themes` (Themes (the OP/ED list)), `entries` (Theme versions), `videos` (Video files and streaming links), `artists` (Performing artists), `synonyms` (Alternative titles), `images` (Cover art), `resources` (Links to MyAnimeList, AniList, streaming services), `series` (Series it belongs to), `studios` (Studios that made it). Default: `["themes", "entries", "videos", "artists", "images", "resources"]`.

**Outputs**

- `anime` (object): The anime, with everything asked for.

**Example output**

```json
{
  "anime": {
    "createdAt": "2021-03-27 00:43:30",
    "format": "TV",
    "formatLocalized": "TV",
    "id": 218,
    "season": "SUMMER",
    "seasonLocalized": "Summer",
    "siteUrl": "https://animethemes.moe/anime/bakemonogatari",
    "slug": "bakemonogatari",
    "title": {
      "english": null,
      "native": null,
      "romaji": "Bakemonogatari"
    },
    "updatedAt": "2021-03-28 00:19:40",
    "year": 2009
  }
}
```

### Get an artist

Read one artist and everything they performed: the songs, the anime those songs open or close, the groups they belong to and the members of the group, plus links to Spotify, YouTube and the rest.

**Inputs**

- Artist (`slug`, text, required): Pick an artist, or reference a slug from an earlier step. The list loads from AnimeThemes the first time you open it.
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: Songs performed, Anime those songs appear in, Members (if this is a group), Groups they belong to, Images, Links to other sites. One or more of: `songs` (Songs performed), `anime` (Anime those songs appear in), `members` (Members (if this is a group)), `groups` (Groups they belong to), `images`, `resources` (Links to other sites). Default: `["songs", "anime", "members", "groups", "images", "resources"]`.

**Outputs**

- `artist` (object): The artist.

**Example output**

```json
{
  "artist": {
    "createdAt": "2021-03-27 00:43:30",
    "id": 103,
    "information": null,
    "name": {
      "main": "Kana Hanazawa",
      "native": "\u82b1\u6fa4\u9999\u83dc"
    },
    "siteUrl": "https://animethemes.moe/artist/kana_hanazawa",
    "slug": "kana_hanazawa",
    "updatedAt": "2021-03-27 00:43:30"
  }
}
```

### Get the featured theme

Read the theme AnimeThemes is featuring on its homepage right now, with the video, the song, the performing artists and the dates it is featured between. Returns null between features.

**Inputs**: None.

**Outputs**

- `featured_theme` (object): The currently featured theme.

**Example output**

```json
{
  "featured_theme": {
    "animethemeentry": {
      "animetheme": {
        "anime": {
          "createdAt": "2021-03-27 00:43:30",
          "format": "TV",
          "formatLocalized": "TV",
          "id": 218,
          "season": "SUMMER",
          "seasonLocalized": "Summer",
          "siteUrl": "https://animethemes.moe/anime/bakemonogatari",
          "slug": "bakemonogatari",
          "title": {
            "english": null,
            "native": null,
            "romaji": "Bakemonogatari"
          },
          "updatedAt": "2021-03-28 00:19:40",
          "year": 2009
        },
        "createdAt": "2021-03-27 00:43:30",
        "group": null,
        "id": 3373,
        "sequence": 1,
        "slug": "OP1",
        "song": {
          "createdAt": "2021-03-27 00:43:30",
          "id": 3373,
          "title": {
            "native": null,
            "romaji": "staple stable"
          },
          "updatedAt": "2021-03-27 00:43:30"
        },
        "type": "OP",
        "typeLocalized": "OP",
        "updatedAt": "2021-03-27 00:43:30"
      },
      "createdAt": "2021-03-27 00:43:30",
      "episodes": "1-2",
      "id": 2571,
      "likesCount": 12,
      "notes": null,
      "nsfw": false,
      "spoiler": false,
      "tracksCount": 3,
      "updatedAt": "2021-03-27 00:43:30",
      "version": 1,
      "videos": {
        "nodes": [
          {
            "basename": "Bakemonogatari-OP1.webm",
            "createdAt": "2021-03-27 00:43:30",
            "filename": "Bakemonogatari-OP1",
            "id": 2712,
            "link": "https://v.animethemes.moe/Bakemonogatari-OP1.webm",
            "lyrics": false,
            "mimetype": "video/webm",
            "nc": true,
            "overlap": "NONE",
            "overlapLocalized": "None",
            "path": "2009/Summer/Bakemonogatari-OP1.webm",
            "priority": 1,
            "resolution": 1080,
            "size": 50602649,
            "source": "BD",
            "sourceLocalized": "BD",
            "subbed": false,
            "tags": "NCBD1080",
            "uncen": false,
            "updatedAt": "2021-03-27 00:43:30"
          }
        ],
        "pageInfo": {
          "count": 1,
          "total": 1
        }
      }
    },
    "createdAt": "2026-08-08 02:24:11",
    "endAt": "2026-08-17",
    "id": 117,
    "startAt": "2026-08-07",
    "updatedAt": "2026-08-08 02:24:11",
    "user": {
      "id": 1,
      "name": "Maniload"
    },
    "video": {
      "basename": "Bakemonogatari-OP1.webm",
      "createdAt": "2021-03-27 00:43:30",
      "filename": "Bakemonogatari-OP1",
      "id": 2712,
      "link": "https://v.animethemes.moe/Bakemonogatari-OP1.webm",
      "lyrics": false,
      "mimetype": "video/webm",
      "nc": true,
      "overlap": "NONE",
      "overlapLocalized": "None",
      "path": "2009/Summer/Bakemonogatari-OP1.webm",
      "priority": 1,
      "resolution": 1080,
      "size": 50602649,
      "source": "BD",
      "sourceLocalized": "BD",
      "subbed": false,
      "tags": "NCBD1080",
      "uncen": false,
      "updatedAt": "2021-03-27 00:43:30"
    }
  }
}
```

### List anime

Browse and filter the anime catalogue by title, year, season, format and when AnimeThemes added or last edited the entry. Returns a page of anime plus a paginatorInfo a workflow can loop on.

**Inputs**

- Search (`search_term`, text): Free-text search across this collection. AnimeThemes runs this through its search index, so it cannot be combined with the other filters or with Sort by; use 'contains' filters for that. For example: bakemonogatari.
- Title contains (`title_contains`, text): Match anime whose romanised title contains this text. Unlike Search, this one combines with the filters below.
- Exact title (`title`, text): Match the romanised title exactly.
- Slug (`slug`, text): Match one anime by its exact slug.
- Anime ID (`anime_id`, number): Match one anime by its AnimeThemes id. At least 1.
- Formats (`formats`, list): Only return anime of these formats. Leave empty for all of them. One or more of: `TV`, `TV_SHORT` (TV Short), `OVA`, `MOVIE`, `SPECIAL`, `ONA` (ONA (web)).
- Seasons (`seasons`, list): Only return anime that premiered in these seasons. Leave empty for all of them. One or more of: `WINTER`, `SPRING`, `SUMMER`, `FALL`.
- Year (`year`, number): Only return anime from this exact year. From 1900 to 2100.
- From year (`min_year`, number): Only return anime from this year onwards. From 1900 to 2100.
- To year (`max_year`, number): Only return anime up to and including this year. From 1900 to 2100.
- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: none. One or more of: `themes` (Themes (the OP/ED list)), `entries` (Theme versions), `videos` (Video files and streaming links), `artists` (Performing artists), `synonyms` (Alternative titles), `images` (Cover art), `resources` (Links to MyAnimeList, AniList, streaming services), `series` (Series it belongs to), `studios` (Studios that made it).
- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `TITLE_ROMAJI` (Title (A-Z)), `TITLE_ROMAJI_DESC` (Title (Z-A)), `TITLE_ENGLISH` (English title (A-Z)), `TITLE_ENGLISH_DESC` (English title (Z-A)), `TITLE_NATIVE` (Japanese title (A-Z)), `TITLE_NATIVE_DESC` (Japanese title (Z-A)), `YEAR` (Year (oldest first)), `YEAR_DESC` (Year (newest first)), `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), and 5 more.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The anime on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "createdAt": "2021-03-27 00:43:30",
      "format": "TV",
      "formatLocalized": "TV",
      "id": 218,
      "season": "SUMMER",
      "seasonLocalized": "Summer",
      "siteUrl": "https://animethemes.moe/anime/bakemonogatari",
      "slug": "bakemonogatari",
      "title": {
        "english": null,
        "native": null,
        "romaji": "Bakemonogatari"
      },
      "updatedAt": "2021-03-28 00:19:40",
      "year": 2009
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List announcements

List the site-wide announcements AnimeThemes shows on its homepage. Returns an empty page when there is nothing announced, so a workflow can branch on the count.

**Inputs**

- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `CREATED_AT_DESC` (Date added (newest first)), `CREATED_AT` (Date added (oldest first)), `UPDATED_AT_DESC` (Last updated (newest first)), `UPDATED_AT` (Last updated (oldest first)), `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), `RANDOM`.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The announcements on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "content": "Welcome to AnimeThemes.",
      "createdAt": "2024-01-01 00:00:00",
      "id": 1,
      "updatedAt": "2024-01-01 00:00:00"
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List artists

Browse and filter the artists who perform anime themes, by name or by when AnimeThemes added them.

**Inputs**

- Search (`search_term`, text): Free-text search across this collection. AnimeThemes runs this through its search index, so it cannot be combined with the other filters or with Sort by; use 'contains' filters for that. For example: supercell.
- Name contains (`name_contains`, text): Match artists whose name contains this text. Unlike Search, this one combines with the filters below.
- Exact name (`name`, text): Match the artist's main name exactly.
- Slug (`slug`, text): Match one artist by their exact slug.
- Artist ID (`artist_id`, number): Match one artist by their AnimeThemes id. At least 1.
- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: none. One or more of: `songs` (Songs performed), `anime` (Anime those songs appear in), `members` (Members (if this is a group)), `groups` (Groups they belong to), `images`, `resources` (Links to other sites).
- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `NAME_MAIN` (Name (A-Z)), `NAME_MAIN_DESC` (Name (Z-A)), `NAME_NATIVE` (Japanese name (A-Z)), `NAME_NATIVE_DESC` (Japanese name (Z-A)), `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), `CREATED_AT` (Date added (oldest first)), `CREATED_AT_DESC` (Date added (newest first)), `UPDATED_AT` (Last updated (oldest first)), `UPDATED_AT_DESC` (Last updated (newest first)), `RANDOM`.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The artists on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "createdAt": "2021-03-27 00:43:30",
      "id": 103,
      "information": null,
      "name": {
        "main": "Kana Hanazawa",
        "native": "\u82b1\u6fa4\u9999\u83dc"
      },
      "siteUrl": "https://animethemes.moe/artist/kana_hanazawa",
      "slug": "kana_hanazawa",
      "updatedAt": "2021-03-27 00:43:30"
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List audio tracks

Browse and filter the audio-only versions of the themes, each with a direct link to the OGG file. Use this when a workflow wants the song without the video.

**Inputs**

- File name (`basename`, text): Match the file name exactly, for example Bakemonogatari-OP1.ogg.
- File name without extension (`filename`, text): Match the file name without its extension.
- Path contains (`path_contains`, text): Match tracks whose storage path contains this text.
- Exact path (`path`, text): Match the storage path exactly.
- MIME type (`mimetype`, text): Match the MIME type exactly, such as audio/ogg.
- Minimum file size (bytes) (`min_size`, number): Only return tracks of at least this many bytes. At least 0.
- Maximum file size (bytes) (`max_size`, number): Only return tracks of at most this many bytes. At least 0.
- Audio ID (`audio_id`, number): Match one audio track by its AnimeThemes id. At least 1.
- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: none. One or more of: `videos` (Videos this audio came from).
- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `BASENAME` (File name (A-Z)), `BASENAME_DESC` (File name (Z-A)), `FILENAME` (File name without extension (A-Z)), `FILENAME_DESC` (File name without extension (Z-A)), `SIZE` (File size (smallest first)), `SIZE_DESC` (File size (largest first)), `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), `CREATED_AT` (Date added (oldest first)), `CREATED_AT_DESC` (Date added (newest first)), and 3 more.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The audio tracks on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "basename": "Bakemonogatari-OP1.ogg",
      "createdAt": "2021-03-27 00:43:30",
      "filename": "Bakemonogatari-OP1",
      "id": 2563,
      "link": "https://a.animethemes.moe/Bakemonogatari-OP1.ogg",
      "mimetype": "audio/ogg",
      "path": "2009/Summer/Bakemonogatari-OP1.ogg",
      "size": 4184622,
      "updatedAt": "2021-03-27 00:43:30"
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List documentation pages

List the AnimeThemes documentation pages: guides, policies and the FAQ. Each one carries the path Get a documentation page takes.

**Inputs**

- Name contains (`name_contains`, text): Match pages whose title contains this text.
- Exact name (`name`, text): Match the page title exactly.
- Path contains (`path_contains`, text): Match pages whose path contains this text, for example encoding.
- Page ID (`page_id`, number): Match one page by its AnimeThemes id. At least 1.
- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: none. One or more of: `body` (Page text (Markdown)), `neighbors` (Previous and next page).
- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `NAME` (Name (A-Z)), `NAME_DESC` (Name (Z-A)), `SLUG` (Path (A-Z)), `SLUG_DESC` (Path (Z-A)), `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), `CREATED_AT` (Date added (oldest first)), `CREATED_AT_DESC` (Date added (newest first)), `UPDATED_AT` (Last updated (oldest first)), `UPDATED_AT_DESC` (Last updated (newest first)), `RANDOM`.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The documentation pages on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "createdAt": "2022-02-15 17:04:03",
      "id": 1,
      "name": "Frequently Asked Questions",
      "slug": "about/faq",
      "updatedAt": "2024-06-01 12:00:00"
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List external profiles

List the public MyAnimeList, AniList and Kitsu profiles AnimeThemes members have linked to their accounts. Returns an empty page when none are public.

**Inputs**

- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The external profiles on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "createdAt": "2024-01-01 00:00:00",
      "id": 1,
      "name": "example",
      "site": "MAL",
      "siteLocalized": "MyAnimeList",
      "updatedAt": "2024-01-01 00:00:00",
      "visibility": "PUBLIC",
      "visibilityLocalized": "Public"
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List images

Browse and filter the artwork AnimeThemes hosts: cover art, banners, avatars and more, each with a direct link. Filter by the kind of image you want.

**Inputs**

- Image type (`facet`, text): Only return images of this kind. One of: `SMALL_COVER` (Small cover), `LARGE_COVER` (Large cover), `GRILL`, `DOCUMENT`, `AVATAR`, `BANNER`.
- Path contains (`path_contains`, text): Match images whose storage path contains this text.
- Exact path (`path`, text): Match the storage path exactly.
- Image ID (`image_id`, number): Match one image by its AnimeThemes id. At least 1.
- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), `CREATED_AT` (Date added (oldest first)), `CREATED_AT_DESC` (Date added (newest first)), `UPDATED_AT` (Last updated (oldest first)), `UPDATED_AT_DESC` (Last updated (newest first)), `RANDOM`.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The images on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "createdAt": "2021-03-27 00:43:30",
      "facet": "LARGE_COVER",
      "facetLocalized": "Large Cover",
      "id": 435,
      "link": "https://pub-92474f7785774e91a790e086dfa6b2ef.r2.dev/anime/large-cover/bakemonogatari.jpg",
      "path": "anime/large-cover/bakemonogatari.jpg",
      "updatedAt": "2021-03-27 00:43:30"
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List playlist tracks

List the tracks of one playlist, page by page, each with the video's streaming link and the theme it comes from. Sort by Playback order to walk the playlist as it plays.

**Inputs**

- Playlist ID (`playlist_id`, text, required): The id of the playlist to read tracks from.
- Position (`position`, number): Only return the track at this position. At least 1.
- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: Video file, Theme version, Theme and song, Anime. One or more of: `video` (Video file), `entry` (Theme version), `theme` (Theme and song), `anime`. Default: `["video", "entry", "theme", "anime"]`.
- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `POSITION` (Playback order), `POSITION_DESC` (Reverse playback order), `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), `CREATED_AT` (Date added (oldest first)), `CREATED_AT_DESC` (Date added (newest first)), `UPDATED_AT` (Last updated (oldest first)), `UPDATED_AT_DESC` (Last updated (newest first)), `RANDOM`.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The playlist tracks on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "animethemeentry": {
        "animetheme": {
          "anime": {
            "createdAt": "2021-03-27 00:43:30",
            "format": "TV",
            "formatLocalized": "TV",
            "id": 218,
            "season": "SUMMER",
            "seasonLocalized": "Summer",
            "siteUrl": "https://animethemes.moe/anime/bakemonogatari",
            "slug": "bakemonogatari",
            "title": {
              "english": null,
              "native": null,
              "romaji": "Bakemonogatari"
            },
            "updatedAt": "2021-03-28 00:19:40",
            "year": 2009
          },
          "createdAt": "2021-03-27 00:43:30",
          "group": null,
          "id": 3373,
          "sequence": 1,
          "slug": "OP1",
          "song": {
            "createdAt": "2021-03-27 00:43:30",
            "id": 3373,
            "title": {
              "native": null,
              "romaji": "staple stable"
            },
            "updatedAt": "2021-03-27 00:43:30"
          },
          "type": "OP",
          "typeLocalized": "OP",
          "updatedAt": "2021-03-27 00:43:30"
        },
        "createdAt": "2021-03-27 00:43:30",
        "episodes": "1-2",
        "id": 2571,
        "likesCount": 12,
        "notes": null,
        "nsfw": false,
        "spoiler": false,
        "tracksCount": 3,
        "updatedAt": "2021-03-27 00:43:30",
        "version": 1,
        "videos": {
          "nodes": [
            {
              "basename": "Bakemonogatari-OP1.webm",
              "createdAt": "2021-03-27 00:43:30",
              "filename": "Bakemonogatari-OP1",
              "id": 2712,
              "link": "https://v.animethemes.moe/Bakemonogatari-OP1.webm",
              "lyrics": false,
              "mimetype": "video/webm",
              "nc": true,
              "overlap": "NONE",
              "overlapLocalized": "None",
              "path": "2009/Summer/Bakemonogatari-OP1.webm",
              "priority": 1,
              "resolution": 1080,
              "size": 50602649,
              "source": "BD",
              "sourceLocalized": "BD",
              "subbed": false,
              "tags": "NCBD1080",
              "uncen": false,
              "updatedAt": "2021-03-27 00:43:30"
            }
          ],
          "pageInfo": {
            "count": 1,
            "total": 1
          }
        }
      },
      "createdAt": "2024-08-25 23:43:19",
      "id": "DlU7M56",
      "position": 1,
      "updatedAt": "2024-08-25 23:43:19",
      "video": {
        "basename": "Bakemonogatari-OP1.webm",
        "createdAt": "2021-03-27 00:43:30",
        "filename": "Bakemonogatari-OP1",
        "id": 2712,
        "link": "https://v.animethemes.moe/Bakemonogatari-OP1.webm",
        "lyrics": false,
        "mimetype": "video/webm",
        "nc": true,
        "overlap": "NONE",
        "overlapLocalized": "None",
        "path": "2009/Summer/Bakemonogatari-OP1.webm",
        "priority": 1,
        "resolution": 1080,
        "size": 50602649,
        "source": "BD",
        "sourceLocalized": "BD",
        "subbed": false,
        "tags": "NCBD1080",
        "uncen": false,
        "updatedAt": "2021-03-27 00:43:30"
      }
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List playlists

Browse and filter the playlists AnimeThemes members have shared publicly, by name, visibility or when they were made.

**Inputs**

- Search (`search_term`, text): Free-text search across this collection. AnimeThemes runs this through its search index, so it cannot be combined with the other filters or with Sort by; use 'contains' filters for that. For example: anime bops.
- Name contains (`name_contains`, text): Match playlists whose name contains this text. Unlike Search, this one combines with the filters below.
- Exact name (`name`, text): Match the playlist name exactly.
- Visibility (`visibility`, text): Only return playlists with this visibility. Anonymous requests only ever see public ones. One of: `PUBLIC`, `PRIVATE`, `UNLISTED`.
- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: none. One or more of: `tracks` (Tracks, in playback order), `video` (Video file of each track), `entry` (Theme version of each track), `theme` (Theme and song of each track), `anime` (Anime of each track).
- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `NAME` (Name (A-Z)), `NAME_DESC` (Name (Z-A)), `TRACKS_COUNT` (Track count (fewest first)), `TRACKS_COUNT_DESC` (Track count (most first)), `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), `CREATED_AT` (Date added (oldest first)), `CREATED_AT_DESC` (Date added (newest first)), `UPDATED_AT` (Last updated (oldest first)), `UPDATED_AT_DESC` (Last updated (newest first)), `RANDOM`.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The playlists on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "createdAt": "2024-08-25 23:43:19",
      "description": "This playlist is mostly used for testing new playlist features.",
      "id": "N4hK",
      "name": "Mani's Playlist",
      "siteUrl": "https://animethemes.moe/playlist/N4hK",
      "tracksCount": 3,
      "tracksExists": true,
      "updatedAt": "2024-08-25 23:43:19",
      "user": {
        "id": 1,
        "name": "Maniload"
      },
      "visibility": "PUBLIC",
      "visibilityLocalized": "Public"
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List series

Browse and filter the franchises anime are grouped into, by title or by when AnimeThemes added them.

**Inputs**

- Search (`search_term`, text): Free-text search across this collection. AnimeThemes runs this through its search index, so it cannot be combined with the other filters or with Sort by; use 'contains' filters for that. For example: monogatari.
- Title contains (`title_contains`, text): Match series whose title contains this text. Unlike Search, this one combines with the filters below.
- Exact title (`title`, text): Match the series title exactly.
- Slug (`slug`, text): Match one series by its exact slug.
- Series ID (`series_id`, number): Match one series by its AnimeThemes id. At least 1.
- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: none. One or more of: `anime` (Anime in the series).
- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `TITLE_ROMAJI` (Title (A-Z)), `TITLE_ROMAJI_DESC` (Title (Z-A)), `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), `CREATED_AT` (Date added (oldest first)), `CREATED_AT_DESC` (Date added (newest first)), `UPDATED_AT` (Last updated (oldest first)), `UPDATED_AT_DESC` (Last updated (newest first)), `RANDOM`.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The series on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "createdAt": "2021-03-27 00:43:30",
      "id": 116,
      "name": "Monogatari",
      "siteUrl": "https://animethemes.moe/series/monogatari",
      "slug": "monogatari",
      "title": {
        "romaji": "Monogatari"
      },
      "updatedAt": "2021-03-27 00:43:30"
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List songs

Browse and filter the songs used as anime themes, with the artists who performed them and the themes they belong to. Look a song up by its romanised or Japanese title.

**Inputs**

- Title (`title`, text): Match the romanised song title exactly, for example staple stable.
- Japanese title (`title_native`, text): Match the Japanese song title exactly.
- Song ID (`song_id`, number): Match one song by its AnimeThemes id. At least 1.
- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: Performing artists, Themes that use the song, Anime those themes belong to. One or more of: `artists` (Performing artists), `themes` (Themes that use the song), `anime` (Anime those themes belong to), `resources` (Links to Spotify, Apple Music, YouTube). Default: `["artists", "themes", "anime"]`.
- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `TITLE` (Title (A-Z)), `TITLE_DESC` (Title (Z-A)), `TITLE_NATIVE` (Japanese title (A-Z)), `TITLE_NATIVE_DESC` (Japanese title (Z-A)), `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), `CREATED_AT` (Date added (oldest first)), `CREATED_AT_DESC` (Date added (newest first)), `UPDATED_AT` (Last updated (oldest first)), `UPDATED_AT_DESC` (Last updated (newest first)), `RANDOM`.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The songs on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "createdAt": "2021-03-27 00:43:30",
      "id": 3373,
      "title": {
        "native": null,
        "romaji": "staple stable"
      },
      "updatedAt": "2021-03-27 00:43:30"
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List studios

Browse and filter the animation studios, by name or by when AnimeThemes added them.

**Inputs**

- Search (`search_term`, text): Free-text search across this collection. AnimeThemes runs this through its search index, so it cannot be combined with the other filters or with Sort by; use 'contains' filters for that. For example: shaft.
- Name contains (`name_contains`, text): Match studios whose name contains this text. Unlike Search, this one combines with the filters below.
- Exact name (`name`, text): Match the studio name exactly.
- Slug (`slug`, text): Match one studio by its exact slug.
- Studio ID (`studio_id`, number): Match one studio by its AnimeThemes id. At least 1.
- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: none. One or more of: `anime` (Anime produced), `images`, `resources` (Links to other sites).
- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `NAME` (Name (A-Z)), `NAME_DESC` (Name (Z-A)), `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), `CREATED_AT` (Date added (oldest first)), `CREATED_AT_DESC` (Date added (newest first)), `UPDATED_AT` (Last updated (oldest first)), `UPDATED_AT_DESC` (Last updated (newest first)), `RANDOM`.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The studios on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "createdAt": "2021-03-27 00:43:30",
      "id": 11,
      "name": "Shaft",
      "siteUrl": "https://animethemes.moe/studio/shaft",
      "slug": "shaft",
      "updatedAt": "2021-03-27 00:43:30"
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List theme groups

List the version groups a theme can belong to, such as the TV version, the Blu-ray version or an English dub. Use it to see which group codes exist before filtering elsewhere.

**Inputs**

- Group (`slug`, text): Pick a group to look up by its code, or reference one from an earlier step.
- Exact name (`name`, text): Match the group name exactly, such as TV Version.
- Group ID (`group_id`, number): Match one group by its AnimeThemes id. At least 1.
- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `NAME` (Name (A-Z)), `NAME_DESC` (Name (Z-A)), `SLUG` (Code (A-Z)), `SLUG_DESC` (Code (Z-A)), `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), `CREATED_AT` (Date added (oldest first)), `CREATED_AT_DESC` (Date added (newest first)), `UPDATED_AT` (Last updated (oldest first)), `UPDATED_AT_DESC` (Last updated (newest first)), `RANDOM`.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The theme groups on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "createdAt": "2023-05-13 17:47:02",
      "id": 2,
      "name": "TV Version",
      "slug": "TV",
      "updatedAt": "2023-05-13 17:47:02"
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List theme versions

Browse and filter the versions of each theme, which is where the episode range, the spoiler and NSFW flags, the like count and the actual video files live. Filter these to find, say, every spoiler-free version added this month.

**Inputs**

- Episodes (`episodes`, text): Match the episode range exactly, as AnimeThemes writes it (for example 1-12).
- Episodes contains (`episodes_contains`, text): Match versions whose episode range contains this text.
- NSFW (`nsfw`, true/false): Set to false to leave out versions flagged as NSFW. Leave empty to include everything.
- Spoiler (`spoiler`, true/false): Set to false to leave out versions flagged as spoilers. Leave empty to include everything.
- Version (`version`, number): Only return this version number of each theme. At least 1.
- Minimum version (`min_version`, number): Only return versions numbered this high or higher. At least 1.
- Maximum version (`max_version`, number): Only return versions numbered this high or lower. At least 1.
- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: The theme it is a version of, The anime it belongs to, Song, Video files and streaming links. One or more of: `theme` (The theme it is a version of), `anime` (The anime it belongs to), `song`, `artists` (Performing artists), `videos` (Video files and streaming links), `resources` (Links to other sites). Default: `["theme", "anime", "song", "videos"]`.
- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `LIKES_COUNT` (Likes (fewest first)), `LIKES_COUNT_DESC` (Likes (most first)), `TRACKS_COUNT` (Playlist appearances (fewest first)), `TRACKS_COUNT_DESC` (Playlist appearances (most first)), `EPISODES` (Episodes (A-Z)), `EPISODES_DESC` (Episodes (Z-A)), `VERSION` (Version (lowest first)), `VERSION_DESC` (Version (highest first)), `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), and 5 more.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The theme versions on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "animetheme": {
        "anime": {
          "createdAt": "2021-03-27 00:43:30",
          "format": "TV",
          "formatLocalized": "TV",
          "id": 218,
          "season": "SUMMER",
          "seasonLocalized": "Summer",
          "siteUrl": "https://animethemes.moe/anime/bakemonogatari",
          "slug": "bakemonogatari",
          "title": {
            "english": null,
            "native": null,
            "romaji": "Bakemonogatari"
          },
          "updatedAt": "2021-03-28 00:19:40",
          "year": 2009
        },
        "createdAt": "2021-03-27 00:43:30",
        "group": null,
        "id": 3373,
        "sequence": 1,
        "slug": "OP1",
        "song": {
          "createdAt": "2021-03-27 00:43:30",
          "id": 3373,
          "title": {
            "native": null,
            "romaji": "staple stable"
          },
          "updatedAt": "2021-03-27 00:43:30"
        },
        "type": "OP",
        "typeLocalized": "OP",
        "updatedAt": "2021-03-27 00:43:30"
      },
      "createdAt": "2021-03-27 00:43:30",
      "episodes": "1-2",
      "id": 2571,
      "likesCount": 12,
      "notes": null,
      "nsfw": false,
      "spoiler": false,
      "tracksCount": 3,
      "updatedAt": "2021-03-27 00:43:30",
      "version": 1,
      "videos": {
        "nodes": [
          {
            "basename": "Bakemonogatari-OP1.webm",
            "createdAt": "2021-03-27 00:43:30",
            "filename": "Bakemonogatari-OP1",
            "id": 2712,
            "link": "https://v.animethemes.moe/Bakemonogatari-OP1.webm",
            "lyrics": false,
            "mimetype": "video/webm",
            "nc": true,
            "overlap": "NONE",
            "overlapLocalized": "None",
            "path": "2009/Summer/Bakemonogatari-OP1.webm",
            "priority": 1,
            "resolution": 1080,
            "size": 50602649,
            "source": "BD",
            "sourceLocalized": "BD",
            "subbed": false,
            "tags": "NCBD1080",
            "uncen": false,
            "updatedAt": "2021-03-27 00:43:30"
          }
        ],
        "pageInfo": {
          "count": 1,
          "total": 1
        }
      }
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List themes

Browse and filter the opening, ending and insert sequences themselves. Each theme comes back with the anime it belongs to, its song and the artists who performed it.

**Inputs**

- Search (`search_term`, text): Free-text search across this collection. AnimeThemes runs this through its search index, so it cannot be combined with the other filters or with Sort by; use 'contains' filters for that. For example: renai circulation.
- Theme types (`types`, list): Only return openings, endings or insert songs. Leave empty for all of them. One or more of: `OP` (Opening (OP)), `ED` (Ending (ED)), `IN` (Insert song (IN)).
- Sequence number (`sequence`, number): Only return themes with this sequence number, so 2 returns every OP2/ED2. At least 1.
- Minimum sequence number (`min_sequence`, number): Only return themes numbered this high or higher. At least 1.
- Maximum sequence number (`max_sequence`, number): Only return themes numbered this high or lower. At least 1.
- Theme code (`slug`, text): Match the theme's short code exactly, such as OP1 or ED2.
- Theme ID (`theme_id`, number): Match one theme by its AnimeThemes id. At least 1.
- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: The anime it belongs to, Song, Performing artists, Version group (TV, BD, English, ...). One or more of: `anime` (The anime it belongs to), `song`, `artists` (Performing artists), `group` (Version group (TV, BD, English, ...)), `entries` (Theme versions), `videos` (Video files and streaming links). Default: `["anime", "song", "artists", "group"]`.
- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `SONG_TITLE_ROMAJI` (Song title (A-Z)), `SONG_TITLE_ROMAJI_DESC` (Song title (Z-A)), `SONG_TITLE_NATIVE` (Japanese song title (A-Z)), `SONG_TITLE_NATIVE_DESC` (Japanese song title (Z-A)), `SEQUENCE` (Sequence number (lowest first)), `SEQUENCE_DESC` (Sequence number (highest first)), `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), `CREATED_AT` (Date added (oldest first)), `CREATED_AT_DESC` (Date added (newest first)), and 3 more.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The themes on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "anime": {
        "createdAt": "2021-03-27 00:43:30",
        "format": "TV",
        "formatLocalized": "TV",
        "id": 218,
        "season": "SUMMER",
        "seasonLocalized": "Summer",
        "siteUrl": "https://animethemes.moe/anime/bakemonogatari",
        "slug": "bakemonogatari",
        "title": {
          "english": null,
          "native": null,
          "romaji": "Bakemonogatari"
        },
        "updatedAt": "2021-03-28 00:19:40",
        "year": 2009
      },
      "createdAt": "2021-03-27 00:43:30",
      "group": null,
      "id": 3373,
      "sequence": 1,
      "slug": "OP1",
      "song": {
        "createdAt": "2021-03-27 00:43:30",
        "id": 3373,
        "title": {
          "native": null,
          "romaji": "staple stable"
        },
        "updatedAt": "2021-03-27 00:43:30"
      },
      "type": "OP",
      "typeLocalized": "OP",
      "updatedAt": "2021-03-27 00:43:30"
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List videos

Browse and filter the WebM files by resolution, source (Blu-ray, DVD, web), file size and the encoding flags that describe them: creditless, subbed, uncensored, has lyrics, and how the sequence overlaps the episode. Each video carries a direct streaming link.

**Inputs**

- Minimum resolution (`min_resolution`, number): Only return videos at least this tall in pixels, for example 1080 for 1080p and up. At least 1.
- Maximum resolution (`max_resolution`, number): Only return videos at most this tall in pixels. At least 1.
- Exact resolution (`resolution`, number): Only return videos at exactly this height in pixels. At least 1.
- Source (`source`, text): Only return videos encoded from this source. One of: `WEB` (Web stream), `RAW`, `BD` (Blu-ray), `DVD`, `VHS`, `LD` (LaserDisc).
- Overlap (`overlap`, text): Only return videos with this overlap: how the sequence runs against the episode. One of: `NONE` (None (sequence plays alone)), `TRANS` (Transition (bleeds into the episode)), `OVER` (Overlap (episode plays under it)).
- Creditless (`nc`, true/false): True for creditless versions only, false to exclude them. Leave empty for both.
- Subtitled (`subbed`, true/false): True for versions with burned-in subtitles only, false to exclude them.
- Uncensored (`uncen`, true/false): True for uncensored versions only, false to exclude them.
- Has on-screen lyrics (`lyrics`, true/false): True for versions with on-screen lyrics only, false to exclude them.
- Minimum file size (bytes) (`min_size`, number): Only return videos of at least this many bytes. At least 0.
- Maximum file size (bytes) (`max_size`, number): Only return videos of at most this many bytes. At least 0.
- File name (`basename`, text): Match the file name exactly, for example Bakemonogatari-OP1.webm.
- File name without extension (`filename`, text): Match the file name without its extension, for example Bakemonogatari-OP1.
- Path contains (`path_contains`, text): Match videos whose storage path contains this text, for example 2009/Summer.
- Exact path (`path`, text): Match the storage path exactly.
- MIME type (`mimetype`, text): Match the MIME type exactly, such as video/webm.
- Video ID (`video_id`, number): Match one video by its AnimeThemes id. At least 1.
- Added on or after (`created_after`, date): Only return records AnimeThemes added on or after this date. Pick a date, or reference a date from an earlier step.
- Added on or before (`created_before`, date): Only return records AnimeThemes added on or before this date (the whole day counts).
- Updated on or after (`updated_after`, date): Only return records last edited on or after this date. Useful for a scheduled workflow that picks up what changed.
- Updated on or before (`updated_before`, date): Only return records last edited on or before this date (the whole day counts).
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: Theme versions it belongs to, Theme and song, Anime. One or more of: `audio` (Audio-only track), `script` (Encoding script), `entries` (Theme versions it belongs to), `theme` (Theme and song), `anime`. Default: `["entries", "theme", "anime"]`.
- Sort by (`sort`, text): How to order the results. Leave empty for the API's own order. Cannot be combined with Search. One of: `BASENAME` (File name (A-Z)), `BASENAME_DESC` (File name (Z-A)), `FILENAME` (File name without extension (A-Z)), `FILENAME_DESC` (File name without extension (Z-A)), `RESOLUTION` (Resolution (lowest first)), `RESOLUTION_DESC` (Resolution (highest first)), `SIZE` (File size (smallest first)), `SIZE_DESC` (File size (largest first)), `ID` (ID (lowest first)), `ID_DESC` (ID (highest first)), and 5 more.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `data` (list): The videos on this page.
- `paginatorInfo` (object): Where this page sits in the full result set.

**Example output**

```json
{
  "data": [
    {
      "basename": "Bakemonogatari-OP1.webm",
      "createdAt": "2021-03-27 00:43:30",
      "filename": "Bakemonogatari-OP1",
      "id": 2712,
      "link": "https://v.animethemes.moe/Bakemonogatari-OP1.webm",
      "lyrics": false,
      "mimetype": "video/webm",
      "nc": true,
      "overlap": "NONE",
      "overlapLocalized": "None",
      "path": "2009/Summer/Bakemonogatari-OP1.webm",
      "priority": 1,
      "resolution": 1080,
      "size": 50602649,
      "source": "BD",
      "sourceLocalized": "BD",
      "subbed": false,
      "tags": "NCBD1080",
      "uncen": false,
      "updatedAt": "2021-03-27 00:43:30"
    }
  ],
  "paginatorInfo": {
    "count": 1,
    "currentPage": 1,
    "firstItem": 1,
    "hasMorePages": false,
    "lastItem": 1,
    "lastPage": 1,
    "perPage": 15,
    "total": 1
  }
}
```

### List years and seasons

List every year AnimeThemes holds anime for, broken down by season, and optionally the anime in each one. This is how the site's year browser is built, and it is the quickest way to answer 'what aired in Spring 2024'.

**Inputs**

- Years (`years`, list): Which years to return. Leave empty for every year AnimeThemes covers.
- Season (`season`, text): Return only this season of each year. Leave empty for all four. One of: `WINTER`, `SPRING`, `SUMMER`, `FALL`.
- Anime per season (`anime_per_season`, number): How many anime to include for each season, up to 100. Leave empty (or 0) to return just the years and seasons, which is much faster. From 0 to 100.

**Outputs**

- `count` (number): How many years.
- `years` (list)

**Example output**

```json
{
  "count": 1,
  "years": [
    {
      "season": [
        {
          "season": "WINTER",
          "seasonLocalized": "Winter"
        },
        {
          "season": "SPRING",
          "seasonLocalized": "Spring"
        },
        {
          "season": "SUMMER",
          "seasonLocalized": "Summer"
        },
        {
          "season": "FALL",
          "seasonLocalized": "Fall"
        }
      ],
      "year": 2024
    }
  ]
}
```

### Search AnimeThemes

Search every AnimeThemes collection at once and get the matching anime, themes, artists, songs, series, studios, videos and playlists back in one result. The best starting point when all you have is a title or an artist name: each match carries the slug or id the other actions take.

**Inputs**

- Search term (`query`, text, required): What to search for, such as an anime title, a song name or an artist.
- Search in (`sections`, list): Which collections to search. Leave empty to search all of them. One or more of: `anime`, `animethemes` (Themes (OP/ED)), `artists`, `songs`, `series`, `studios`, `videos`, `playlists`.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `anime` (list)
- `animethemes` (list)
- `artists` (list)
- `playlists` (list)
- `query` (text)
- `series` (list)
- `songs` (list)
- `studios` (list)
- `total` (number): How many matches were returned in total.
- `videos` (list)

**Example output**

```json
{
  "anime": [
    {
      "createdAt": "2021-03-27 00:43:30",
      "format": "TV",
      "formatLocalized": "TV",
      "id": 218,
      "season": "SUMMER",
      "seasonLocalized": "Summer",
      "siteUrl": "https://animethemes.moe/anime/bakemonogatari",
      "slug": "bakemonogatari",
      "title": {
        "english": null,
        "native": null,
        "romaji": "Bakemonogatari"
      },
      "updatedAt": "2021-03-28 00:19:40",
      "year": 2009
    }
  ],
  "animethemes": [
    {
      "anime": {
        "createdAt": "2021-03-27 00:43:30",
        "format": "TV",
        "formatLocalized": "TV",
        "id": 218,
        "season": "SUMMER",
        "seasonLocalized": "Summer",
        "siteUrl": "https://animethemes.moe/anime/bakemonogatari",
        "slug": "bakemonogatari",
        "title": {
          "english": null,
          "native": null,
          "romaji": "Bakemonogatari"
        },
        "updatedAt": "2021-03-28 00:19:40",
        "year": 2009
      },
      "createdAt": "2021-03-27 00:43:30",
      "group": null,
      "id": 3373,
      "sequence": 1,
      "slug": "OP1",
      "song": {
        "createdAt": "2021-03-27 00:43:30",
        "id": 3373,
        "title": {
          "native": null,
          "romaji": "staple stable"
        },
        "updatedAt": "2021-03-27 00:43:30"
      },
      "type": "OP",
      "typeLocalized": "OP",
      "updatedAt": "2021-03-27 00:43:30"
    }
  ],
  "artists": [],
  "playlists": [],
  "query": "bakemonogatari",
  "series": [],
  "songs": [
    {
      "createdAt": "2021-03-27 00:43:30",
      "id": 3373,
      "title": {
        "native": null,
        "romaji": "staple stable"
      },
      "updatedAt": "2021-03-27 00:43:30"
    }
  ],
  "studios": [],
  "total": 4,
  "videos": [
    {
      "basename": "Bakemonogatari-OP1.webm",
      "createdAt": "2021-03-27 00:43:30",
      "filename": "Bakemonogatari-OP1",
      "id": 2712,
      "link": "https://v.animethemes.moe/Bakemonogatari-OP1.webm",
      "lyrics": false,
      "mimetype": "video/webm",
      "nc": true,
      "overlap": "NONE",
      "overlapLocalized": "None",
      "path": "2009/Summer/Bakemonogatari-OP1.webm",
      "priority": 1,
      "resolution": 1080,
      "size": 50602649,
      "source": "BD",
      "sourceLocalized": "BD",
      "subbed": false,
      "tags": "NCBD1080",
      "uncen": false,
      "updatedAt": "2021-03-27 00:43:30"
    }
  ]
}
```

### Shuffle themes

Pick anime themes at random, optionally narrowed to certain types, formats or years. Good for a daily 'theme of the day' post or a random playlist: the videos come back with their streaming links.

**Inputs**

- Theme types (`types`, list): Limit the shuffle to openings, endings or insert songs. Leave empty for all of them. One or more of: `OP` (Opening (OP)), `ED` (Ending (ED)), `IN` (Insert song (IN)).
- Anime formats (`formats`, list): Limit the shuffle to anime of these formats. Leave empty for all of them. One or more of: `TV`, `TV_SHORT` (TV Short), `OVA`, `MOVIE`, `SPECIAL`, `ONA` (ONA (web)).
- From year (`min_year`, number): Only shuffle anime from this year onwards. From 1900 to 2100.
- To year (`max_year`, number): Only shuffle anime up to and including this year. From 1900 to 2100.
- Include spoilers (`spoiler`, true/false): Set to false to leave out versions AnimeThemes flags as spoilers. Leave empty to include everything.
- Include related data (`include`, list): Which related records to fetch alongside each result. Asking for less keeps the result small and the call fast. Defaults to: The anime it belongs to, Song, Performing artists, Version group (TV, BD, English, ...). One or more of: `anime` (The anime it belongs to), `song`, `artists` (Performing artists), `group` (Version group (TV, BD, English, ...)), `entries` (Theme versions), `videos` (Video files and streaming links). Default: `["anime", "song", "artists", "group"]`.
- Results per page (`first`, number): How many results to return, from 1 to 100. Defaults to 15. From 1 to 100. Default: `15`.
- Page number (`page`, number): Which page of results to return (starts at 1). The result's paginatorInfo.hasMorePages tells a workflow when to stop. At least 1. Default: `1`.

**Outputs**

- `anime_themes` (list)
- `count` (number): How many themes.

**Example output**

```json
{
  "anime_themes": [
    {
      "anime": {
        "createdAt": "2021-03-27 00:43:30",
        "format": "TV",
        "formatLocalized": "TV",
        "id": 218,
        "season": "SUMMER",
        "seasonLocalized": "Summer",
        "siteUrl": "https://animethemes.moe/anime/bakemonogatari",
        "slug": "bakemonogatari",
        "title": {
          "english": null,
          "native": null,
          "romaji": "Bakemonogatari"
        },
        "updatedAt": "2021-03-28 00:19:40",
        "year": 2009
      },
      "createdAt": "2021-03-27 00:43:30",
      "group": null,
      "id": 3373,
      "sequence": 1,
      "slug": "OP1",
      "song": {
        "createdAt": "2021-03-27 00:43:30",
        "id": 3373,
        "title": {
          "native": null,
          "romaji": "staple stable"
        },
        "updatedAt": "2021-03-27 00:43:30"
      },
      "type": "OP",
      "typeLocalized": "OP",
      "updatedAt": "2021-03-27 00:43:30"
    }
  ],
  "count": 1
}
```
