Introduction
The greatest resource available for Single Player Tarkov modifications. Where modding legends are made. Discover powerful tools, expert-written guides, and exclusive mods. Craft your vision. Transform the game.
The Forge API is open and read-only. Every endpoint is publicly accessible and requires no authentication or API key.
As you scroll, you will see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile). You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).
Rate Limits
The Forge API is rate limited at Cloudflare's edge, applied per client IP across all /api/v0/ endpoints. There are two windows:
| Window | Limit | Block duration |
|---|---|---|
| Burst | 40 requests / 10 seconds | 30 seconds |
| Sustained | 200 requests / 60 seconds | 60 seconds |
When either limit is exceeded, the API responds with HTTP 429 Too Many Requests. The response carries a Retry-After header (the number of seconds to wait before retrying) and this example JSON body.
{
"success": false,
"code": "RATE_LIMITED",
"message": "Too many requests. Retry after the number of seconds in the Retry-After header."
}
Honour the Retry-After header and back-off before retrying. Program against the 429 status and the Retry-After header rather than the specific numbers above, which may be tuned over time for any reason.
Attempting to sidestep or evade these limits will be seen as an act of hostility. If you require a higher rate limit then what is provided above please contact us on Discord to discuss specifics.
General
APIs for general application status and information.
Check API Health
Returns a simple 'pong' message to indicate that the API endpoint is available and responding correctly. This endpoint is typically used for health checks or basic connectivity tests.
It does not require authentication.
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/ping" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/ping"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/ping';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/ping'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Successful Ping):
{
"success": true,
"data": {
"message": "pong"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Mods
Endpoints for managing and retrieving mods.
Get Mods
Retrieves a paginated list of mods, allowing filtering, sorting, and relationship inclusion.
Fields available:hub_id, guid, name, slug, teaser, thumbnail, downloads, favourites_count,
detail_url, fika_compatibility, featured, contains_ai_content, contains_ads, shows_profile_binding_notice,
category_id, published_at, created_at, updated_at
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/mods?fields=name%2Cslug%2Cfeatured%2Ccreated_at&filter%5Bid%5D=1%2C5%2C10&filter%5Bhub_id%5D=123%2C456&filter%5Bguid%5D=com.example.mymod1%2Ccom.example.mymod2&filter%5Bname%5D=Raid+Time&filter%5Bslug%5D=some-mod&filter%5Bteaser%5D=important&filter%5Bfeatured%5D=true&filter%5Bcontains_ads%5D=false&filter%5Bcontains_ai_content%5D=false&filter%5Bcategory_id%5D=1%2C2%2C3&filter%5Bcategory_slug%5D=weapons%2Cgear&filter%5Bcreated_between%5D=2025-01-01%2C2025-03-31&filter%5Bupdated_between%5D=2025-01-01%2C2025-03-31&filter%5Bpublished_between%5D=2025-01-01%2C2025-03-31&filter%5Bspt_version%5D=%5E3.8.0&filter%5Bfika_compatibility%5D=true&filter%5Binclude_legacy%5D=true&query=raid+time&include=versions%2Ccategory&sort=featured%2C-name&page=2&per_page=25" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/mods"
);
const params = {
"fields": "name,slug,featured,created_at",
"filter[id]": "1,5,10",
"filter[hub_id]": "123,456",
"filter[guid]": "com.example.mymod1,com.example.mymod2",
"filter[name]": "Raid Time",
"filter[slug]": "some-mod",
"filter[teaser]": "important",
"filter[featured]": "true",
"filter[contains_ads]": "false",
"filter[contains_ai_content]": "false",
"filter[category_id]": "1,2,3",
"filter[category_slug]": "weapons,gear",
"filter[created_between]": "2025-01-01,2025-03-31",
"filter[updated_between]": "2025-01-01,2025-03-31",
"filter[published_between]": "2025-01-01,2025-03-31",
"filter[spt_version]": "^3.8.0",
"filter[fika_compatibility]": "true",
"filter[include_legacy]": "true",
"query": "raid time",
"include": "versions,category",
"sort": "featured,-name",
"page": "2",
"per_page": "25",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/mods';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'fields' => 'name,slug,featured,created_at',
'filter[id]' => '1,5,10',
'filter[hub_id]' => '123,456',
'filter[guid]' => 'com.example.mymod1,com.example.mymod2',
'filter[name]' => 'Raid Time',
'filter[slug]' => 'some-mod',
'filter[teaser]' => 'important',
'filter[featured]' => 'true',
'filter[contains_ads]' => 'false',
'filter[contains_ai_content]' => 'false',
'filter[category_id]' => '1,2,3',
'filter[category_slug]' => 'weapons,gear',
'filter[created_between]' => '2025-01-01,2025-03-31',
'filter[updated_between]' => '2025-01-01,2025-03-31',
'filter[published_between]' => '2025-01-01,2025-03-31',
'filter[spt_version]' => '^3.8.0',
'filter[fika_compatibility]' => 'true',
'filter[include_legacy]' => 'true',
'query' => 'raid time',
'include' => 'versions,category',
'sort' => 'featured,-name',
'page' => '2',
'per_page' => '25',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/mods'
params = {
'fields': 'name,slug,featured,created_at',
'filter[id]': '1,5,10',
'filter[hub_id]': '123,456',
'filter[guid]': 'com.example.mymod1,com.example.mymod2',
'filter[name]': 'Raid Time',
'filter[slug]': 'some-mod',
'filter[teaser]': 'important',
'filter[featured]': 'true',
'filter[contains_ads]': 'false',
'filter[contains_ai_content]': 'false',
'filter[category_id]': '1,2,3',
'filter[category_slug]': 'weapons,gear',
'filter[created_between]': '2025-01-01,2025-03-31',
'filter[updated_between]': '2025-01-01,2025-03-31',
'filter[published_between]': '2025-01-01,2025-03-31',
'filter[spt_version]': '^3.8.0',
'filter[fika_compatibility]': 'true',
'filter[include_legacy]': 'true',
'query': 'raid time',
'include': 'versions,category',
'sort': 'featured,-name',
'page': '2',
'per_page': '25',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Success (All fields)):
{
"success": true,
"data": [
{
"id": 1,
"hub_id": null,
"guid": "com.oconnell.recusandae-velit-incidunt",
"name": "Recusandae velit incidunt.",
"slug": "recusandae-velit-incidunt",
"teaser": "Minus est minima quibusdam necessitatibus inventore iste.",
"thumbnail": "",
"downloads": 55212644,
"favourites_count": 1245,
"owner": {
"id": 1,
"name": "ModAuthor",
"profile_photo_url": "https://example.com/profile.jpg",
"cover_photo_url": "https://example.com/cover.jpg"
},
"additional_authors": [],
"source_code_links": [
{
"url": "http://oconnell.com/earum-sed-fugit-corrupti",
"label": null
}
],
"detail_url": "https://forge.sp-tarkov.com/mods/1/recusandae-velit-incidunt",
"fika_compatibility": true,
"featured": true,
"contains_ads": true,
"contains_ai_content": false,
"shows_profile_binding_notice": false,
"published_at": "2025-01-09T17:48:53.000000Z",
"created_at": "2024-12-11T14:48:53.000000Z",
"updated_at": "2025-04-10T13:50:00.000000Z"
},
{
"id": 2,
"hub_id": null,
"guid": "com.baumbach.adipisci-iusto-voluptas-nihil",
"name": "Adipisci iusto voluptas nihil.",
"slug": "adipisci-iusto-voluptas-nihil",
"teaser": "Minima adipisci perspiciatis nemo maiores rem porro natus.",
"thumbnail": "",
"downloads": 219598104,
"favourites_count": 873,
"owner": {
"id": 2,
"name": "AnotherAuthor",
"profile_photo_url": "https://example.com/profile2.jpg",
"cover_photo_url": "https://example.com/cover2.jpg"
},
"additional_authors": [],
"source_code_links": [
{
"url": "http://baumbach.net/",
"label": null
}
],
"detail_url": "https://forge.sp-tarkov.com/mods/2/adipisci-iusto-voluptas-nihil",
"fika_compatibility": false,
"featured": false,
"contains_ads": true,
"contains_ai_content": true,
"shows_profile_binding_notice": false,
"published_at": "2024-08-30T14:48:53.000000Z",
"created_at": "2024-06-22T04:48:53.000000Z",
"updated_at": "2025-04-10T13:50:21.000000Z"
}
],
"links": {
"first": "https://forge.sp-tarkov.com/api/v0/mods?page=1",
"last": "https://forge.sp-tarkov.com/api/v0/mods?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://forge.sp-tarkov.com/api/v0/mods?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://forge.sp-tarkov.com/api/v0/mods",
"per_page": 12,
"to": 2,
"total": 2
}
}
Example response (200, Success (Include Category)):
{
"success": true,
"data": [
{
"id": 1,
"hub_id": null,
"guid": "com.oconnell.recusandae-velit-incidunt",
"name": "Recusandae velit incidunt.",
"slug": "recusandae-velit-incidunt",
"teaser": "Minus est minima quibusdam necessitatibus inventore iste.",
"thumbnail": "",
"downloads": 55212644,
"favourites_count": 1245,
"owner": {
"id": 1,
"name": "ModAuthor",
"profile_photo_url": "https://example.com/profile.jpg",
"cover_photo_url": "https://example.com/cover.jpg"
},
"additional_authors": [],
"source_code_links": [
{
"url": "http://oconnell.com/earum-sed-fugit-corrupti",
"label": null
}
],
"category": {
"id": 1,
"name": "Gameplay",
"slug": "gameplay",
"color_class": "blue"
},
"detail_url": "https://forge.sp-tarkov.com/mods/1/recusandae-velit-incidunt",
"fika_compatibility": true,
"featured": true,
"contains_ads": true,
"contains_ai_content": false,
"shows_profile_binding_notice": false,
"published_at": "2025-01-09T17:48:53.000000Z",
"created_at": "2024-12-11T14:48:53.000000Z",
"updated_at": "2025-04-10T13:50:00.000000Z"
}
],
"links": {
"first": "https://forge.sp-tarkov.com/api/v0/mods?include=category&page=1",
"last": "https://forge.sp-tarkov.com/api/v0/mods?include=category&page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://forge.sp-tarkov.com/api/v0/mods?include=category&page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://forge.sp-tarkov.com/api/v0/mods",
"per_page": 12,
"to": 1,
"total": 1
}
}
Example response (200, Success (Include Versions and License)):
{
"success": true,
"data": [
{
"id": 1,
"hub_id": null,
"guid": "com.oconnell.recusandae-velit-incidunt",
"name": "Recusandae velit incidunt.",
"slug": "recusandae-velit-incidunt",
"teaser": "Minus est minima quibusdam necessitatibus inventore iste.",
"thumbnail": "",
"downloads": 55212644,
"favourites_count": 1245,
"owner": {
"id": 1,
"name": "ModAuthor",
"profile_photo_url": "https://example.com/profile.jpg",
"cover_photo_url": "https://example.com/cover.jpg"
},
"additional_authors": [],
"source_code_links": [
{
"url": "http://oconnell.com/earum-sed-fugit-corrupti",
"label": null
}
],
"detail_url": "https://forge.sp-tarkov.com/mods/1/recusandae-velit-incidunt",
"fika_compatibility": true,
"featured": true,
"contains_ads": true,
"contains_ai_content": false,
"shows_profile_binding_notice": false,
"versions": [
{
"id": 1,
"version": "1.2.3",
"spt_version_constraint": "^3.8.0",
"downloads": 1523,
"published_at": "2025-01-09T17:48:53.000000Z"
},
{
"id": 2,
"version": "1.2.2",
"spt_version_constraint": "^3.8.0",
"downloads": 892,
"published_at": "2025-01-05T12:30:00.000000Z"
}
],
"license": {
"id": 1,
"name": "MIT",
"short_name": "MIT"
},
"published_at": "2025-01-09T17:48:53.000000Z",
"created_at": "2024-12-11T14:48:53.000000Z",
"updated_at": "2025-04-10T13:50:00.000000Z"
}
],
"links": {
"first": "https://forge.sp-tarkov.com/api/v0/mods?include=versions,license&page=1",
"last": "https://forge.sp-tarkov.com/api/v0/mods?include=versions,license&page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://forge.sp-tarkov.com/api/v0/mods?include=versions,license&page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://forge.sp-tarkov.com/api/v0/mods",
"per_page": 12,
"to": 1,
"total": 1
}
}
Example response (401, Unauthenticated):
{
"success": false,
"code": "UNAUTHENTICATED",
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Mod Details
Retrieves details for a single mod, allowing relationship inclusion.
Fields available:hub_id, guid, name, slug, teaser, description, thumbnail, downloads,
favourites_count, detail_url, fika_compatibility, featured, contains_ai_content, custom_ai_disclosure,
contains_ads, shows_profile_binding_notice, published_at, created_at, updated_at
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/mod/0?fields=name%2Cslug%2Cfeatured%2Ccreated_at&include=versions%2Clicense" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/mod/0"
);
const params = {
"fields": "name,slug,featured,created_at",
"include": "versions,license",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/mod/0';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'fields' => 'name,slug,featured,created_at',
'include' => 'versions,license',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/mod/0'
params = {
'fields': 'name,slug,featured,created_at',
'include': 'versions,license',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Success (All fields, No Includes)):
{
"success": true,
"data": {
"id": 2,
"hub_id": null,
"guid": "com.baumbach.adipisci-iusto-voluptas-nihil",
"name": "Adipisci iusto voluptas nihil.",
"slug": "adipisci-iusto-voluptas-nihil",
"teaser": "Minima adipisci perspiciatis nemo maiores rem porro natus.",
"thumbnail": "",
"downloads": 219598104,
"favourites_count": 873,
"description": "Adipisci rerum minima maiores sed. Neque totam quia libero exercitationem ullam.",
"owner": {
"id": 1,
"name": "ModOwner",
"profile_photo_url": "https://example.com/owner.jpg",
"cover_photo_url": "https://example.com/owner-cover.jpg"
},
"additional_authors": [],
"source_code_links": [
{
"url": "http://baumbach.net/",
"label": null
}
],
"detail_url": "https://forge.sp-tarkov.com/mods/2/adipisci-iusto-voluptas-nihil",
"fika_compatibility": true,
"featured": false,
"contains_ads": true,
"contains_ai_content": true,
"custom_ai_disclosure": "<p>AI tools were used to generate placeholder item icons and textures.</p>",
"shows_profile_binding_notice": false,
"published_at": "2024-08-30T14:48:53.000000Z",
"created_at": "2024-06-22T04:48:53.000000Z",
"updated_at": "2025-04-10T13:50:21.000000Z"
}
}
Example response (200, Success (Include License)):
{
"success": true,
"data": {
"id": 2,
"hub_id": null,
"guid": "com.baumbach.adipisci-iusto-voluptas-nihil",
"name": "Adipisci iusto voluptas nihil.",
"slug": "adipisci-iusto-voluptas-nihil",
"teaser": "Minima adipisci perspiciatis nemo maiores rem porro natus.",
"thumbnail": "",
"downloads": 219598104,
"favourites_count": 873,
"description": "Adipisci rerum minima maiores sed. Neque totam quia libero exercitationem ullam.",
"owner": {
"id": 1,
"name": "ModOwner",
"profile_photo_url": "https://example.com/owner.jpg",
"cover_photo_url": "https://example.com/owner-cover.jpg"
},
"additional_authors": [
{
"id": 5,
"name": "ContributorOne",
"profile_photo_url": "https://example.com/contributor1.jpg",
"cover_photo_url": "https://example.com/cover1.jpg"
},
{
"id": 8,
"name": "ContributorTwo",
"profile_photo_url": "https://example.com/contributor2.jpg",
"cover_photo_url": "https://example.com/cover2.jpg"
}
],
"source_code_links": [
{
"url": "http://baumbach.net/",
"label": null
}
],
"detail_url": "https://forge.sp-tarkov.com/mods/2/adipisci-iusto-voluptas-nihil",
"fika_compatibility": true,
"featured": false,
"contains_ads": true,
"contains_ai_content": true,
"custom_ai_disclosure": "<p>AI tools were used to generate placeholder item icons and textures.</p>",
"shows_profile_binding_notice": false,
"license": {
"id": 2,
"name": "GNU General Public License v3.0",
"short_name": "GPL-3.0"
},
"published_at": "2024-08-30T14:48:53.000000Z",
"created_at": "2024-06-22T04:48:53.000000Z",
"updated_at": "2025-04-10T13:50:21.000000Z"
}
}
Example response (200, Success (Include Versions, License, and Category)):
{
"success": true,
"data": {
"id": 2,
"hub_id": null,
"guid": "com.baumbach.adipisci-iusto-voluptas-nihil",
"name": "Adipisci iusto voluptas nihil.",
"slug": "adipisci-iusto-voluptas-nihil",
"teaser": "Minima adipisci perspiciatis nemo maiores rem porro natus.",
"thumbnail": "",
"downloads": 219598104,
"favourites_count": 873,
"description": "Adipisci rerum minima maiores sed. Neque totam quia libero exercitationem ullam.",
"source_code_links": [
{
"url": "http://baumbach.net/",
"label": null
}
],
"detail_url": "https://forge.sp-tarkov.com/mods/2/adipisci-iusto-voluptas-nihil",
"fika_compatibility": true,
"featured": false,
"contains_ads": true,
"contains_ai_content": true,
"custom_ai_disclosure": "<p>AI tools were used to generate placeholder item icons and textures.</p>",
"shows_profile_binding_notice": false,
"owner": {
"id": 1,
"name": "ModOwner",
"profile_photo_url": "https://example.com/owner.jpg",
"cover_photo_url": "https://example.com/owner-cover.jpg"
},
"additional_authors": [
{
"id": 5,
"name": "ContributorOne",
"profile_photo_url": "https://example.com/contributor1.jpg",
"cover_photo_url": "https://example.com/cover1.jpg"
}
],
"versions": [
{
"id": 45,
"version": "2.1.0",
"spt_version_constraint": "^3.9.0",
"downloads": 5234,
"published_at": "2025-02-15T10:30:00.000000Z"
},
{
"id": 44,
"version": "2.0.5",
"spt_version_constraint": "^3.8.0",
"downloads": 12456,
"published_at": "2025-01-20T08:15:00.000000Z"
}
],
"license": {
"id": 2,
"name": "GNU General Public License v3.0",
"short_name": "GPL-3.0"
},
"category": {
"id": 3,
"name": "Quality of Life",
"slug": "quality-of-life",
"color_class": "purple"
},
"published_at": "2024-08-30T14:48:53.000000Z",
"created_at": "2024-06-22T04:48:53.000000Z",
"updated_at": "2025-04-10T13:50:21.000000Z"
}
}
Example response (404, Mod Does Not Exist):
{
"success": false,
"code": "NOT_FOUND",
"message": "Resource not found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Mod Versions
Retrieves a paginated list of mod versions, allowing filtering, sorting, and relationship inclusion.
Fields available:hub_id, version, description, link, content_length, spt_version_constraint,
downloads, fika_compatibility, published_at, created_at, updated_at
The content_length field contains the file size in bytes as determined by the Content-Length header
from the download link. This field may be null for versions created before file size validation was implemented.
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/mod/0/versions?fields=id%2Cversion%2Clink%2Ccreated_at&filter%5Bid%5D=234%2C432&filter%5Bhub_id%5D=234%2C432&filter%5Bversion%5D=%5E1.0.0&filter%5Bdescription%5D=This+is+a+description&filter%5Bpublished_between%5D=2025-01-01%2C2025-03-31&filter%5Bcreated_between%5D=2025-01-01%2C2025-03-31&filter%5Bupdated_between%5D=2025-01-01%2C2025-03-31&filter%5Bspt_version%5D=%5E3.8.0&filter%5Bfika_compatibility%5D=compatible&include=dependencies%2Cvirus_total_links&sort=-version%2C-created_at&page=2&per_page=25" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/mod/0/versions"
);
const params = {
"fields": "id,version,link,created_at",
"filter[id]": "234,432",
"filter[hub_id]": "234,432",
"filter[version]": "^1.0.0",
"filter[description]": "This is a description",
"filter[published_between]": "2025-01-01,2025-03-31",
"filter[created_between]": "2025-01-01,2025-03-31",
"filter[updated_between]": "2025-01-01,2025-03-31",
"filter[spt_version]": "^3.8.0",
"filter[fika_compatibility]": "compatible",
"include": "dependencies,virus_total_links",
"sort": "-version,-created_at",
"page": "2",
"per_page": "25",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/mod/0/versions';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'fields' => 'id,version,link,created_at',
'filter[id]' => '234,432',
'filter[hub_id]' => '234,432',
'filter[version]' => '^1.0.0',
'filter[description]' => 'This is a description',
'filter[published_between]' => '2025-01-01,2025-03-31',
'filter[created_between]' => '2025-01-01,2025-03-31',
'filter[updated_between]' => '2025-01-01,2025-03-31',
'filter[spt_version]' => '^3.8.0',
'filter[fika_compatibility]' => 'compatible',
'include' => 'dependencies,virus_total_links',
'sort' => '-version,-created_at',
'page' => '2',
'per_page' => '25',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/mod/0/versions'
params = {
'fields': 'id,version,link,created_at',
'filter[id]': '234,432',
'filter[hub_id]': '234,432',
'filter[version]': '^1.0.0',
'filter[description]': 'This is a description',
'filter[published_between]': '2025-01-01,2025-03-31',
'filter[created_between]': '2025-01-01,2025-03-31',
'filter[updated_between]': '2025-01-01,2025-03-31',
'filter[spt_version]': '^3.8.0',
'filter[fika_compatibility]': 'compatible',
'include': 'dependencies,virus_total_links',
'sort': '-version,-created_at',
'page': '2',
'per_page': '25',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Success (All fields, No Includes)):
{
"success": true,
"data": [
{
"id": 938,
"hub_id": null,
"version": "0.2.9",
"description": "Magni eius ad temporibus similique accusamus assumenda aliquid. Quisquam placeat in necessitatibus ducimus quasi odit. Autem nulla ea minus itaque.",
"link": "https://forge.sp-tarkov.com/mod/download/1/example-mod/0.2.9",
"content_length": 52428800,
"spt_version_constraint": "^1.0.0",
"downloads": 8,
"fika_compatibility": "unknown",
"published_at": "2024-05-09T10:49:41.000000Z",
"created_at": "2024-12-19T04:49:41.000000Z",
"updated_at": "2025-02-18T11:49:41.000000Z"
},
{
"id": 660,
"hub_id": null,
"version": "8.2.8",
"description": "Mollitia voluptatem quia et ex aut. Qui libero tempore ut. Suscipit a eius recusandae aut pariatur soluta necessitatibus.",
"link": "https://forge.sp-tarkov.com/mod/download/1/example-mod/8.2.8",
"spt_version_constraint": "<4.0.0",
"downloads": 3332503,
"fika_compatibility": "compatible",
"published_at": "2024-07-03T05:49:25.000000Z",
"created_at": "2024-10-06T23:49:25.000000Z",
"updated_at": "2024-10-15T03:49:25.000000Z"
},
{
"id": 2,
"hub_id": null,
"version": "6.5.2",
"description": "Consequatur modi et labore ea neque id. Natus sapiente amet rerum quia in molestiae autem. Eligendi molestiae blanditiis voluptatem earum.",
"link": "https://forge.sp-tarkov.com/mod/download/1/example-mod/6.5.2",
"spt_version_constraint": "<4.0.0",
"downloads": 40217550,
"fika_compatibility": "incompatible",
"published_at": "2024-12-23T14:48:58.000000Z",
"created_at": "2024-09-26T13:48:58.000000Z",
"updated_at": "2025-03-21T01:48:58.000000Z"
},
{
"id": 363,
"hub_id": null,
"version": "5.9.5",
"description": "Aut ut inventore aut ex tempora a aspernatur asperiores. A laborum ullam ex rerum illo dolorem cupiditate. Veritatis id dolor qui quam et.",
"link": "https://forge.sp-tarkov.com/mod/download/1/example-mod/5.9.5",
"spt_version_constraint": "^1.0.0",
"downloads": 11236658,
"fika_compatibility": "unknown",
"published_at": "2025-03-18T23:49:12.000000Z",
"created_at": "2024-09-04T16:49:12.000000Z",
"updated_at": "2024-05-26T13:49:12.000000Z"
},
{
"id": 1217,
"hub_id": null,
"version": "2.6.8",
"description": "Aut in rerum est labore omnis. Voluptatem est velit doloribus expedita et. Illo error ut aspernatur quia quo repellat tenetur.",
"link": "https://forge.sp-tarkov.com/mod/download/1/example-mod/2.6.8",
"spt_version_constraint": ">=3.0.0",
"downloads": 425925,
"fika_compatibility": "compatible",
"published_at": "2025-03-20T13:50:00.000000Z",
"created_at": "2025-02-12T01:50:00.000000Z",
"updated_at": "2025-03-17T07:50:00.000000Z"
}
],
"links": {
"first": "https://forge.sp-tarkov.com/api/v0/mod/1/versions?page=1",
"last": "https://forge.sp-tarkov.com/api/v0/mod/1/versions?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://forge.sp-tarkov.com/api/v0/mod/1/versions?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://forge.sp-tarkov.com/api/v0/mod/1/versions",
"per_page": 12,
"to": 5,
"total": 5
}
}
Example response (200, Success (Include Dependencies)):
{
"success": true,
"data": [
{
"id": 938,
"hub_id": null,
"version": "0.2.9",
"description": "Magni eius ad temporibus similique accusamus assumenda aliquid. Quisquam placeat in necessitatibus ducimus quasi odit. Autem nulla ea minus itaque.",
"link": "https://forge.sp-tarkov.com/mod/download/1/example-mod/0.2.9",
"content_length": 52428800,
"spt_version_constraint": "^1.0.0",
"downloads": 8,
"fika_compatibility": "unknown",
"dependencies": [
{
"id": 5,
"mod_id": 42,
"mod_guid": "com.example.core-library",
"mod_name": "Core Library",
"version_constraint": "^2.0.0",
"is_optional": false
},
{
"id": 8,
"mod_id": 15,
"mod_guid": "com.example.helper-utils",
"mod_name": "Helper Utilities",
"version_constraint": ">=1.5.0",
"is_optional": true
}
],
"published_at": "2024-05-09T10:49:41.000000Z",
"created_at": "2024-12-19T04:49:41.000000Z",
"updated_at": "2025-02-18T11:49:41.000000Z"
},
{
"id": 660,
"hub_id": null,
"version": "8.2.8",
"description": "Mollitia voluptatem quia et ex aut. Qui libero tempore ut. Suscipit a eius recusandae aut pariatur soluta necessitatibus.",
"link": "https://forge.sp-tarkov.com/mod/download/1/example-mod/8.2.8",
"spt_version_constraint": "<4.0.0",
"downloads": 3332503,
"fika_compatibility": "compatible",
"dependencies": [],
"published_at": "2024-07-03T05:49:25.000000Z",
"created_at": "2024-10-06T23:49:25.000000Z",
"updated_at": "2024-10-15T03:49:25.000000Z"
}
],
"links": {
"first": "https://forge.sp-tarkov.com/api/v0/mod/1/versions?include=dependencies&page=1",
"last": "https://forge.sp-tarkov.com/api/v0/mod/1/versions?include=dependencies&page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://forge.sp-tarkov.com/api/v0/mod/1/versions?include=dependencies&page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://forge.sp-tarkov.com/api/v0/mod/1/versions",
"per_page": 12,
"to": 2,
"total": 2
}
}
Example response (401, Unauthenticated):
{
"success": false,
"code": "UNAUTHENTICATED",
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Mod Updates
Checks for available updates for one or more installed mod versions, filtered by SPT version compatibility. This endpoint intelligently handles dependency constraints and prerelease versions to provide safe update recommendations.
How it works:
- Accepts mod identifier:version pairs and a target SPT version
- Finds newer versions compatible with the target SPT version
- Validates that updates won't break dependencies
- Returns categorized results: safe updates, blocked updates, up-to-date mods, and incompatible mods
Prerelease Handling:
- If a mod is on a prerelease version (e.g., 1.0.0-beta.1), the stable release (1.0.0) will be recommended if available, otherwise newer prereleases (e.g., 1.0.0-beta.2)
- If a mod is on a stable version, only stable versions are recommended (never prereleases)
Dependency Validation:
- Checks if updating would break constraints from other installed mods
- Validates that all dependencies of the new version can be satisfied
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/mods/updates?mods=5%3A1.2.0%2Ccom.example.mod%3A2.0.5&spt_version=3.11.5" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/mods/updates"
);
const params = {
"mods": "5:1.2.0,com.example.mod:2.0.5",
"spt_version": "3.11.5",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/mods/updates';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'mods' => '5:1.2.0,com.example.mod:2.0.5',
'spt_version' => '3.11.5',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/mods/updates'
params = {
'mods': '5:1.2.0,com.example.mod:2.0.5',
'spt_version': '3.11.5',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Success):
{
"success": true,
"data": {
"spt_version": "3.11.5",
"updates": [
{
"current_version": {
"id": 42,
"mod_id": 5,
"guid": "com.example.mod",
"name": "Example Mod",
"slug": "example-mod",
"version": "1.0.0"
},
"recommended_version": {
"id": 58,
"version": "1.5.0",
"link": "https://forge.sp-tarkov.com/mod/download/5/example-mod/1.5.0",
"content_length": 1048576,
"fika_compatibility": "compatible",
"spt_versions": [
"3.11.0",
"3.11.5"
]
},
"update_reason": "newer_version_available"
}
],
"blocked_updates": [
{
"current_version": {
"id": 99,
"mod_id": 20,
"guid": "com.example.blocked",
"name": "Blocked Mod",
"version": "2.0.0"
},
"latest_version": {
"id": 105,
"version": "3.0.0",
"spt_versions": [
"3.11.5"
]
},
"block_reason": "dependency_constraint_violation",
"blocking_mods": [
{
"mod_id": 15,
"mod_guid": "com.example.dependent",
"mod_name": "Dependent Mod",
"current_version": "1.0.0",
"constraint": "^2.0.0",
"incompatible_with": "3.0.0"
}
]
}
],
"up_to_date": [
{
"id": 125,
"mod_id": 25,
"guid": "com.example.current",
"name": "Current Mod",
"version": "1.8.0",
"spt_versions": [
"3.11.5"
]
}
],
"incompatible_with_spt": [
{
"id": 150,
"mod_id": 30,
"guid": "com.example.old",
"name": "Old Mod",
"version": "1.0.0",
"reason": "no_version_for_spt",
"latest_compatible_version": null
}
]
}
}
Example response (400, Missing Parameter):
{
"success": false,
"code": "VALIDATION_FAILED",
"message": "You must provide both 'mods' and 'spt_version' parameters."
}
Example response (400, Invalid SPT Version):
{
"success": false,
"code": "VALIDATION_FAILED",
"message": "SPT version not found or not published."
}
Example response (401, Unauthenticated):
{
"success": false,
"code": "UNAUTHENTICATED",
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Mod Dependencies
Resolves the dependency tree of one or more mod versions for a specific SPT version. This endpoint is designed for mod managers and installers that need to determine, in a single call, which mods must be downloaded and installed for each queried mod and whether the full set of queried mods is internally consistent.
How it works:
- Accepts one or more
identifier:versionpairs where identifier can be either a mod_id (numeric) or GUID (string) (e.g.,5:1.2.0,com.example.mod:2.0.5) - Requires an
spt_version; every resolved dependency version is compatible with that SPT version - Returns one dependency tree per queried pair, keyed by the pair exactly as it was provided
- Version selection is global across the whole request: when multiple queried mods share a dependency, every tree shows the same, highest version satisfying all of their constraints
- Detects and flags version constraint conflicts
Response Structure:
data is an object with one key per queried identifier:version pair (exactly as provided, whitespace
trimmed). Pairs that do not resolve to a published mod version are omitted. A queried mod without dependencies
maps to an empty array. Each entry is an array of dependency nodes:
- Mod fields:
id,guid,name,slug- Essential identifying information - latest_compatible_version: The chosen version, containing:
id- Mod version IDversion- Semantic version stringlink- Download URL for the mod filecontent_length- File size in bytesfika_compatibility- Compatibility status with Fika modnullwhen the dependency has no published version that is compatible with the given SPT version and satisfies the constraint; such nodes always have emptydependencies
- conflict: Boolean indicating that no single version of this dependency satisfies every queried mod's constraints; each tree then shows the version its own constraint resolves to
- dependencies: Array of nested dependencies (same structure, recursive)
Version choices are made among the versions each constraint resolves to. When constraints are compatible, all trees agree on one version per dependency mod, at every nesting level.
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/mods/dependencies?mods=5%3A1.2.0%2Ccom.example.mod%3A2.0.5%2C15%3A3.1.0&spt_version=3.11.5" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/mods/dependencies"
);
const params = {
"mods": "5:1.2.0,com.example.mod:2.0.5,15:3.1.0",
"spt_version": "3.11.5",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/mods/dependencies';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'mods' => '5:1.2.0,com.example.mod:2.0.5,15:3.1.0',
'spt_version' => '3.11.5',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/mods/dependencies'
params = {
'mods': '5:1.2.0,com.example.mod:2.0.5,15:3.1.0',
'spt_version': '3.11.5',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Success):
{
"success": true,
"data": {
"com.example.mod:2.0.5": [
{
"id": 5,
"guid": "com.example.dependency",
"name": "Dependency Mod",
"slug": "dependency-mod",
"latest_compatible_version": {
"id": 42,
"version": "2.1.0",
"link": "https://forge.sp-tarkov.com/mod/download/5/dependency-mod/2.1.0",
"content_length": 1048576,
"fika_compatibility": "compatible"
},
"conflict": false,
"dependencies": []
}
],
"15:3.1.0": []
}
}
Example response (200, Success (Unsatisfiable On This SPT Version)):
{
"success": true,
"data": {
"com.example.mod:2.0.5": [
{
"id": 5,
"guid": "com.example.dependency",
"name": "Dependency Mod",
"slug": "dependency-mod",
"latest_compatible_version": null,
"conflict": false,
"dependencies": []
}
]
}
}
Example response (200, Success (No Queried Mods Found)):
{
"success": true,
"data": {}
}
Example response (400, Missing Parameters):
{
"success": false,
"code": "VALIDATION_FAILED",
"message": "You must provide both 'mods' and 'spt_version' parameters."
}
Example response (400, Unknown SPT Version):
{
"success": false,
"code": "VALIDATION_FAILED",
"message": "SPT version not found or not published."
}
Example response (400, Invalid Format):
{
"success": false,
"code": "VALIDATION_FAILED",
"message": "Invalid format for 'mods' parameter. Expected format: 'identifier:version,identifier:version' where identifier is either a mod_id (numeric) or GUID (string)"
}
Example response (401, Unauthenticated):
{
"success": false,
"code": "UNAUTHENTICATED",
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Mod Version File Tree
Retrieves the archive file listing recorded by the latest passed verification of a mod version. The
files array contains the relative path of every file inside the version's download archive.
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/mod/0/versions/0/file-tree" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/mod/0/versions/0/file-tree"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/mod/0/versions/0/file-tree';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/mod/0/versions/0/file-tree'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Success):
{
"success": true,
"data": {
"verified_at": "2026-07-01T12:00:00.000000Z",
"file_count": 3,
"truncated": false,
"files": [
"BepInEx/plugins/ExampleMod.dll",
"user/mods/example-mod/package.json",
"user/mods/example-mod/src/mod.js"
]
}
}
Example response (404, File Tree Not Available):
{
"success": false,
"code": "NOT_FOUND",
"message": "Resource not found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Addons
Endpoints for managing and retrieving addons.
Get Addons
Retrieves a paginated list of addons, allowing filtering, sorting, and relationship inclusion.
Fields available:name, slug, teaser, thumbnail, downloads, detail_url,
contains_ai_content, contains_ads, mod_id, published_at, created_at, updated_at
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/addons?fields=name%2Cslug%2Ccreated_at&filter%5Bid%5D=1%2C5%2C10&filter%5Bname%5D=Music+Pack&filter%5Bslug%5D=some-addon&filter%5Bteaser%5D=important&filter%5Bmod_id%5D=1%2C2%2C3&filter%5Bcontains_ads%5D=false&filter%5Bcontains_ai_content%5D=false&filter%5Bis_detached%5D=false&filter%5Bcreated_between%5D=2025-01-01%2C2025-03-31&filter%5Bupdated_between%5D=2025-01-01%2C2025-03-31&filter%5Bpublished_between%5D=2025-01-01%2C2025-03-31&query=music+pack&include=versions%2Cmod&sort=-name&page=2&per_page=25" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/addons"
);
const params = {
"fields": "name,slug,created_at",
"filter[id]": "1,5,10",
"filter[name]": "Music Pack",
"filter[slug]": "some-addon",
"filter[teaser]": "important",
"filter[mod_id]": "1,2,3",
"filter[contains_ads]": "false",
"filter[contains_ai_content]": "false",
"filter[is_detached]": "false",
"filter[created_between]": "2025-01-01,2025-03-31",
"filter[updated_between]": "2025-01-01,2025-03-31",
"filter[published_between]": "2025-01-01,2025-03-31",
"query": "music pack",
"include": "versions,mod",
"sort": "-name",
"page": "2",
"per_page": "25",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/addons';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'fields' => 'name,slug,created_at',
'filter[id]' => '1,5,10',
'filter[name]' => 'Music Pack',
'filter[slug]' => 'some-addon',
'filter[teaser]' => 'important',
'filter[mod_id]' => '1,2,3',
'filter[contains_ads]' => 'false',
'filter[contains_ai_content]' => 'false',
'filter[is_detached]' => 'false',
'filter[created_between]' => '2025-01-01,2025-03-31',
'filter[updated_between]' => '2025-01-01,2025-03-31',
'filter[published_between]' => '2025-01-01,2025-03-31',
'query' => 'music pack',
'include' => 'versions,mod',
'sort' => '-name',
'page' => '2',
'per_page' => '25',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/addons'
params = {
'fields': 'name,slug,created_at',
'filter[id]': '1,5,10',
'filter[name]': 'Music Pack',
'filter[slug]': 'some-addon',
'filter[teaser]': 'important',
'filter[mod_id]': '1,2,3',
'filter[contains_ads]': 'false',
'filter[contains_ai_content]': 'false',
'filter[is_detached]': 'false',
'filter[created_between]': '2025-01-01,2025-03-31',
'filter[updated_between]': '2025-01-01,2025-03-31',
'filter[published_between]': '2025-01-01,2025-03-31',
'query': 'music pack',
'include': 'versions,mod',
'sort': '-name',
'page': '2',
'per_page': '25',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Success (All fields, No Includes)):
{
"success": true,
"data": [
{
"id": 1,
"name": "Ultimate Music Pack",
"slug": "ultimate-music-pack",
"teaser": "A collection of atmospheric music tracks",
"thumbnail": "",
"downloads": 1523,
"owner": {
"id": 1,
"name": "AddonAuthor",
"profile_photo_url": "https://example.com/profile.jpg",
"cover_photo_url": "https://example.com/cover.jpg"
},
"additional_authors": [],
"source_code_links": [],
"detail_url": "https://forge.sp-tarkov.com/addon/1/ultimate-music-pack",
"contains_ads": false,
"contains_ai_content": false,
"mod_id": 5,
"is_detached": false,
"published_at": "2025-01-09T17:48:53.000000Z",
"created_at": "2024-12-11T14:48:53.000000Z",
"updated_at": "2025-04-10T13:50:00.000000Z"
}
],
"links": {
"first": "https://forge.sp-tarkov.com/api/v0/addons?page=1",
"last": "https://forge.sp-tarkov.com/api/v0/addons?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://forge.sp-tarkov.com/api/v0/addons?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://forge.sp-tarkov.com/api/v0/addons",
"per_page": 12,
"to": 1,
"total": 1
}
}
Example response (401, Unauthenticated):
{
"success": false,
"code": "UNAUTHENTICATED",
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Addon Details
Retrieves details for a single addon, allowing relationship inclusion.
Fields available:name, slug, teaser, description, thumbnail, downloads, source_code_links,
detail_url, contains_ai_content, custom_ai_disclosure, contains_ads, mod_id, is_detached, published_at,
created_at, updated_at
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/addon/0?fields=name%2Cslug%2Ccreated_at&include=versions%2Clicense" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/addon/0"
);
const params = {
"fields": "name,slug,created_at",
"include": "versions,license",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/addon/0';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'fields' => 'name,slug,created_at',
'include' => 'versions,license',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/addon/0'
params = {
'fields': 'name,slug,created_at',
'include': 'versions,license',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Success (All fields, No Includes)):
{
"success": true,
"data": {
"id": 1,
"name": "Ultimate Music Pack",
"slug": "ultimate-music-pack",
"teaser": "A collection of atmospheric music tracks",
"description": "This addon adds over 50 new music tracks...",
"thumbnail": "",
"downloads": 1523,
"owner": {
"id": 1,
"name": "AddonAuthor",
"profile_photo_url": "https://example.com/profile.jpg",
"cover_photo_url": "https://example.com/cover.jpg"
},
"additional_authors": [],
"source_code_links": [],
"detail_url": "https://forge.sp-tarkov.com/addon/1/ultimate-music-pack",
"contains_ads": false,
"contains_ai_content": false,
"custom_ai_disclosure": "<p>AI tools were used to generate placeholder music tracks.</p>",
"mod_id": 5,
"is_detached": false,
"published_at": "2025-01-09T17:48:53.000000Z",
"created_at": "2024-12-11T14:48:53.000000Z",
"updated_at": "2025-04-10T13:50:00.000000Z"
}
}
Example response (404, Addon Does Not Exist):
{
"success": false,
"code": "NOT_FOUND",
"message": "Resource not found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Addon Versions
Retrieves a paginated list of addon versions, allowing filtering, sorting, and relationship inclusion.
Fields available:id, version, description, link, content_length, mod_version_constraint,
downloads, published_at, created_at, updated_at
The content_length field contains the file size in bytes as determined by the Content-Length header
from the download link. This field may be null for versions created before file size validation was implemented.
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/addon/0/versions?fields=id%2Cversion%2Clink%2Ccreated_at&filter%5Bid%5D=234%2C432&filter%5Bversion%5D=%5E1.0.0&filter%5Bdescription%5D=This+is+a+description&filter%5Bpublished_between%5D=2025-01-01%2C2025-03-31&filter%5Bcreated_between%5D=2025-01-01%2C2025-03-31&filter%5Bupdated_between%5D=2025-01-01%2C2025-03-31&include=virus_total_links&sort=-version%2C-created_at&page=2&per_page=25" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/addon/0/versions"
);
const params = {
"fields": "id,version,link,created_at",
"filter[id]": "234,432",
"filter[version]": "^1.0.0",
"filter[description]": "This is a description",
"filter[published_between]": "2025-01-01,2025-03-31",
"filter[created_between]": "2025-01-01,2025-03-31",
"filter[updated_between]": "2025-01-01,2025-03-31",
"include": "virus_total_links",
"sort": "-version,-created_at",
"page": "2",
"per_page": "25",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/addon/0/versions';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'fields' => 'id,version,link,created_at',
'filter[id]' => '234,432',
'filter[version]' => '^1.0.0',
'filter[description]' => 'This is a description',
'filter[published_between]' => '2025-01-01,2025-03-31',
'filter[created_between]' => '2025-01-01,2025-03-31',
'filter[updated_between]' => '2025-01-01,2025-03-31',
'include' => 'virus_total_links',
'sort' => '-version,-created_at',
'page' => '2',
'per_page' => '25',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/addon/0/versions'
params = {
'fields': 'id,version,link,created_at',
'filter[id]': '234,432',
'filter[version]': '^1.0.0',
'filter[description]': 'This is a description',
'filter[published_between]': '2025-01-01,2025-03-31',
'filter[created_between]': '2025-01-01,2025-03-31',
'filter[updated_between]': '2025-01-01,2025-03-31',
'include': 'virus_total_links',
'sort': '-version,-created_at',
'page': '2',
'per_page': '25',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Success (All fields, No Includes)):
{
"success": true,
"data": [
{
"id": 1,
"version": "1.2.0",
"description": "Added 10 new tracks",
"link": "https://forge.sp-tarkov.com/addon/download/1/example-addon/1.2.0",
"content_length": 52428800,
"mod_version_constraint": "^2.0.0",
"downloads": 523,
"published_at": "2025-01-09T17:48:53.000000Z",
"created_at": "2024-12-11T14:48:53.000000Z",
"updated_at": "2025-04-10T13:50:00.000000Z"
},
{
"id": 2,
"version": "1.1.0",
"description": "Fixed audio glitches",
"link": "https://forge.sp-tarkov.com/addon/download/1/example-addon/1.1.0",
"content_length": 51200000,
"mod_version_constraint": "^2.0.0",
"downloads": 1000,
"published_at": "2024-12-15T10:30:00.000000Z",
"created_at": "2024-11-20T08:15:00.000000Z",
"updated_at": "2025-01-05T12:45:00.000000Z"
}
],
"links": {
"first": "https://forge.sp-tarkov.com/api/v0/addon/1/versions?page=1",
"last": "https://forge.sp-tarkov.com/api/v0/addon/1/versions?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://forge.sp-tarkov.com/api/v0/addon/1/versions?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://forge.sp-tarkov.com/api/v0/addon/1/versions",
"per_page": 12,
"to": 2,
"total": 2
}
}
Example response (401, Unauthenticated):
{
"success": false,
"code": "UNAUTHENTICATED",
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Addon Version File Tree
Retrieves the archive file listing recorded by the latest passed verification of an addon version. The
files array contains the relative path of every file inside the version's download archive.
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/addon/0/versions/0/file-tree" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/addon/0/versions/0/file-tree"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/addon/0/versions/0/file-tree';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/addon/0/versions/0/file-tree'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Success):
{
"success": true,
"data": {
"verified_at": "2026-07-01T12:00:00.000000Z",
"file_count": 2,
"truncated": false,
"files": [
"user/mods/example-mod/addons/example-addon/config.json",
"user/mods/example-mod/addons/example-addon/tracks/track01.ogg"
]
}
}
Example response (404, File Tree Not Available):
{
"success": false,
"code": "NOT_FOUND",
"message": "Resource not found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Addon Dependencies
Resolves the mod dependency tree of one or more addon versions for a specific SPT version. This endpoint is designed for mod managers and installers that need to determine, in a single call, which mods must be downloaded and installed for each queried addon and whether the full set of queried addons is internally consistent.
How it works:
- Accepts one or more
identifier:versionpairs where identifier can be either an addon_id (numeric) or slug (string) (e.g.,5:1.2.0,my-addon:2.0.5) - Requires an
spt_version; every resolved dependency version is compatible with that SPT version - Returns one dependency tree per queried pair, keyed by the pair exactly as it was provided
- Version selection is global across the whole request: when multiple queried addons share a dependency, every tree shows the same, highest version satisfying all of their constraints
- Detects and flags version constraint conflicts
Response Structure:
data is an object with one key per queried identifier:version pair (exactly as provided, whitespace
trimmed). Pairs that do not resolve to a published addon version are omitted. A queried addon without
dependencies maps to an empty array. Each entry is an array of mod dependency nodes:
- Mod fields:
id,guid,name,slug- Essential identifying information - latest_compatible_version: The chosen version, containing:
id- Mod version IDversion- Semantic version stringlink- Download URL for the mod filecontent_length- File size in bytesfika_compatibility- Compatibility status with Fika modnullwhen the dependency has no published version that is compatible with the given SPT version and satisfies the constraint; such nodes always have emptydependencies
- conflict: Boolean indicating that no single version of this dependency satisfies every queried addon's constraints; each tree then shows the version its own constraint resolves to
- dependencies: Array of nested mod dependencies (same structure, recursive)
Version choices are made among the versions each constraint resolves to. When constraints are compatible, all trees agree on one version per dependency mod, at every nesting level.
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/addons/dependencies?addons=5%3A1.2.0%2Cmy-addon%3A2.0.5%2C15%3A3.1.0&spt_version=3.11.5" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/addons/dependencies"
);
const params = {
"addons": "5:1.2.0,my-addon:2.0.5,15:3.1.0",
"spt_version": "3.11.5",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/addons/dependencies';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'addons' => '5:1.2.0,my-addon:2.0.5,15:3.1.0',
'spt_version' => '3.11.5',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/addons/dependencies'
params = {
'addons': '5:1.2.0,my-addon:2.0.5,15:3.1.0',
'spt_version': '3.11.5',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Success):
{
"success": true,
"data": {
"my-addon:2.0.5": [
{
"id": 5,
"guid": "com.example.dependency",
"name": "Dependency Mod",
"slug": "dependency-mod",
"latest_compatible_version": {
"id": 42,
"version": "2.1.0",
"link": "https://forge.sp-tarkov.com/mod/download/5/dependency-mod/2.1.0",
"content_length": 1048576,
"fika_compatibility": "compatible"
},
"conflict": false,
"dependencies": []
}
],
"15:3.1.0": []
}
}
Example response (200, Success (No Queried Addons Found)):
{
"success": true,
"data": {}
}
Example response (400, Missing Parameters):
{
"success": false,
"code": "VALIDATION_FAILED",
"message": "You must provide both 'addons' and 'spt_version' parameters."
}
Example response (400, Unknown SPT Version):
{
"success": false,
"code": "VALIDATION_FAILED",
"message": "SPT version not found or not published."
}
Example response (400, Invalid Format):
{
"success": false,
"code": "VALIDATION_FAILED",
"message": "Invalid format for 'addons' parameter. Expected format: 'identifier:version,identifier:version' where identifier is either an addon_id (numeric) or slug (string)"
}
Example response (401, Unauthenticated):
{
"success": false,
"code": "UNAUTHENTICATED",
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Mod Categories
Endpoints for retrieving mod category data.
Get Mod Categories
Retrieves a paginated list of mod categories, allowing filtering and sorting.
Fields available:id, hub_id, title, slug, description
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/mod-categories?fields=id%2Ctitle%2Cslug&filter%5Bid%5D=1%2C2%2C3&filter%5Bslug%5D=weapons%2Cgear&filter%5Btitle%5D=weapon&sort=title%2C-slug&page=2&per_page=50" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/mod-categories"
);
const params = {
"fields": "id,title,slug",
"filter[id]": "1,2,3",
"filter[slug]": "weapons,gear",
"filter[title]": "weapon",
"sort": "title,-slug",
"page": "2",
"per_page": "50",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/mod-categories';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'fields' => 'id,title,slug',
'filter[id]' => '1,2,3',
'filter[slug]' => 'weapons,gear',
'filter[title]' => 'weapon',
'sort' => 'title,-slug',
'page' => '2',
'per_page' => '50',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/mod-categories'
params = {
'fields': 'id,title,slug',
'filter[id]': '1,2,3',
'filter[slug]': 'weapons,gear',
'filter[title]': 'weapon',
'sort': 'title,-slug',
'page': '2',
'per_page': '50',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Success):
{
"success": true,
"data": [
{
"id": 1,
"hub_id": 12,
"title": "Weapons",
"slug": "weapons",
"description": "Weapon mods and attachments",
},
{
"id": 2,
"hub_id": 13,
"title": "Gear",
"slug": "gear",
"description": "Armor, rigs, and equipment",
}
],
"links": {
"first": "https://forge.sp-tarkov.com/api/v0/mod-categories?page=1",
"last": "https://forge.sp-tarkov.com/api/v0/mod-categories?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://forge.sp-tarkov.com/api/v0/mod-categories?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://forge.sp-tarkov.com/api/v0/mod-categories",
"per_page": 50,
"to": 2,
"total": 2
}
}
Example response (401, Unauthenticated):
{
"success": false,
"code": "UNAUTHENTICATED",
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Mod Category
Retrieves a single mod category by ID or slug.
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/mod-categories/illum?fields=id%2Ctitle%2Cslug" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/mod-categories/illum"
);
const params = {
"fields": "id,title,slug",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/mod-categories/illum';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'fields' => 'id,title,slug',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/mod-categories/illum'
params = {
'fields': 'id,title,slug',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Success):
{
"success": true,
"data": {
"id": 1,
"hub_id": 12,
"title": "Weapons",
"slug": "weapons",
"description": "Weapon mods and attachments",
}
}
Example response (404, Not Found):
{
"success": false,
"code": "NOT_FOUND",
"message": "The requested resource was not found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
SPT Versions
Endpoints for retrieving SPT-related data.
Get SPT Versions
Retrieves a paginated list of SPT versions, allowing filtering and sorting.
Fields available:id, version, version_major, version_minor, version_patch, version_labels, mod_count,
link, color_class, created_at, updated_at
Example request:
curl --request GET \
--get "https://forge.sp-tarkov.com/api/v0/spt/versions?fields=id%2Cversion%2Ccreated_at&filter%5Bid%5D=234%2C432&filter%5Bcreated_between%5D=2025-01-01%2C2025-03-31&filter%5Bupdated_between%5D=2025-01-01%2C2025-03-31&filter%5Bspt_version%5D=%5E3.9.0&sort=-version%2Ccreated_at&page=2&per_page=25" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://forge.sp-tarkov.com/api/v0/spt/versions"
);
const params = {
"fields": "id,version,created_at",
"filter[id]": "234,432",
"filter[created_between]": "2025-01-01,2025-03-31",
"filter[updated_between]": "2025-01-01,2025-03-31",
"filter[spt_version]": "^3.9.0",
"sort": "-version,created_at",
"page": "2",
"per_page": "25",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://forge.sp-tarkov.com/api/v0/spt/versions';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'fields' => 'id,version,created_at',
'filter[id]' => '234,432',
'filter[created_between]' => '2025-01-01,2025-03-31',
'filter[updated_between]' => '2025-01-01,2025-03-31',
'filter[spt_version]' => '^3.9.0',
'sort' => '-version,created_at',
'page' => '2',
'per_page' => '25',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://forge.sp-tarkov.com/api/v0/spt/versions'
params = {
'fields': 'id,version,created_at',
'filter[id]': '234,432',
'filter[created_between]': '2025-01-01,2025-03-31',
'filter[updated_between]': '2025-01-01,2025-03-31',
'filter[spt_version]': '^3.9.0',
'sort': '-version,created_at',
'page': '2',
'per_page': '25',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Success):
{
"success": true,
"data": [
{
"id": 2,
"version": "3.11.3",
"version_major": 3,
"version_minor": 11,
"version_patch": 3,
"version_labels": "",
"mod_count": 371,
"link": "https://github.com/sp-tarkov/build/releases/tag/3.11.3",
"color_class": "green",
"created_at": "2025-04-08T19:29:40.000000Z",
"updated_at": "2025-04-08T19:29:40.000000Z"
},
{
"id": 3,
"version": "3.11.2",
"version_major": 3,
"version_minor": 11,
"version_patch": 2,
"version_labels": "",
"mod_count": 371,
"link": "https://github.com/sp-tarkov/build/releases/tag/3.11.2",
"color_class": "green",
"created_at": "2025-03-31T12:39:00.000000Z",
"updated_at": "2025-03-31T12:39:00.000000Z"
}
],
"links": {
"first": "https://forge.sp-tarkov.com/api/v0/spt/versions?page=1",
"last": "https://forge.sp-tarkov.com/api/v0/spt/versions?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://forge.sp-tarkov.com/api/v0/spt/versions?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://forge.sp-tarkov.com/api/v0/spt/versions",
"per_page": 12,
"to": 2,
"total": 2
}
}
Example response (401, Unauthenticated):
{
"success": false,
"code": "UNAUTHENTICATED",
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.