Skill: Synology Download Station API
Purpose
Use this skill when you need to integrate with Synology DSM Download Station through its Web API.
Request format
All requests use /webapi/<CGI_PATH> with these core query parameters:
api=<API_NAME>version=<VERSION>method=<METHOD>- additional method-specific params
- session via
_sid=<SID>or cookie
General form:
GET /webapi/<CGI_PATH>?api=<API_NAME>&version=<VERSION>&method=<METHOD>[&<PARAMS>][&_sid=<SID>]
Response format
All responses are JSON objects with:
success:trueorfalsedata: method result on successerror: integer error code on failure
Common error codes
| Code | Meaning |
|---|---|
| 100 | Unknown error |
| 101 | Invalid parameter |
| 102 | Requested API does not exist |
| 103 | Requested method does not exist |
| 104 | Requested version does not support the functionality |
| 105 | Logged-in session does not have permission |
| 106 | Session timeout |
| 107 | Session interrupted by duplicate login |
API discovery
Start with SYNO.API.Info.
- fixed path:
/webapi/query.cgi - query available APIs:
/webapi/query.cgi?api=SYNO.API.Info&version=1&method=query&query=ALL
Electorrent specifically needs:
SYNO.API.AuthSYNO.DownloadStation.Task
Authentication
SYNO.API.Auth
- path is discovered from
SYNO.API.Info(commonlyauth.cgi) - login:
/webapi/auth.cgi?api=SYNO.API.Auth&version=2&method=login&account=<user>&passwd=<pass>&session=DownloadStation&format=cookie
Important params:
accountpasswdsession=DownloadStationformat=cookieorformat=sid- optional
otp_code
Logout:
/webapi/auth.cgi?api=SYNO.API.Auth&version=1&method=logout&session=DownloadStation
Auth-specific error codes:
| Code | Meaning |
|---|---|
| 400 | No such account or incorrect password |
| 401 | Account disabled |
| 402 | Permission denied |
| 403 | 2-step verification code required |
| 404 | Failed to authenticate 2-step verification code |
Download Station API families
| API | Purpose |
|---|---|
SYNO.DownloadStation.Info |
Package info and settings |
SYNO.DownloadStation.Schedule |
Schedule settings |
SYNO.DownloadStation.Task |
List tasks and perform task actions |
SYNO.DownloadStation.Statistic |
Total download/upload stats |
SYNO.DownloadStation.RSS.Site |
RSS site list/refresh |
SYNO.DownloadStation.RSS.Feed |
RSS feed list |
SYNO.DownloadStation.BTSearch |
BT search operations |
SYNO.DownloadStation.Task
list
Request params:
offsetoptional, default0limitoptional, default-1additionaloptional comma-separated expansions:detailtransferfiletrackerpeer
Example:
/webapi/DownloadStation/task.cgi?api=SYNO.DownloadStation.Task&version=1&method=list&additional=detail,file
Returns:
totaloffsettasks[]
Task objects include fields such as:
idtypeusernametitlesizestatusstatus_extra- optional
additional.detail,additional.transfer,additional.file,additional.tracker,additional.peer
getinfo
Params:
id=dbid_001,dbid_002- optional
additional=detail,transfer,file,tracker,peer
Returns tasks[].
create
Used to add downloads.
Params:
urioptional: HTTP / FTP / magnet / ED2K links, or shared-folder file pathsfileoptional: uploaded torrent/NZB payloadusernameoptionalpasswordoptionalunzip_passwordoptionaldestinationoptional shared-folder-relative destination
This is typically a POST for uploads.
delete
Params:
idforce_complete
Returns per-task result objects containing:
iderror(0means success)
pause
Params:
id
Returns per-task result objects with id and error.
resume
Params:
id
Returns per-task result objects with id and error.
edit
Commonly used to change destination.
Params:
iddestination
Returns per-task result objects with id and error.
Task error codes
Useful task-specific codes:
| Code | Meaning |
|---|---|
| 400 | File upload failed |
| 401 | Max number of tasks reached |
| 402 | Destination denied |
| 403 | Destination does not exist |
| 404 | Invalid task id |
| 405 | Invalid task action |
| 406 | No default destination |
| 407 | Set destination failed |
| 408 | File does not exist |
Electorrent usage
Electorrent uses:
SYNO.API.Infoquery for API discoverySYNO.API.AuthloginSYNO.DownloadStation.Task.listSYNO.DownloadStation.Task.createfor URL and file uploadsSYNO.DownloadStation.Task.pauseSYNO.DownloadStation.Task.resumeSYNO.DownloadStation.Task.delete