Skip to main content
GET
/
api
/
public
/
v1
/
studio
/
products
/
{slug}
/
versions
List product versions
curl --request GET \
  --url https://www.nmcrate.com/api/public/v1/studio/products/{slug}/versions
import requests

url = "https://www.nmcrate.com/api/public/v1/studio/products/{slug}/versions"

response = requests.get(url)

print(response.text)
const options = {method: 'GET'};

fetch('https://www.nmcrate.com/api/public/v1/studio/products/{slug}/versions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://www.nmcrate.com/api/public/v1/studio/products/{slug}/versions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://www.nmcrate.com/api/public/v1/studio/products/{slug}/versions"

req, _ := http.NewRequest("GET", url, nil)

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://www.nmcrate.com/api/public/v1/studio/products/{slug}/versions")
.asString();
require 'uri'
require 'net/http'

url = URI("https://www.nmcrate.com/api/public/v1/studio/products/{slug}/versions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
Returns the full version history of one of your products. Unlike the general public API, this includes versions in every status (drafts, pending review, published) and always includes file metadata, it’s your own product.
Tier: Free, any studio key.

Request

curl https://nmcrate.com/api/public/v1/studio/products/dungeon-pack/versions \
  -H "x-api-key: nmk_studio_..."

Path parameters

ParameterTypeDescription
slugstringProduct slug, public id, or ObjectId.

Response

{
  "product": {
    "id": "prod_8f3a2c",
    "slug": "dungeon-pack",
    "name": "Dungeon Pack"
  },
  "items": [
    {
      "id": "66a1b2c3d4e5f60718293a4b",
      "version": "2.1.0",
      "status": "published",
      "changelog": "Added 10 new rooms.",
      "releaseNotes": null,
      "releaseType": "minor",
      "isStable": true,
      "isCurrentVersion": true,
      "publishedAt": "2026-06-30T08:12:00.000Z",
      "downloadCount": 812,
      "supportedMinecraftVersions": ["1.20", "1.21"],
      "supportedPlatforms": ["paper", "spigot"],
      "fileSize": 4831204,
      "fileCount": 1
    }
  ],
  "total": 7
}
Versions are sorted newest first (by publish date, then creation date).
This endpoint returns file metadata only (fileSize, fileCount), never raw storage URLs. Downloads always go through the store’s download endpoints so per-buyer protection (license keys, watermarks, placeholders) is applied.

Errors

HTTPCodeWhen
404NOT_FOUNDNo product with that identifier in this studio.