API v1

Reforger Mods API V1

Last updated:

V1 is the stable legacy API contract. It preserves existing field names, response envelopes, string sizes, percentage ratings, and date fields.

Base URL:https://api.reforgermods.net/v1

Deprecated unversioned routes remain aliases for V1. New clients that do not need V1 formatting should use V2.

GET

/v1/health

Returns process health only. It does not request Workshop data.

Request
curl https://api.reforgermods.net/v1/health
200 OK
{
  "status": "success",
  "data": { "code": 200, "alive": true }
}
GET

/v1/mods

Returns the first page of Workshop mod previews. Search, sort, and tag filters are optional.

ParameterDescription
queryPreferred search text parameter.
qShort alias for query.
search, sBackward-compatible search aliases.
sortpopularity, most-rated, newest, created, recently-updated, highest-rated, subscribers, version_size, largest, or name.
tagsOptional Workshop tag filter. Repeat for multiple tags.
categorySingle-value alias for tags.
Request
curl -H "User-Agent: my-bot/2.0.0" \
  "https://api.reforgermods.net/v1/mods?query=radio&sort=newest"

The response uses the list response shape with V1 mod preview objects.

GET

/v1/mods/{page}

Returns a specific positive page number using the same response shape and query parameters as /v1/mods.

Request
curl "https://api.reforgermods.net/v1/mods/2?query=radio&sort=newest"
GET

/v1/mod/{id}

Fetches one Workshop mod by ID. Detail responses include dependencies, scenarios, description, and license when available.

Request
curl -H "User-Agent: my-bot/2.0.0" \
  "https://api.reforgermods.net/v1/mod/5965550F24A0C152"
200 OK
{
  "status": "success",
  "mod": {
    "name": "Example Mod",
    "author": "Example Author",
    "originalModURL": "https://reforger.armaplatform.com/workshop/5965550F24A0C152",
    "apiModURL": "https://api.reforgermods.net/v1/mod/5965550F24A0C152",
    "imageURL": "https://example.com/image.png",
    "previewImages": ["https://example.com/image.png"],
    "rating": "92%",
    "version": "1.1.0",
    "gameVersion": "1.1.0.34",
    "size": "192.42 KB",
    "subscribers": 66677,
    "downloads": 791142,
    "created": "19.05.2022",
    "lastModified": "17.03.2024",
    "id": "5965550F24A0C152",
    "summary": "Short Workshop summary",
    "description": "Workshop description",
    "license": "Arma Public License (APL)",
    "tags": ["GAMEPLAY"],
    "dependencies": [ { "...": "dependency objects" } ],
    "scenarios": [ { "...": "scenario objects" } ]
  }
}
GET

/v1/mod/{id}/versions

Fetches available version history for one Workshop mod in a single response. Version history is not appended to /v1/mod/{id} by default.

This data is normalized from Arma Reforger Workshop metadata and may be temporarily unavailable if the Workshop data shape changes.

Request
curl "https://api.reforgermods.net/v1/mod/5965550F24A0C152/versions"

Pagination parameters are rejected; the endpoint returns all available rows.

GET

/v1/rate-limits

Returns the rate-limit tier resolved for the request. Send an API key to inspect the paid plan attached to that key; omit the key to inspect the public tier.

200 OK
{
  "authenticated": true,
  "rate_limit": {
    "plan": "pro",
    "limit_per_minute": 1200,
    "burst": 300,
    "limit_per_day": 500000,
    "window": "1 minute",
    "daily_window": "UTC day",
    "shared_by": "account",
    "daily_shared_by": "account",
    "active_key_limit": 10
  }
}
GET

/v1/refresh/jobs/{id}

Inspects background refresh progress when a refresh job is created. Most ordinary read clients only need normal 200, 304, 404, 429, and 503 handling.

200 OK
{
  "id": "9f0b7d0f6fd4f88a8bb0e455f0b640247a93",
  "status": "queued",
  "resource_url": "/v1/mods?query=radio",
  "retry_after_seconds": 2
}

List Response Structure

List response
{
  "status": "success",
  "meta": {
    "totalPages": 2593,
    "currentPage": 2,
    "totalMods": 41478,
    "shownMods": 16,
    "modsIndexStart": 17,
    "modsIndexEnd": 32
  },
  "data": [ { "...": "mod preview objects" } ],
  "links": {
    "next": "https://api.reforgermods.net/v1/mods/3?query=radio",
    "prev": "https://api.reforgermods.net/v1/mods/1?query=radio"
  }
}

Mod Preview Object

V1 preview
{
  "name": "Super Awesome Mod",
  "author": "Homer Simpson",
  "imageURL": "https://example.com/image.png",
  "originalModURL": "https://reforger.armaplatform.com/workshop/{mod_id}",
  "apiModURL": "https://api.reforgermods.net/v1/mod/{mod_id}",
  "size": "192.42 KB",
  "rating": "92%",
  "ID": "{mod_id}"
}

Mod Detail Object

V1 preserves display-oriented fields. size and rating are strings; created and lastModified keep the V1 date format.

V1 detail fields
{
  "name": "Super Awesome Mod",
  "author": "Homer Simpson",
  "originalModURL": "https://reforger.armaplatform.com/workshop/{mod_id}",
  "apiModURL": "https://api.reforgermods.net/v1/mod/{mod_id}",
  "imageURL": "https://example.com/image.png",
  "previewImages": ["https://example.com/image.png"],
  "rating": "92%",
  "version": "1.1.0",
  "gameVersion": "1.1.0.34",
  "size": "192.42 KB",
  "subscribers": 66677,
  "downloads": 791142,
  "created": "19.05.2022",
  "lastModified": "17.03.2024",
  "id": "{mod_id}",
  "summary": "Short Workshop summary",
  "description": "Workshop description",
  "license": "Arma Public License (APL)",
  "tags": ["GAMEPLAY"],
  "dependencies": [ { "...": "dependency objects" } ],
  "scenarios": [ { "...": "scenario objects" } ]
}

Version History Object

Version history
{
  "modId": "{mod_id}",
  "currentVersion": "2.0.0",
  "count": 20,
  "versions": [ { "...": "mod version objects" } ]
}
Mod version object
{
  "id": "1040033",
  "version": "1.2.3",
  "gameVersion": "1.4.0.22",
  "changelog": "more recoil and sway",
  "published": true,
  "approved": true,
  "fileSize": 27021149,
  "createdAt": "2026-08-01T10:11:12.000Z",
  "updatedAt": "2026-08-02T10:11:12.000Z",
  "dependencies": [ { "...": "dependency objects" } ]
}

Dependency Object

Dependency
{
  "name": "Mod Dependency",
  "originalModURL": "https://reforger.armaplatform.com/workshop/{dep_id}",
  "apiModURL": "https://api.reforgermods.net/v1/mod/{dep_id}"
}

Scenario Object

Scenario
{
  "name": "Some Scenario",
  "description": "Scenario description",
  "scenarioID": "{mod_id}Missions/SomeScenario.conf",
  "gamemode": "Campaign",
  "playerCount": 64,
  "imageURL": "https://example.com/image.png"
}

Refresh Job Object

Possible statuses are queued, running, succeeded, failed, and expired. After a job succeeds, request resource_url again.