ar-gcp-cdn.bistudio.com
(Bohemia Interactive CDN) — without downloading to our servers.
Load external content?
Welcome to the Better Arma Workshop API. Our API follows REST principles, returns JSON, and uses standard HTTP response codes.
To obtain a session token, use the login endpoint.
/api/v1/auth/login
{
"email": "user@example.com",
"password": "yourpassword"
}
{
"token": "eyJhbGciOi...",
"user": {
"user_id": "...",
"display_name": "Ghost"
}
}
Include the token in your headers: Authorization: Bearer <token>
For long-term integration, use API Keys in the X-API-Key header.
/api/v1/mods
Query: search, tag, sort, page, limit
{
"mods": [
{
"workshop_id": "5965550FD8C7F516",
"name": "RHS Status Quo",
"version": "0.9.1",
"size_bytes": 1450000000,
"image_url": "https://...",
"tags": ["Conversion", "Realism"]
}
],
"total": 1250,
"pages": 63
}
/api/v1/mods/:workshopID
Returns complete metadata including dependency_ids and external_links.
| Endpoint | Description |
|---|---|
/items |
Extracted items (weapons, vehicles, gear). Supports ?type=... and ?version=... |
/missions |
Extracted missions/scenarios. Supports ?version=... |
/deps |
Detailed dependency list including sizes. |
/versions |
Complete version history and changelogs. |
/screenshots |
Gallery of official screenshots. |
/item-versions |
List of versions that have extracted item data. |
/api/v1/lists
Auth Required
{
"name": "Tactical Ops",
"description": "Server preset V2",
"is_public": true
}
{
"id": "uuid-...",
"share_token": "uuid-...",
"suggestion_token": "uuid-..."
}
/api/v1/lists/:id/mods
Auth
Add a mod by its Workshop ID. If the mod is not in our database yet, a scraping job will be triggered automatically.
{ "workshop_id": "5965550FD8C7F516" }
/api/v1/lists/:id/mods/:workshopID
Auth
Remove a mod from the list.
You can sync your local server.json with a list. The API provides a preview (diff) before changes are applied manually via individual POST requests.
/api/v1/lists/:id/import-preview
Auth
{
"game": {
"mods": [
{
"modId": "5965550FD8C7F516",
"name": "RHS Status Quo",
"version": "0.9.1"
}
]
}
}
{
"added": [
{
"workshop_id": "5965550FD8C7F516",
"name": "RHS Status Quo",
"version": "0.9.1",
"size_bytes": 1450000000,
"in_catalog": true
}
],
"removed": [
{ "workshop_id": "...", "name": "..." }
],
"version_changed": [],
"not_in_catalog": []
}
added and not_in_catalog lists and call the POST /api/v1/lists/:id/mods endpoint for each.
/api/v1/lists/:id/suggestions
Auth Required
Submit a mod for consideration. If the list has custom form fields, they must be included in form_answers.
{
"workshop_id": "5965550FD8C7F516",
"reason": "Essential for medical gameplay",
"form_answers": {
"uuid-field-1": "High Priority",
"uuid-field-2": true
}
}
/api/v1/jobs/scraper/detail
Rate Limit: 10/h
Request an immediate update/scrape for a specific mod. Limited to 10 requests per hour per IP.
{ "workshop_id": "5965550FD8C7F516" }
| Code | Reason | Typical JSON Body |
|---|---|---|
400 |
Bad Request | {"error": "invalid workshop ID"} |
401 |
Unauthorized | {"error": "unauthorized"} |
403 |
Forbidden | {"error": "no permission"} |
422 |
Unprocessable | {"error": "Mod age exceeds list limits"} |
429 |
Rate Limit | {"error": "too many requests"} |