{% extends "base.html" %} {% block title %}Settings - AniWorld Downloader{% endblock %} {% block content %}

Settings

Most changes here apply right away but reset when AniWorld Downloader restarts. To keep those, set them in your .env file at {{ env_path }}
Only the sections marked below reset. Everything else is stored on disk and comes back on its own.
{% if auth_enabled %}

User Management

{% if not force_sso %}
{% endif %}
ID User Role Auth
{% endif %}

API Keys

Keys let scripts and other tools use the JSON API without logging in. Send the key as an X-API-Key header. A key is only shown once, right after you create it.

{% if not auth_enabled %}
The web UI is running without login, so the API is already reachable by anyone who can open this page. Keys are still checked when sent, but start the web UI with -wa if you want the API locked down.
{% endif %}
Name Key Access Last used Expires
Endpoints and examples

Every write needs a Content-Type of application/json. Read keys may call anything in the read column, write keys everything up to downloads, full access keys everything.

Endpoint Needs What it does
GET /api/pingread Check the key and see its access level
POST /api/searchread Search a site, body: keyword, site
GET /api/series?url=read Title, poster, description and genres
GET /api/seasons?url=read Seasons of a series
GET /api/episodes?url=read Episodes of a season, with languages
GET /api/providers?url=read Hosters available per language
GET /api/queueread The queue with live progress
GET /api/queue?limit=&offset=&status=&q=&sort=read One page of the queue with totals and counts. Paged rows leave out episodes. status: queued, running, completed, failed, cancelled, active, finished. sort: smart, newest, oldest, title
GET /api/queue/countsread How many items sit in each status
POST /api/downloadwrite Queue episodes, see the example below
POST /api/queue/<id>/cancelwrite Cancel a queued or running item
POST /api/queue/<id>/retrywrite Retry a failed item
DELETE /api/queue/<id>write Remove an item from the queue
DELETE /api/queue/completedwrite Clear finished items
GET /api/library/locationsread Download folders that exist
GET /api/library/titlesread Titles in one location
GET /api/library/title?folder=read Files of a single title
POST /api/library/deletefull Delete a title, season or episode
GET /api/autosync/statusfull Last run and its report
POST /api/autosync/runfull Start a sync right now
GET /api/settingsfull Read the current settings

Read the queue

curl -H "X-API-Key: awd_yourkey" \
  http://localhost:8080/api/queue

Start a download

curl -X POST http://localhost:8080/api/download \
  -H "X-API-Key: awd_yourkey" \
  -H "Content-Type: application/json" \
  -d '{
        "title": "Naruto",
        "series_url": "https://aniworld.to/anime/stream/naruto",
        "language": "German Dub",
        "provider": "VOE",
        "episodes": [
          "https://aniworld.to/anime/stream/naruto/staffel-1/episode-1"
        ]
      }'

The episode URLs come from /api/episodes, and /api/providers tells you which hosters carry the language you want. Add "custom_path_id" to send a download to one of your custom paths.

Custom Paths

Give a folder a name and pick it as the download target from the download dialog.

Name Path Default for sites

Tick the sites a path should be the pre-selected download folder for.

Defaults

resets after restart

Download Path

Applies to new downloads immediately.

Provider Fallback Order

Drag a provider to reorder it. The selected provider is always tried first. If it fails, downloads fall back through this order.

Downloads are sorted into subfolders per language (german-dub/, english-sub/, ...).

English Sub is hidden from the language selector and cannot be downloaded.

Shows the Hanime tab on the home page.

Off by default: the site is geo-blocked and behind Google reCAPTCHA, which we cannot solve for you. Turn it on only if you can reach it yourself.

Off by default: Kinox asks for a captcha on every single download, which you have to solve by hand each time.

Shows the Library tab for browsing and deleting downloaded files.

Checks the newest aniworld.to episodes once a day and downloads what is missing for series you already have. Adds an admin-only Auto-Sync tab.

Queue only the episodes that just came out instead of filling in every episode of the series you are missing. Use this if you leave gaps on purpose.

Interface

resets after restart

Container for downloaded files. MP4 is the most compatible with players and Plex.

When off, a movie is saved straight into the download path instead of a "Title (Year)" folder.

Appearance

Custom CSS applied for everyone on this instance. Write your own rules, or pull in a theme with a single import line. The sign-in screen is never themed.

{# The link sits outside the span, since data-i18n overwrites textContent. #}

Ready made themes live in their own repositories, for example SiroxCW/aniworld-themes.

Broke the layout? Open /settings?nocss=1 to load this page without custom CSS.

An imported theme is fetched by each visitor's browser, so the host it sits on sees their IP and can change the theme at any time. Only import URLs you trust.

Background shader

A GLSL fragment shader painted behind the whole page. Write the body of main() and set fragColor. Available: u_resolution, u_time, and fragColor.

Shaders run on the GPU and cannot reach your files, cookies or network. They are checked in your browser before saving, paused when the tab is hidden, and skipped entirely with /settings?nocss=1.

Discord Request Bot

Let users request movies and series from Discord. Requests are sent to you for approval.

The requester is always DM'd when a download finishes. With an announce channel set, a "now available" message is posted there too.

IP Check

Check this after connecting or disconnecting a VPN to confirm the outbound IP is what you expect.

Current public IP
Hidden
Nothing is requested until you press reveal.
{% endblock %} {% block scripts %} {% endblock %}