{ "info": { "_postman_id": "5f2f7e0b-66a9-4d0f-9f68-2a0e7ac5d4f2", "name": "NNTmux API v2", "description": "Code-aligned collection for NNTmux `/api/v2` endpoints.\n\nSource references:\n- routes/api.php\n- app/Http/Controllers/Api/ApiV2Controller.php\n- app/Transformers/ApiTransformer.php\n- app/Transformers/DetailsTransformer.php\n\nNotes:\n- `capabilities` is public.\n- Other endpoints require `api_token` query param and may also be guarded by `auth:api` middleware depending on server auth setup.\n- `details` returns a single object (`link` field), while search endpoints return an envelope with `Results` (`url` field).", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "variable": [ { "key": "baseUrl", "value": "https://example.com" }, { "key": "apiToken", "value": "replace-with-user-api-token" }, { "key": "guid", "value": "replace-with-release-guid" } ], "item": [ { "name": "Capabilities", "request": { "method": "GET", "header": [], "description": "Public capabilities endpoint with server info, registration flags, supported search params, and category tree.", "url": { "raw": "{{baseUrl}}/api/v2/capabilities", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "capabilities" ] } }, "response": [ { "name": "200 OK - Capabilities", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v2/capabilities", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "capabilities" ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "{\n \"server\": {\n \"title\": \"NNTmux\",\n \"strapline\": \"High speed indexing\",\n \"email\": \"admin@example.com\",\n \"url\": \"https://example.com\"\n },\n \"limits\": {\n \"max\": 100,\n \"default\": 100\n },\n \"searching\": {\n \"search\": {\n \"available\": \"yes\",\n \"supportedParams\": \"id\"\n },\n \"tv-search\": {\n \"available\": \"yes\",\n \"supportedParams\": \"id,vid,tvdbid,traktid,rid,tvmazeid,imdbid,tmdbid,season,ep\"\n },\n \"movie-search\": {\n \"available\": \"yes\",\n \"supportedParams\": \"id, imdbid, tmdbid, traktid\"\n },\n \"audio-search\": {\n \"available\": \"no\",\n \"supportedParams\": \"\"\n }\n },\n \"registration\": {\n \"available\": \"no\",\n \"open\": \"yes\"\n },\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subcategories\": {\n \"2030\": \"SD\",\n \"2040\": \"HD\"\n }\n }\n ]\n}" } ] }, { "name": "Search", "request": { "method": "GET", "header": [], "description": "General search. If `id` is omitted, backend returns browse-style recent releases using provided filters.", "url": { "raw": "{{baseUrl}}/api/v2/search?api_token={{apiToken}}&id=linux&cat=1000,2000&offset=0&limit=100&maxage=30&minsize=0", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "search" ], "query": [ { "key": "api_token", "value": "{{apiToken}}" }, { "key": "id", "value": "linux", "description": "Search text (optional)." }, { "key": "cat", "value": "1000,2000", "description": "Comma-separated categories (optional)." }, { "key": "offset", "value": "0" }, { "key": "limit", "value": "100" }, { "key": "maxage", "value": "30" }, { "key": "minsize", "value": "0" } ] } }, "response": [ { "name": "200 OK - Search Results", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v2/search?api_token={{apiToken}}&id=linux&cat=1000,2000&offset=0&limit=100&maxage=30&minsize=0", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "search" ], "query": [ { "key": "api_token", "value": "{{apiToken}}" }, { "key": "id", "value": "linux" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "{\n \"Total\": 123,\n \"apiCurrent\": 2,\n \"apiMax\": 1000,\n \"grabCurrent\": 1,\n \"grabMax\": 100,\n \"apiOldestTime\": \"Wed, 20 Nov 2024 12:00:00 +0000\",\n \"grabOldestTime\": \"\",\n \"Results\": [\n {\n \"title\": \"Linux.ISO.Collection.2024-11\",\n \"details\": \"https://example.com/details/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n \"url\": \"https://example.com/getnzb?id=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.nzb&r=replace-with-user-api-token\",\n \"category\": 4050,\n \"category_name\": \"PC > 0day\",\n \"added\": \"Wed, 20 Nov 2024 12:00:00 +0000\",\n \"size\": 734003200,\n \"files\": 55,\n \"grabs\": null,\n \"comments\": null,\n \"password\": 0,\n \"usenetdate\": \"Wed, 20 Nov 2024 10:00:00 +0000\"\n }\n ]\n}" }, { "name": "403 Forbidden - Missing or Invalid API Key", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v2/search?id=linux", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "search" ], "query": [ { "key": "id", "value": "linux" } ] } }, "status": "Bad Request", "code": 400, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "{\n \"error\": \"Missing parameter (api_token)\"\n}" } ] }, { "name": "TV Search", "request": { "method": "GET", "header": [], "description": "TV-focused search by external IDs and/or title. Daily episode lookup is supported with `season=YYYY` and `ep=MM/DD`.", "url": { "raw": "{{baseUrl}}/api/v2/tv?api_token={{apiToken}}&id=law and order&season=7&ep=12&tvdbid=153021", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "tv" ], "query": [ { "key": "api_token", "value": "{{apiToken}}" }, { "key": "id", "value": "law and order", "description": "Title query (optional)." }, { "key": "season", "value": "7" }, { "key": "ep", "value": "12" }, { "key": "tvdbid", "value": "153021", "description": "Optional external IDs: vid, tvdbid, traktid, rid, tvmazeid, imdbid, tmdbid." } ] } }, "response": [ { "name": "200 OK - TV Results", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v2/tv?api_token={{apiToken}}&id=law and order&season=7&ep=12&tvdbid=153021", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "tv" ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "{\n \"Total\": 1,\n \"apiCurrent\": 5,\n \"apiMax\": 1000,\n \"grabCurrent\": 1,\n \"grabMax\": 100,\n \"apiOldestTime\": \"Wed, 20 Nov 2024 12:00:00 +0000\",\n \"grabOldestTime\": \"\",\n \"Results\": [\n {\n \"title\": \"Law.And.Order.S07E12.1080p.WEB-DL\",\n \"details\": \"https://example.com/details/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\n \"url\": \"https://example.com/getnzb?id=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.nzb&r=replace-with-user-api-token\",\n \"category\": 5040,\n \"category_name\": \"TV > HD\",\n \"added\": \"Wed, 20 Nov 2024 12:30:00 +0000\",\n \"size\": 1450971565,\n \"files\": 44,\n \"grabs\": 3,\n \"comments\": 0,\n \"password\": 0,\n \"usenetdate\": \"Wed, 20 Nov 2024 10:30:00 +0000\",\n \"episode_title\": \"Final Answer\",\n \"season\": \"7\",\n \"episode\": \"12\",\n \"tvairdate\": \"2024-11-19\",\n \"tvdbid\": 153021,\n \"traktid\": 1393,\n \"tvrageid\": null,\n \"tvmazeid\": 73,\n \"imdbid\": 1520211,\n \"tmdbid\": 1402\n }\n ]\n}" } ] }, { "name": "Movie Search", "request": { "method": "GET", "header": [], "description": "Movie search by identifiers (`imdbid`, `tmdbid`, `traktid`) and/or title (`id`).", "url": { "raw": "{{baseUrl}}/api/v2/movies?api_token={{apiToken}}&imdbid=1418646&cat=2030,2040", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "movies" ], "query": [ { "key": "api_token", "value": "{{apiToken}}" }, { "key": "imdbid", "value": "1418646" }, { "key": "cat", "value": "2030,2040" } ] } }, "response": [ { "name": "200 OK - Movie Results", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v2/movies?api_token={{apiToken}}&imdbid=1418646&cat=2030,2040", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "movies" ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "{\n \"Total\": 1,\n \"apiCurrent\": 8,\n \"apiMax\": 1000,\n \"grabCurrent\": 1,\n \"grabMax\": 100,\n \"apiOldestTime\": \"Wed, 20 Nov 2024 12:00:00 +0000\",\n \"grabOldestTime\": \"\",\n \"Results\": [\n {\n \"title\": \"Movie.Title.2024.1080p.BluRay.x264\",\n \"details\": \"https://example.com/details/cccccccccccccccccccccccccccccccc\",\n \"url\": \"https://example.com/getnzb?id=cccccccccccccccccccccccccccccccc.nzb&r=replace-with-user-api-token\",\n \"category\": 2040,\n \"category_name\": \"Movies > HD\",\n \"added\": \"Wed, 20 Nov 2024 12:15:00 +0000\",\n \"size\": 2854971565,\n \"files\": 77,\n \"grabs\": 12,\n \"comments\": 2,\n \"password\": 0,\n \"usenetdate\": \"Wed, 20 Nov 2024 09:00:00 +0000\",\n \"imdbid\": 1418646,\n \"tmdbid\": 43418,\n \"traktid\": 29200\n }\n ]\n}" } ] }, { "name": "Details", "request": { "method": "GET", "header": [], "description": "Single release lookup by GUID. Returns one object (not search envelope).", "url": { "raw": "{{baseUrl}}/api/v2/details?api_token={{apiToken}}&id={{guid}}", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "details" ], "query": [ { "key": "api_token", "value": "{{apiToken}}" }, { "key": "id", "value": "{{guid}}" } ] } }, "response": [ { "name": "200 OK - Release Details", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v2/details?api_token={{apiToken}}&id={{guid}}", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "details" ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "{\n \"title\": \"Some.Show.S01E01.720p.WEB-DL\",\n \"details\": \"https://example.com/details/dddddddddddddddddddddddddddddddd\",\n \"link\": \"https://example.com/getnzb?id=dddddddddddddddddddddddddddddddd.nzb&r=replace-with-user-api-token\",\n \"category\": 5030,\n \"category_name\": \"TV > SD\",\n \"added\": \"Wed, 20 Nov 2024 12:00:00 +0000\",\n \"size\": 450971565,\n \"files\": 44,\n \"grabs\": 3,\n \"comments\": 0,\n \"password\": 0,\n \"usenetdate\": \"Wed, 20 Nov 2024 10:00:00 +0000\",\n \"tvairdate\": \"2024-11-19\",\n \"tvdbid\": 12345,\n \"traktid\": 67890,\n \"tvrageid\": null,\n \"tvmazeid\": null,\n \"imdbid\": 1234567,\n \"tmdbid\": 98765\n}" }, { "name": "400 Bad Request - Missing GUID", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v2/details?api_token={{apiToken}}", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "details" ] } }, "status": "Bad Request", "code": 400, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "{\n \"error\": \"Missing parameter (guid is required for single release details)\"\n}" }, { "name": "403 Forbidden - Missing or Invalid API Key", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v2/details?id={{guid}}", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "details" ] } }, "status": "Bad Request", "code": 400, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "{\n \"error\": \"Missing parameter (api_token)\"\n}" } ] }, { "name": "Get NZB", "request": { "method": "GET", "header": [], "description": "Redirects to the NZB download endpoint when GUID exists. Optional `del=1` forwards delete-on-download behavior.", "url": { "raw": "{{baseUrl}}/api/v2/getnzb?api_token={{apiToken}}&id={{guid}}&del=1", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "getnzb" ], "query": [ { "key": "api_token", "value": "{{apiToken}}" }, { "key": "id", "value": "{{guid}}" }, { "key": "del", "value": "1" } ] } }, "response": [ { "name": "302 Found - Redirect to Download", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v2/getnzb?api_token={{apiToken}}&id={{guid}}&del=1", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "getnzb" ] } }, "status": "Found", "code": 302, "_postman_previewlanguage": "text", "header": [ { "key": "Location", "value": "https://example.com/getnzb?r=replace-with-user-api-token&id=replace-with-release-guid&del=1" } ], "cookie": [], "body": "" }, { "name": "404 Not Found - GUID Missing in Database", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v2/getnzb?api_token={{apiToken}}&id=not-a-real-guid", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "getnzb" ] } }, "status": "Not Found", "code": 404, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "{\n \"data\": \"No such item (the guid you provided has no release in our database)\"\n}" }, { "name": "403 Forbidden - Missing or Invalid API Key", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/v2/getnzb?id={{guid}}", "host": [ "{{baseUrl}}" ], "path": [ "api", "v2", "getnzb" ] } }, "status": "Bad Request", "code": 400, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "{\n \"error\": \"Missing parameter (api_token)\"\n}" } ] }, { "name": "Add NZB", "item": [ { "name": "Stage NZB Only", "request": { "method": "POST", "header": [], "body": { "mode": "formdata", "formdata": [ { "key": "api_token", "value": "{{apiToken}}", "type": "text" }, { "key": "nzb", "type": "file", "src": "Release.nzb" } ] }, "description": "Stages one NZB for deferred import. The authenticated user must have posting privileges.", "url": { "raw": "{{baseUrl}}/api/v2/nzbadd", "host": ["{{baseUrl}}"], "path": ["api", "v2", "nzbadd"] } }, "response": [] }, { "name": "Stage Paired NZB and NFO", "request": { "method": "POST", "header": [], "body": { "mode": "formdata", "formdata": [ { "key": "api_token", "value": "{{apiToken}}", "type": "text" }, { "key": "cat", "value": "5040", "type": "text" }, { "key": "nzb", "type": "file", "src": "Release.nzb" }, { "key": "nfo", "type": "file", "src": "scene-info.nfo" } ] }, "description": "Atomically stages an NZB and an optional NFO with any safe basename. Run nntmux:import-nzbs before nntmux:import-nfos. Category is echoed metadata only.", "url": { "raw": "{{baseUrl}}/api/v2/nzbadd", "host": ["{{baseUrl}}"], "path": ["api", "v2", "nzbadd"] } }, "response": [ { "name": "Created", "originalRequest": { "method": "POST", "header": [], "url": { "raw": "{{baseUrl}}/api/v2/nzbadd", "host": ["{{baseUrl}}"], "path": ["api", "v2", "nzbadd"] } }, "status": "Created", "code": 201, "_postman_previewlanguage": "json", "header": [{ "key": "Content-Type", "value": "application/json" }], "cookie": [], "body": "{\n \"success\": true,\n \"status\": \"staged\",\n \"name\": \"Release\",\n \"category\": \"5040\",\n \"files\": {\n \"nzb\": { \"filename\": \"Release.nzb\", \"type\": \"nzb\" },\n \"nfo\": { \"filename\": \"scene-info.nfo\", \"type\": \"nfo\" }\n }\n}" } ] } ] } ] }