API documentation

Arma Reforger Mods API

Last updated:

One Reforger-focused API for live server data, server history, reported server mods, and cached Arma Reforger Workshop metadata.

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

Choose a Version

V1 remains supported. Unversioned legacy routes map to V1.

Client Identity

No key is required for eligible public cached reads, including mod search, details, dependencies, scenarios, version data, and server data. Identify your client anyway.

Recommended headers
User-Agent: my-server-panel/2.1 (+https://example.com; [email protected])
X-API-Client: my-server-panel/2.1
X-ReforgerMods-Client: my-server-panel
X-ReforgerMods-Client-Version: 2.1

Paid keys use either header. Limits are shared by account.

API key headers
Authorization: Bearer rfm_live_...
X-API-Key: rfm_live_...

Rate Limits

Rate limits apply per client IP on the public tier and per account on paid tiers.

60/min + 5k/dayFree tier per resolved client IP
300/min + 100k/dayDeveloper plan per account
1,200/min + 500k/dayPro plan per account
20 / 100 / 300Free, Developer, and Pro burst allowances

429 means either the minute limit or daily quota was exceeded. 503 with QUOTA_CHECK_UNAVAILABLE means quota state could not be checked and the request should be retried later.

HeaderMeaning
RateLimit-Limit, RateLimit-Remaining, RateLimit-ResetCurrent limiting window.
X-RateLimit-Limit-Minute, X-RateLimit-Remaining-MinuteMinute-limit state.
X-RateLimit-Limit-Day, X-RateLimit-Remaining-Day, X-RateLimit-Reset-DayUTC daily-quota state.
X-RateLimit-Policy-DayEffective daily quota mode: disabled, observe, or enforce.
X-API-PlanResolved plan: free, developer, pro, or internal.
Retry-AfterSeconds to wait before retrying after 429 or 503.

Caching

Responses are cached. Stale data may be served during upstream failures.

ResourceFresh cacheStale fallback
Mod detail1 hour24 hours
Mod version history6 hours7 days
Mod list and search10 minutes1 hour
Not found response10 minutesNone
HeaderMeaning
X-CacheHIT, MISS, or STALE.
X-Workshop-Source, X-Workshop-OriginWhether data came from live Workshop data, memory cache, persistent cache, or fallback parsing.
ETagValidator for conditional requests.
Conditional request
curl -H 'If-None-Match: W/"a1b2c3d4e5f6a7b8c9d0e1f2"' \
  "https://api.reforgermods.net/v2/mods?search=radio"

Errors

Both versions use the same error envelope and include X-Request-Id.

Error response
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Too many requests.",
    "requestId": "..."
  }
}
INVALID_PAGERequested page is invalid.
INVALID_MOD_IDMod ID must be exactly 16 hexadecimal characters.
INVALID_SEARCHSearch text is invalid.
NOT_FOUNDNo matching resource was found.
RATE_LIMITEDMinute rate limit exceeded.
DAILY_QUOTA_EXCEEDEDDaily request quota exceeded.
QUOTA_CHECK_UNAVAILABLEDaily quota state is temporarily unavailable.
UPSTREAM_UNAVAILABLEWorkshop data is temporarily unavailable.
SERVERS_UNAVAILABLEServer data is temporarily unavailable.
SERVERS_WARMINGThe server index is still warming up.

V1 to V2

Use V2 for typed values. Keep V1 for legacy response shapes.

V1
{
  "size": "5.90 GB",
  "rating": "88%",
  "created": "18.05.2022"
}
V2
{
  "size": 6335076761,
  "sizeFormatted": "5.9 GiB",
  "rating": 0.88,
  "createdAt": "2022-05-18T22:02:44Z"
}

Workshop data may be temporarily unavailable if the Workshop data shape changes.