Arma Reforger Mods API
A documented, read-only API for live Arma Reforger server data, population history, reported server mods, and cached Workshop metadata.
What the API provides
Two families of data are available. On the server side: live snapshots, per-server detail, population history, and the mod list each server reports. On the Workshop side: cached mod previews, search, full mod detail, dependencies, scenarios, and version history. Refresh-job status and your current rate-limit headroom are exposed alongside both.
It is built for server panels, bots, dashboards, config tools, and community sites that need Reforger data through a stable JSON interface. Eligible public cached reads are free within the documented rate limits; paid keys exist for higher sustained volume.
Base URL
https://api.reforgermods.net/v1
V1 remains supported. Use https://api.reforgermods.net/v2 for mod data when you want raw byte sizes, IEC formatted sizes, numeric ratings, RFC3339 timestamps, and plural /mods routes.
First request
curl 'https://api.reforgermods.net/v1/mods?query=radio&sort=newest'
List and search responses return mod previews with names, authors, IDs, sizes, ratings, and links. Fetch full details, including dependencies and scenarios, for one mod:
curl 'https://api.reforgermods.net/v1/mod/5965550F24A0C152'
V2 uses query-style pagination and lower-camel field names:
curl 'https://api.reforgermods.net/v2/mods?search=radio&sort=newest'
curl 'https://api.reforgermods.net/v2/mods/5965550F24A0C152'
curl 'https://api.reforgermods.net/v2/mods/5965550F24A0C152/versions'
curl 'https://api.reforgermods.net/v2/mods/5965550F24A0C152/versions/1.2.3'
curl 'https://api.reforgermods.net/v2/mods/5965550F24A0C152/dependencies'
curl 'https://api.reforgermods.net/v2/mods/5965550F24A0C152/scenarios'
curl 'https://api.reforgermods.net/v2/mods/5965550F24A0C152/license'
curl 'https://api.reforgermods.net/v2/servers?sort=players'
curl 'https://api.reforgermods.net/v2/servers/{room_id}/history?range=24h'
Authentication and API keys
Anonymous access is available for public cached reads. Paid API keys can be sent with X-API-Key or Authorization: Bearer and are managed from the account area after checkout.
Usage limits
Anonymous and API-key plans are subject to both short-term rate limits and daily request quotas. Anonymous access currently allows 60 requests per minute with a burst of 20 and a 5,000 request daily quota. Developer plans allow 300 requests per minute with a burst of 100 and 100,000 requests per UTC day. Pro plans allow 1,200 requests per minute with a burst of 300 and 500,000 requests per UTC day. Paid daily quotas are shared by account across active keys.
A request can return 429 Too Many Requests when either the minute limit or the daily quota is exceeded. Inspect RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, Retry-After, X-RateLimit-Limit-Minute, X-RateLimit-Remaining-Minute, X-RateLimit-Limit-Day, X-RateLimit-Remaining-Day, X-RateLimit-Reset-Day, and X-API-Plan to determine which limit applied and when access resets. Daily quota resets happen at midnight UTC.
When the daily quota is enforced, the response body uses DAILY_QUOTA_EXCEEDED. Invalid API keys are rejected as invalid keys; they do not silently fall back to anonymous high-volume access. High-volume synchronization, catalogue indexing, server panels, and integrations should use an API key and continue respecting Retry-After on rate-limit and service-unavailable responses.
Cached and indexed data
Responses are cached to keep the API responsive and to reduce repeated upstream requests. Server discovery data is retrieved from the backend used by Arma Reforger's server browser and served from the ReforgerMods index; public API requests do not call that backend directly. Cached data can be stale by design, so integrations should show update dates where useful and avoid treating the API as an ownership or moderation authority.
Caching and retries
Ordinary mod list, search, tag, sort, and exact-ID requests complete synchronously on cache miss. Stale cached data may be served with X-Cache: STALE when the Workshop upstream is unavailable. Refresh-job responses still exist for background refresh flows, but most read clients only need to handle normal 200, 304, 404, 429, and 503 responses.
import time
import requests
def get_json(url, attempts=4):
headers = {"User-Agent": "my-tool/2.0.0 ([email protected])"}
for _ in range(attempts):
response = requests.get(url, headers=headers, timeout=15)
if response.status_code in (429, 503):
time.sleep(int(response.headers.get("Retry-After", "2")))
continue
response.raise_for_status()
return response.json()
raise RuntimeError("API is still rate-limited or temporarily unavailable")
mods = get_json("https://api.reforgermods.net/v1/mods?query=radio")
Integration use cases
- Server hosting panels that need server data plus mod names, IDs, versions, sizes, and dependency hints.
- Discord bots that search Workshop mods or show detail cards.
- Config generators and validators that resolve mod IDs through a stable JSON interface.
- Community dashboards that track server population, scenarios, and server mod lists.
- Tools that connect server discovery to exact Workshop packages and versions.
Code examples
The examples above cover basic search, mod detail fetches, and bounded retries. Use the V2 reference for new clients or the V1 reference for existing integrations.
Be a good client
- Send an identifying
User-AgentorX-API-Clientheader with a contact hint, so traffic can be attributed and never mistaken for abuse. - Respect
Retry-Afteron429,503, and refresh-job responses, and cap your retries. - Anonymous clients get 60 requests per minute per IP by default; batch and cache instead of polling.
- Use the
ETagandCache-Controlheaders: sendIf-None-Matchto get cheap304 Not Modifiedresponses for unchanged data.
Go deeper
The API also powers the server browser, mod browser, config generator, config validator, storage planner, and dependency blocker on this site, so tool behavior and API behavior stay aligned.
Frequently asked questions
Is the Reforger Mods API official?
No. It is an independent, unofficial API that normalizes Arma Reforger Workshop metadata. It links back to the official Workshop and is not affiliated with Bohemia Interactive.
Is the API free to use?
Yes. Anonymous clients get 60 requests per minute per IP by default. Cache responses on your side, respect Retry-After, and send an identifying User-Agent or X-API-Client header.
Why do some requests return 202 Accepted?
A 202 means the data was not cached yet and a background refresh job was queued. Wait the number of seconds in the Retry-After header, then retry the same URL. It is not an error.