Content API
The manifest
The fields of mod.json and the rules every manifest must follow.
mods/<folder>/mod.json is strict JSON. The SDK writes it for you, but any tool can.
{
"api_version": 1,
"id": "quickstart",
"name": "Quick Start",
"version": "1.0.0",
"description": "A custom dart, bloon and mode.",
"content": [ ... ]
}
Fields
| Field | Required | Rules |
|---|---|---|
api_version | yes | 1 |
id | yes | Unique, lowercase, 1–64 ASCII letters, digits or ._-, starting alphanumeric. Keep it stable between releases. |
name | yes | Nonempty, at most 80 UTF-8 bytes |
version | yes | At most 32 bytes |
description | no | At most 1024 bytes |
content | no | List of content operations (see Content operations) |
on_new_sandbox, settings | no | Optional Sandbox starting values (below) |
Text metadata can't contain control characters. Duplicate IDs are invalid.
Order and conflicts
- Operations inside a mod run in written order.
- Enabled mods compile in sorted ID order.
- The SDK prefixes your content IDs with your mod ID, so names don't collide.
- Two writes to the same exact
setpath conflict.
Validation
Unknown operations, duplicate IDs, missing or misspelled fields, bloon child cycles and conflicting writes are rejected. Definitions are deserialized before use; an invalid content transaction leaves the base data unchanged and reports its error in the client log.
A manifest is limited to 64 KiB and 256 operations.
Optional: Sandbox starting values
A mod can also set the cash and lives a new local Sandbox starts with, and let players adjust them from the mod's settings:
"on_new_sandbox": { "starting_cash": 100000 },
"settings": { "starting_cash": { "min": 0, "max": 1000000, "step": 10000 } }
Values are whole numbers (cash 0–1e12, lives 1–1e9); two enabled mods setting the same value conflict.