Settings
C:\Users\Galex\.aniworld\.env
Downloads
resets after restartDownload Path
Applies to new downloads immediately.
Where a download ends up, the path above and the naming template from your .env put together. Movies do not use the template beyond its file extension.
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.
Output Format
Container for downloaded files. MP4 is the most compatible with players and Plex.
Downloads are sorted into subfolders per language (german-dub/, english-sub/, ...).
English Sub is hidden from the language selector and cannot be downloaded.
When off, a movie is saved straight into the download path instead of a "Title (Year)" folder.
Library
resets after restartShows the Library tab for browsing and deleting downloaded files.
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.
Sites
resets after restartEvery site you switch off loses its tab on the home page, along with the rows it fills there. Nothing you have already downloaded is touched.
Auto-Sync
resets after restartChecks the newest aniworld.to episodes on a schedule 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.
Auto-Sync Schedule
Counted from the last run. Five minutes is the shortest it will take.
One or more times, separated by commas: "22:00" or "8am, 8pm". With no day ticked it runs every day.
Type it out instead
A cron expression ("0 22 * * 1,5"), or plain language ("every monday and friday at 10pm"). Several lines separated by ";" all run.
Language
resets after restartAppearance
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.
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.
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.
| 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/ping | read | Check the key and see its access level |
POST /api/search | read | 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/queue | read | 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/counts | read | How many items sit in each status |
POST /api/download | write | Queue episodes, see the example below |
POST /api/queue/<id>/cancel | write | Cancel a queued or running item |
POST /api/queue/<id>/retry | write | Retry a failed item |
DELETE /api/queue/<id> | write | Remove an item from the queue |
DELETE /api/queue/completed | write | Clear finished items |
GET /api/library/locations | read | Download folders that exist |
GET /api/library/titles | read | Titles in one location |
GET /api/library/title?folder= | read | Files of a single title |
POST /api/library/delete | full | Delete a title, season or episode |
GET /api/autosync/status | full | Last run and its report |
POST /api/autosync/run | full | Start a sync right now |
GET /api/settings | full | 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.
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.
Export settings
Most settings live in memory and go back to their defaults when AniWorld Downloader restarts. This hands you a .env file holding what the instance is running right now, ready to save at the path above so it comes back on its own.
Passwords and tokens are left out on purpose: the Discord bot token, the OIDC client secret and any admin password stay where they are.
IP Check
Check this after connecting or disconnecting a VPN to confirm the outbound IP is what you expect.