List your builds on MineMev
MineMev shows posts from other schematic sites next to its own, in one search and one public API. If you run a site with litematics or schematics, you can expose a small JSON API and we will index it. Your files stay on your servers, and every post links back to your page.
Open a ticket on our DiscordHow it works
- We read your list endpoint. New posts are picked up about every 15 minutes, and the whole catalogue is re-read once a day.
- We read details and files per post. A post's details and files are refreshed about once a week.
- We store a copy of the metadata only. Titles, descriptions, tags, versions and image URLs are stored. Files are not: downloads go straight to the URLs you return.
- We remove posts you remove. A post is deleted only after it has been missing from several complete crawls in a row, so a bad deploy on your side won't wipe your listings.
If your API already returns the shapes below, adding you is a small config entry. If it doesn't, we can write an adapter for your existing API. Tell us in the ticket.
Endpoints
Every endpoint is a public GET that returns JSON over HTTPS. Paths are only examples; send us yours.
| Endpoint | Example path | |
|---|---|---|
| Search / list | /api/search | Required |
| Details | /api/details/{id} | Required |
| Files | /api/files/{id} | Required |
| Tags | /api/tags | Optional |
| Preview image | /api/preview/{id} | Optional |
{id} is your own post id. It must never change for a post, because it is how we match a post between crawls.
Search / list
This endpoint is used to crawl your catalogue page by page.
Query parameters
| Param | Meaning |
|---|---|
page | Page number, starting at 1. Required |
pagesize | Posts per page. Any fixed size works if you tell us what it is. |
sort | newest (default), oldest, popular, downloads. We need newest at least, so new posts appear on page 1. |
search, tag, versions | Optional filters. Search runs on our copy, so these are nice to have but not needed. |
Parameter names don't have to match: we can map pagesize to limit, newest to createdAt, and so on.
Response
{
"posts": [
{
"uuid": "a1b2c3",
"post_name": "Iron farm 1.21",
"description": "Plain-text summary, up to ~255 characters",
"images": ["https://yoursite.com/img/a1b2c3/1.webp"],
"thumbnail_url": "https://yoursite.com/img/a1b2c3/thumb.webp",
"tags": ["iron_farm", "farm"],
"versions": ["1.20.4", "1.21"],
"User": "author_name",
"user_picture": "https://yoursite.com/avatars/author.png",
"yt_link": "dQw4w9WgXcQ",
"downloads": 1234,
"published_at": "2026-05-01T18:30:00Z",
"url_redirect": "https://yoursite.com/post/a1b2c3"
}
],
"total_items": 4210,
"total_pages": 421,
"page": 1
}
total_pages tells us when a full crawl is finished, so it must be correct. Without it, nothing you delete is ever removed on our side.
Details
GET /api/details/{id} returns one post with everything in the list item, plus:
{
"uuid": "a1b2c3",
"post_name": "Iron farm 1.21",
"description": "Full description as plain text",
"description_md": "## Rates\n**1,800 iron/h** in a 1.21 world.",
"creators": "author_name, co_author",
"images": ["..."],
"tags": ["iron_farm", "farm"],
"versions": ["1.21"],
"User": "author_name",
"user_picture": "https://...",
"yt_link": "dQw4w9WgXcQ",
"downloads": 1234,
"published_at": "2026-05-01T18:30:00Z",
"url_redirect": "https://yoursite.com/post/a1b2c3"
}
An unknown or deleted post must return HTTP 404. Don't return 200 with null or an empty object.
Files
GET /api/files/{id} returns the downloadable files of a post as a list. If the post has no files, return [].
[
{
"id": 991,
"default_file_name": "iron_farm_v2.litematic",
"file": "https://yoursite.com/download/991",
"file_size": 48213,
"versions": ["1.21"],
"downloads": 310,
"file_type": "litematic"
}
]
fileis a direct, public download URL. We link to it and never re-host the file.file_sizeis in bytes. Use0if you don't know it.file_typeis one oflitematic,schem,schematic,nbt,zip.
Files from other sites are shown on MineMev as external. They are not scanned by our VirusTotal check, so make sure your own uploads are safe.
Rules for the data
- Dates are ISO 8601 in UTC with a single
Z:2026-05-01T18:30:00Z. Millisecond epochs work too. descriptionis plain text. No HTML. Put formatting indescription_md(Markdown). Raw HTML in it is removed.- URLs are absolute and use HTTPS. This applies to images, avatars, files and
url_redirect. - Ids are stable. Never reuse an id for a different post.
- Missing values use
null,[]or0. Don't leave out the key or invent a placeholder. yt_linkcan be a YouTube id or a full YouTube or Bilibili URL.- Rate limits: we send a few requests per minute. If you need a key or an allow-listed IP, tell us in the ticket.
Using MineMev's API
Our own API returns posts from every connected site in the same shapes as above. It is public and free to use.
/api/v2/vendors | Connected sites |
/api/v2/search?search=&tag=&versions=&sort=&page=&pagesize= | Search all sites |
/api/v2/search/{vendor}/ | Search one site |
/api/v2/details/{vendor}/{id}/ | Post details |
/api/v2/files/{vendor}/{id}/ | Post files |
/api/v2/preview/{vendor}/{id}/ | Redirects to the preview image |
/api/v2/tags | Tag list |
Get listed
Open a ticket on the MineMev Discord and include:
- your site's name and URL,
- the URLs of your search, details and files endpoints, plus a sample post id,
- your page size and sort options,
- a contact for when your API changes.
We'll check your responses, set up the connection, and tell you when your posts are live.
Open a ticket on Discord