Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/joshuaKnauber/serpens_addon_market/llms.txt

Use this file to discover all available pages before exploring further.

This page documents the full structure of an addon entry in addons.json. Entries are JSON objects appended to the addons array by the Discord bot whenever a community member submits a new addon through the marketplace workflow. Each entry represents a single Blender addon — either uploaded directly as a .zip file or linked from an external hosting platform such as Gumroad, BlenderMarket, or GitHub.

Root Structure

{
  "addons": [ ...AddonEntry ]
}

Fields

name
string
required
The unique display name of the addon as it appears in the marketplace. Used by the bot to identify the entry when the submitter requests an update or removal. Example: "QuickFrame".
description
string
required
A short, human-readable description of what the addon does, shown in the marketplace listing. Example: "Quickly add a frame in node editors (Supports Serpens editor as well) Keymap: Ctrl+F".
category
string
required
The Blender addon category this addon belongs to. This is a free-form string set by the submitter and mirrors the bl_category value used in Blender addon metadata. Common values include "Node Editor", "3D View", "Render", "Physics", "Material", and "Sequencer".
author
string
required
The display name of the addon’s creator. This is entered by the submitter during the upload flow and does not need to match their Discord username.
blender_version
array of integers
required
The minimum Blender version required to run this addon, expressed as a three-element array [major, minor, patch]. Example: [2, 80, 0] means Blender 2.80.0 or later.
addon_version
array of integers
required
The version of the addon itself, expressed as a three-element array [major, minor, patch]. Example: [1, 2, 0] means version 1.2.0. Incremented by the submitter when they push an update through the bot.
external
boolean
required
Indicates where the addon file is hosted. Set to false when the submitter uploads a .zip directly through the Discord bot (the file is then re-hosted on Discord CDN). Set to true when the addon is distributed through an external URL such as Gumroad, BlenderMarket, or GitHub.
url
string
required
The download URL for the addon. For direct uploads (external: false) this is a Discord CDN attachment URL. For external addons (external: true) this is the submitter-provided link to the external distribution page or file.
blend
boolean
required
Whether an example .blend file is included with this addon listing. When true, a separate blend_url field will be populated with the location of that file.
blend_url
string
URL pointing to the example .blend file, hosted on Discord CDN. This field is only meaningful when blend is true; it is stored as an empty string "" when no blend file was provided.
price
string
required
A free-form price string set by the submitter. Common values include "Free", "$5", "$10", and "8$". Older entries that predate the price field may store null or an empty string.
user
integer
required
The Discord user ID (snowflake) of the member who submitted the addon. Used by the bot to authenticate update and removal requests — only the original submitter can modify their own entries.
serpens_version
integer
Indicates which major version of Serpens this addon was built with. Valid values are 2 (Serpens 2.x) and 3 (Serpens 3.x). This field was added later in the marketplace’s history; older entries that predate the field are implicitly compatible with Serpens 2.x.

Example Entry

The following is a real entry from addons.json for QuickUV, a direct-upload addon that includes an example .blend file:
{
    "name": "QuickUV",
    "description": "Pi Menu for some common UV Editing to make the workflow a little less cluttered and faster, Use with Ctrl+Shift+E on both 3D View and Image Editor",
    "category": "3D View, Image Editor",
    "author": "Brennan",
    "blender_version": [2, 80, 0],
    "addon_version": [1, 1, 0],
    "external": false,
    "url": "https://cdn.discordapp.com/attachments/785132940278366260/862581802895147018/quickuv_1.1.0.zip",
    "price": "",
    "blend": true,
    "blend_url": "https://cdn.discordapp.com/attachments/785132940278366260/862581992243593267/QuickUV_Serpens.blend",
    "user": 148734666659069952
}
And here is a Serpens 3 addon distributed externally via Gumroad:
{
    "name": "Warps VGroup Remover",
    "description": "This will remove Vertex groups on any slected objects you select (works on Meshes) (will be in 3D_viewport Npanel)",
    "category": "Mesh",
    "author": "WarpedMethods9",
    "blender_version": [3, 0, 0],
    "addon_version": [1, 0, 0],
    "external": true,
    "url": "https://warpedmethods9.gumroad.com/l/zznjb",
    "blend": true,
    "blend_url": "https://cdn.discordapp.com/attachments/785132940278366260/978154474357030912/Warps_VGroup_Remover.blend",
    "price": "Free",
    "user": 318855117304627201,
    "serpens_version": 3
}

Direct Upload vs External Hosting

The external field controls how the addon file is stored and accessed:
Modeexternal valueurl points toFile accepted by bot
Direct uploadfalseDiscord CDN attachment URL.zip file uploaded in the Discord conversation
External hostingtrueGumroad, BlenderMarket, GitHub, or any public URLNo file upload — URL is pasted as text
When external is false and the addon includes a blend example (blend: true), the bot will also prompt the submitter to upload the .blend file, which is then stored separately on the same Discord CDN channel.
The first entry in the addons array is a placeholder record with "name": "placeholder" and "user": 0. This entry exists to pre-initialize the data file structure and should be ignored when reading or displaying marketplace listings. Any consumer of addons.json should filter out entries where user equals 0.

Build docs developers (and LLMs) love