# Tranga API Calls v2 This document outlines all different HTTP API calls that Tranga accepts. Tranga expects specific HTTP methods for its calls and therefore careful attention must be paid when making them. `apiUri` refers to your `http(s)://TRANGA.FRONTEND.URI/api`. Parameters are included in the HTTP request URI and/or the request body. The request Body is in JSON key-value-pair format, with all values as strings. Tranga responses are always in the JSON format within the Response Body. Parameters in *italics* are optional ### Quick Entry * [Connectors](#connectors-top) * [Manga](#manga-top) * [Jobs](#jobs-top) * [Settings](#settings-top) * [Library Connectors](#library-connectors-top) * [Notification Connectors](#notification-connectors-top) * [Miscellaneous](#miscellaneous-top) ## Connectors [^top](#top) ### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Connector/Types` Returns available Manga Connectors (Scanlation sites)
Returns List of strings with Names.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Connector//GetManga` Returns the Manga from the specified Manga Connector.
Request `ConnectorName` is returned in the response of [GET /v2/Connector/Types](#-v2connectortypes) Use either `title` or `url` Parameter. | Parameter | Value | |-----------|-------------------------------------------------| | title | Search Term | | url | Direct link (URL) to the Manga on the used Site |
Returns List of [Manga](Types.md#Manga) | StatusCode | Meaning | |------------|--------------------------| | 400 | Connector does not exist | | 404 | URL/Connector Mismatch |
## Manga [^top](#top) ### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Mangas` Returns all known Manga.
Returns List of internalIds.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Manga/` Returns the specified Manga.
Request `internalId` is returned in the response of * [GET /v2/Manga](#-v2manga) * [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga) * [GET /v2/Job/*jobId*](#-v2jobjobid)
Returns [Manga](Types.md#manga) | StatusCode | Meaning | |------------|--------------------------------------------| | 404 | Manga with `internalId` could not be found |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Manga/` Returns the list of Mangas requested.
Request | Parameter | Value | |-----------|--------------------------------------| | mangaIds | Comma-Seperated list of `internalId` | `internalId` is returned in the response of * [GET /v2/Manga](#-v2manga) * [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga) * [GET /v2/Job/*jobId*](#-v2jobjobid)
Returns List of [Manga](Types.md#manga) | StatusCode | Meaning | |------------|--------------------------------------------| | 400 | Missing Parameter | | 404 | Manga with `internalId` could not be found |
### ![DELETE](https://img.shields.io/badge/DELETE-f00) `/v2/Manga/` Deletes all associated Jobs for the specified Manga
Request `internalId` is returned in the response of * [GET /v2/Manga](#-v2manga) * [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga) * [GET /v2/Job/*jobId*](#-v2jobjobid)
Returns [Manga](Types.md#manga) | StatusCode | Meaning | |------------|--------------------------------------------| | 200 | Manga was deleted | | 404 | Manga with `internalId` could not be found |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Manga//Cover` Returns the URL for the Cover of the specified Manga.
Request `internalId` is returned in the response of * [GET /v2/Manga](#-v2manga) * [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga) * [GET /v2/Job/*jobId*](#-v2jobjobid)
Returns String with the url. | StatusCode | Meaning | |------------|--------------------------------------------| | 404 | Manga with `internalId` could not be found |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Manga//Chapters` Returns the Chapter-list for the specified Manga.
Request `internalId` is returned in the response of * [GET /v2/Manga](#-v2manga) * [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga) * [GET /v2/Job/*jobId*](#-v2jobjobid) | Parameter | Value | |------------|------------------------| | *language* | Language to search for |
Returns List of [Chapters](Types.md/#chapter) | StatusCode | Meaning | |------------|--------------------------------------------| | 404 | Manga with `internalId` could not be found |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Manga//Chapters/latest` Returns the latest Chapter of the specified Manga.
Request `internalId` is returned in the response of * [GET /v2/Manga](#-v2manga) * [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga) * [GET /v2/Job/*jobId*](#-v2jobjobid)
Returns [Chapter](Types.md/#chapter) | StatusCode | Meaning | |------------|--------------------------------------------| | 404 | Manga with `internalId` could not be found |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Manga//ignoreChaptersBelow`
Request `internalId` is returned in the response of * [GET /v2/Manga](#-v2manga) * [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga) * [GET /v2/Job/*jobId*](#-v2jobjobid) | Parameter | Value | |--------------|----------------------------| | startChapter | Chapter-number to start at |
Returns | StatusCode | Meaning | |------------|--------------------------------------------| | 404 | Manga with `internalId` could not be found | | 500 | Parsing Error |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Manga//moveFolder`
Request `internalId` is returned in the response of * [GET /v2/Manga](#-v2manga) * [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga) * [GET /v2/Job/*jobId*](#-v2jobjobid) | Parameter | Value | |-----------|-------------------------------------| | location | New location (relative to root dir) |
Returns | StatusCode | Meaning | |------------|--------------------------------------------| | 400 | Parameter missing | | 404 | Manga with `internalId` could not be found |
## Jobs [^top](#top) ### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Jobs` Returns all configured Jobs.
Returns List of JobIds.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Jobs/Running` Returns all Running Jobs.
Returns List of JobIds.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Jobs/Waiting` Returns all Waiting Jobs.
Returns List of JobIds.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Jobs/Monitoring` Returns all Monitoring Jobs.
Returns List of JobIds.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Job/Types` Returns the valid Job-Types.
Returns List of strings.
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Job/Create/` Creates a Job.
Request `Type` is returned in the response of [GET /v2/Job/Types](#-v2jobtypes) | Parameter | Value | |----------------|---------------------------------------------------------------------------------------------------| | internalId | Manga ID | | *customFolder* | Custom folder location
Only for MonitorManga, DownloadNewChapters and DownloadChapter | | *startChapter* | Chapter to start downloading at
Only for MonitorManga, DownloadNewChapters | | *interval* | Interval at which the Job is re-run in HH:MM:SS format
Only for MonitorManga, UpdateMetadata | | *language* | Translated language
Only for MonitorManga, DownloadNewChapters and DownloadChapter | `internalId` is returned in the response of * [GET /v2/Manga](#-v2manga) * [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga) * [GET /v2/Job/*jobId*](#-v2jobjobid)
Returns [Job](Types.md#job) | StatusCode | Meaning | |------------|------------------------------------------| | 200 | Job created. | | 404 | Parameter missing or could not be found. | | 409 | Job already exists | | 500 | Error parsing interval |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Job/` Returns the list of Jobs requested.
Request | Parameter | Value | |------------|--------------------------------| | jobIds | Comma-Seperated list of jobIds | `jobId` is returned in the response of * [GET /v2/Jobs](#-v2jobs) * [GET /v2/Jobs/Running](#-v2jobsrunning) * [GET /v2/Jobs/Waiting](#-v2jobswaiting) * [GET /v2/Jobs/Monitoring](#-v2jobsmonitoring)
Returns List of [Jobs](Types.md#job) | StatusCode | Meaning | |------------|-------------------------------------| | 400 | Missing Parameter | | 404 | Job with `jobId` could not be found |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Job/` Returns the specified Job.
Request `jobId` is returned in the response of * [GET /v2/Jobs](#-v2jobs) * [GET /v2/Jobs/Running](#-v2jobsrunning) * [GET /v2/Jobs/Waiting](#-v2jobswaiting) * [GET /v2/Jobs/Monitoring](#-v2jobsmonitoring)
Returns [Job](Types.md#job) | StatusCode | Meaning | |------------|---------------------------------------| | 404 | Manga with `jobId` could not be found |
### ![DELETE](https://img.shields.io/badge/DELETE-f00) `/v2/Job/` Deletes the specified Job and all descendants.
Request `jobId` is returned in the response of * [GET /v2/Jobs](#-v2jobs) * [GET /v2/Jobs/Running](#-v2jobsrunning) * [GET /v2/Jobs/Waiting](#-v2jobswaiting) * [GET /v2/Jobs/Monitoring](#-v2jobsmonitoring)
Returns | StatusCode | Meaning | |------------|---------------------------------------| | 200 | Job deleted | | 404 | Manga with `jobId` could not be found |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Job//Progress` Returns the progress the of the specified Job.
Request `jobId` is returned in the response of * [GET /v2/Jobs](#-v2jobs) * [GET /v2/Jobs/Running](#-v2jobsrunning) * [GET /v2/Jobs/Waiting](#-v2jobswaiting) * [GET /v2/Jobs/Monitoring](#-v2jobsmonitoring)
Returns [ProgressToken](Types.md#progresstoken) | StatusCode | Meaning | |------------|---------------------------------------| | 404 | Manga with `jobId` could not be found |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Job//StartNow` Starts the specified Job.
Request `jobId` is returned in the response of * [GET /v2/Jobs](#-v2jobs) * [GET /v2/Jobs/Running](#-v2jobsrunning) * [GET /v2/Jobs/Waiting](#-v2jobswaiting) * [GET /v2/Jobs/Monitoring](#-v2jobsmonitoring)
Returns | StatusCode | Meaning | |------------|---------------------------------------| | 200 | Job started | | 404 | Manga with `jobId` could not be found |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Job//Cancel` Cancels the specified Job, or dequeues it.
Request `jobId` is returned in the response of * [GET /v2/Jobs](#-v2jobs) * [GET /v2/Jobs/Running](#-v2jobsrunning) * [GET /v2/Jobs/Waiting](#-v2jobswaiting) * [GET /v2/Jobs/Monitoring](#-v2jobsmonitoring)
Returns | StatusCode | Meaning | |------------|---------------------------------------| | 200 | Job cancelled | | 404 | Manga with `jobId` could not be found |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Job//SetInterval` Edits the specified Job.
Request `jobId` is returned in the response of * [GET /v2/Jobs](#-v2jobs) * [GET /v2/Jobs/Running](#-v2jobsrunning) * [GET /v2/Jobs/Waiting](#-v2jobswaiting) * [GET /v2/Jobs/Monitoring](#-v2jobsmonitoring)
Returns | StatusCode | Meaning | |------------|---------------------------------------| | 404 | Manga with `jobId` could not be found |
## Settings [^top](#top) ### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Settings` Returns the `settings.json` file.
Returns [Settings](Types.md#settings)
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Settings/UserAgent` Returns the current User Agent used for Requests.
Returns [UserAgent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent)
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Settings/UserAgent` Sets the User Agent. If left empty, User Agent is reset to default.
Request | Parameter | Value | |-----------|----------------------------------------------------------------------------------------| | value | New [UserAgent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) |
Returns | StatusCode | Meaning | |------------|-------------------| | 202 | UserAgent Reset | | 201 | UserAgent Updated |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Settings/RateLimit/Types` Returns the configurable Rate-Limits.
Returns Key-Value-Pairs of Values and RateLimit-Names.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Settings/RateLimit` Returns the current configuration of Rate-Limits for Requests.
Returns Dictionary of `Rate-Limits` and `Requests per Minute`
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Settings/RateLimit` Sets the Rate-Limits for all Requests. If left empty, resets to default Rate-Limits.
Request For each Rate-Limit set as follows: | Parameter | Value | |--------------------------------------|-----------------------| | [Type](#-v2settingsratelimittypes) | Requests per Minute | `Type` is returned by [GET /v2/Settings/RateLimit/Types](#-v2settingsratelimittypes) and should be supplied as string
Returns | StatusCode | Meaning | |------------|------------------------------------------------| | 500 | Error parsing RequestType or RequestsPerMinute |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Settings/RateLimit/` Returns the current Rate-Limit for the Request-Type.
Request `Type` is returned by [GET /v2/Settings/RateLimit/Types](#-v2settingsratelimittypes)
Returns Integer with Requests per Minute. | StatusCode | Meaning | |------------|-----------------------------------------------| | 404 | Error parsing RequestType |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Settings/RateLimit/` Sets the Rate-Limit for the Request-Type in Requests per Minute.
Request `Type` is returned by [GET /v2/Settings/RateLimit/Types](#-v2settingsratelimittypes) | Parameter | Value | |-----------|---------------------| | value | Requests per Minute |
Returns | StatusCode | Meaning | |------------|--------------------------------| | 404 | Rate-Limit-Name does not exist | | 500 | Parsing Error |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Settings/AprilFoolsMode` Returns the current state of the April-Fools-Mode setting.
Returns Boolean
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Settings/AprilFoolsMode` Enables/Disables April-Fools-Mode.
Request | Parameter | Value | |-----------|------------| | value | true/false |
Returns | StatusCode | Meaning | |------------|--------------------------------| | 500 | Parsing Error |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Settings/DownloadLocation` Updates the default Download-Location.
Request | Parameter | Value | |-------------|------------------| | location | New Folder-Path | | *moveFiles* | __*true*__/false |
Returns | StatusCode | Meaning | |------------|---------------------------------| | 200 | Successfully changed | | 404 | Parameter 'location' is missing | | 500 | Parsing Error |
## Library Connectors [^top](#top) ### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/LibraryConnector` Returns the configured Library-Connectors.
Returns List of [LibraryConnectors](Types.md#libraryconnector)
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/LibraryConnector/Types` Returns the available Library-Connector types.
Returns List of String of Names.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/LibraryConnector/` Returns the Library-Connector for the specified Type.
Request `Type` is returned by [GET /v2/LibraryConnector/Types](#-v2libraryconnectortypes)
Returns [LibraryConnector](Types.md#libraryconnector) | StatusCode | Meaning | |------------|----------------------------------------------------| | 404 | Library Connector of specified Type does not exist |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/LibraryConnector/` Creates a Library-Connector of the specified Type.
Request `Type` is returned by [GET /v2/LibraryConnector/Types](#-v2libraryconnectortypes) | Parameter | Value | |-------------|--------------------| | URL | URL of the Library | #### Type specific Parameters (must be included for each) * Komga | Parameter | Value | |-----------|-------------------------------------------------------------------------------------------------------------------| | auth | [Base64 encoded Basic-Authentication-String](https://datatracker.ietf.org/doc/html/rfc7617) (`username:password`) | * Kavita | Parameter | Value | |-----------|-----------------| | username | Kavita Username | | password | Kavita Password |
Returns [LibraryConnector](Types.md#libraryconnector) | StatusCode | Meaning | |------------|----------------------------------| | 404 | Library Connector does not exist | | 406 | Missing Parameter | | 500 | Parsing Error |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/LibraryConnector//Test` Tests a Library-Connector of the specified Type.
Request `Type` is returned by [GET /v2/LibraryConnector/Types](#-v2libraryconnectortypes) | Parameter | Value | |-------------|--------------------| | URL | URL of the Library | #### Type specific Parameters (must be included for each) * Komga | Parameter | Value | |-----------|-------------------------------------------------------------------------------------------------------------------| | auth | [Base64 encoded Basic-Authentication-String](https://datatracker.ietf.org/doc/html/rfc7617) (`username:password`) | * Kavita | Parameter | Value | |-----------|-----------------| | username | Kavita Username | | password | Kavita Password |
Returns | StatusCode | Meaning | |------------|------------------------------------| | 200 | Test successful | | 404 | Library Connector does not exist | | 406 | Missing Parameter | | 424 | Test failed | | 500 | Parsing Error |
### ![DELETE](https://img.shields.io/badge/DELETE-f00) `/v2/LibraryConnector/` Deletes the Library-Connector of the specified Type.
Request `Type` is returned by [GET /v2/LibraryConnector/Types](#-v2libraryconnectortypes)
Returns | StatusCode | Meaning | |------------|---------------------------------------| | 200 | Deleted | | 404 | Library Connector Type does not exist |
## Notification Connectors [^top](#top) ### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/NotificationConnector` Returns the configured Notification-Connectors.
Returns List of [NotificationConnectors](Types.md#notificationconnector)
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/NotificationConnector/Types` Returns the available Notification-Connectors.
Returns List of String of Names.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/NotificationConnector/` Returns the configured Notification-Connector of the specified Type.
Request `Type` is returned by [GET /v2/NotificationConnector/Types](#-v2notificationconnectortypes)
Returns [Notification Connector](Types.md#notificationconnector) | StatusCode | Meaning | |------------|---------------------------------------| | 404 | Library Connector Type does not exist | | 500 | Parsing Error |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/NotificationConnector/` Creates a Notification-Connector of the specified Type.
Request `Type` is returned by [GET /v2/NotificationConnector/Types](-v2notificationconnectortypes) #### Type specific Parameters (must be included for each) * Gotify | Parameter | Value | |-----------|---------------------------------------| | url | URL of the Gotify Instance | | appToken | AppToken of the configured Gotify App | * LunaSea | Parameter | Value | |-----------|-----------------| | webhook | LunaSea Webhook | * Nty | Parameter | Value | |-----------|--------------------------| | url | URL of the Ntfy Instance | | auth | Auth-String |
Returns [NotificationConnector](Types.md#notificationconnector) | StatusCode | Meaning | |------------|--------------------------------------------| | 404 | Notification Connector Type does not exist | | 406 | Missing Parameter | | 500 | Parsing Error |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/NotificationConnector//Test` Tests a Notification-Connector of the specified Type.
Request `Type` is returned by [GET /v2/NotificationConnector/Types](#-v2notificationconnectortypes) #### Type specific Parameters (must be included for each) * Gotify | Parameter | Value | |-----------|---------------------------------------| | url | URL of the Gotify Instance | | appToken | AppToken of the configured Gotify App | * LunaSea | Parameter | Value | |-----------|-----------------| | webhook | LunaSea Webhook | * Ntfy | Parameter | Value | |-----------|--------------------------| | url | URL of the Ntfy Instance | | auth | Auth-String |
Returns | StatusCode | Meaning | |------------|--------------------------------------------| | 200 | Test successful | | 404 | Notification Connector Type does not exist | | 406 | Missing Parameter | | 500 | Parsing Error |
### ![DELETE](https://img.shields.io/badge/DELETE-f00) `/v2/NotificationConnector/` Deletes the Notification-Connector of the specified Type.
Request `Type` is returned by [GET /v2/NotificationConnector/Types](#-v2notificationconnectortypes)
Returns | StatusCode | Meaning | |------------|--------------------------------------------| | 200 | Deleted | | 404 | Notification Connector Type does not exist |
## Miscellaneous [^top](#top) ### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/LogFile` Returns the current log-file.
Returns The Logfile as Stream. | StatusCode | Meaning | |------------|------------| | 404 | No Logfile |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Ping` Pong! ### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Ping` Pong!