mods.io has a private API for making authenticated changes to mods, and will have a public API for fetching publically available content once the beta is complete.

Private API

The private API allows you to automate certain interactions with mods.io, like uploading a new version after continuous integration passes. Endpoint availability will be expanded upon as needed.

Making requests

The primary data format is JSON, and you should include the Accept: application/json header to indicate you’d like to receive a JSON response.

To identify you, every request must include your 40-character private API key within the X-API-Key header. You can find or change your API key in your account settings.

POST /mods/:id/versions/create.json

Creates a new version for a previously created mod. Since this endpoint requires a file upload, your request’s Content-Type must be set to multipart/form-data.

Form Parameters

The primary JSON content of the request, containing metadata. The contents of this field are the JSON parameters listed below.
The file to be associated with the mod's initial version. Supported file types are JAR and ZIP.

JSON Parameters

"version": { required
"name": required The name to give this version, must be 1-40 characters long. Example values: 1.0.0, 0.4b.
"minecraft": required The Minecraft release that this version is compatible with. Example values: 1.7.5, 1.6.4.
"changelog": optional The release notes for this version, shown on the download page. Use it to store a changelog or any specific information needed to use this version.
"tag": optional The release tag for this version. Example value: beta.
"current": optionalIf this version should be used as the latest. Default: true.
"filename": requiredThe file name to be served when a user downloads this version.

Example cURL request

curl -H 'X-API-Key: bXvRJOctBy2zP2V2eEokXHPEOHPcVlclK80JORTR' \
-F body='{
  "version": {
    "name": "1.3.2",
    "minecraft": "1.7.5",
    "changelog": "Changes since 1.3.1: ..."
  "filename": "mod_name_1.3.2.zip"
}' \
-F file='@path/to/mod_name_1.3.2.zip' \

Example response

  "mod_version_id": 4734,
  "mod_id": 1000,
  "name": "1.3.2",
  "minecraft": "1.7.5",
  "changelog": "Changes since 1.3.1: ...",
  "tag": "",
  "md5_hash": "85273e24404cc6865805f951487b8a1e",
  "file_size": 280212,
  "created_at": "2014-03-04T00:07:04.462397703-05:00"