Documentation
How browsing, publishing, and the API work.
Browsing and search
Full-text search covers the executable payload of a set, not just its title: the seed prompt, every step, and the markdown guide are all indexed. Results can be narrowed with facets and reordered without leaving the page.
- Tags: a tag facet shows each tag with its result count.
- Author: filter to community or official sets.
- Sort: order by most recent, most liked, or most viewed.
- Pagination: results page in a fixed page size rather than infinite-scrolling.
Anatomy of an instruction set
A set is three parts plus a block of metadata, not a single JSON blob: a seed prompt, an ordered list of steps, and a markdown guide.
| Field | Meaning | Limit |
|---|---|---|
| seed_prompt | First prompt Zoodl sends to the model | ≤2000 characters |
| steps | Ordered instructions Zoodl runs after the seed prompt | ≤100 steps |
| body_md | Markdown guide for the person running the set | ≤50,000 characters |
| title | Display name | ≤200 characters |
| summary | Short description shown in listings | ≤500 characters |
| slug | URL-safe identifier | lowercase-hyphen, ≤80 characters |
| platform | Target operating system | macos, windows, linux, or web |
| tags | Searchable labels | lowercase, digits and hyphens, ≤40 characters each |
| version | Release version of the set | semver, x.y.z |
| github_url | Linked source repository | must start with https://github.com/ |
| prerequisites | Setup required before running the set | ≤20 items, ≤200 characters each |
Each step also carries an optional label (≤200 characters) and an optional marker: a visual annotation drawn over a screenshot, with a shape of circle, box, arrow, or none, an optional direction, and a width and height expressed as 0 to 1 fractions.
A set also carries finer environment targeting: category_slug, target_app, os_min_version, recommended_model, min_app_version, and system_prompt_extra (≤2000 characters).
Creating a set
Signed-in users create a set from /templates/new. It is not a single JSON body: the form walks through each part separately.
- Seed prompt: the first prompt Zoodl sends to the model.
- Steps: add, reorder, and annotate the ordered instructions.
- Guide: write the markdown walkthrough for humans.
- Metadata: title, summary, slug, category, platform, tags, version, and an optional GitHub link.
A set saves as a draft until you choose to publish it, so there is no pressure to get every field right on the first pass.
Lifecycle
Every set has three independent settings, not one visibility flag.
| Axis | Values |
|---|---|
| status | draft, published, archived |
| visibility | public, private |
| moderation_status | active, flagged, removed |
Only a set that is published, public, and active shows up in the public catalog. Any other combination, including every draft and every private set, is hidden from everyone except its author. An author always sees all of their own sets, in any state, on their profile.
Accounts
- Anonymous: browse, search, and open sets in Zoodl. Recent views are stored in the browser's localStorage, not on the server.
- Signed in: everything anonymous can do, plus publishing, liking, and a server-side history.
- Official: accounts the Zoodl team marks official; their published sets are labeled official across the catalog.
API
The public REST API lives under /api/v1 on the API host. Interactive OpenAPI docs are served at /docs on that same host.
/api/v1/auth register, login, session /api/v1/templates list, create, read, update, publish /api/v1/tags tag facet with counts /api/v1/users public profiles and their templates /api/v1/me/history per-user view and like history
The API host is separate from this marketplace site and depends on where it's deployed, so no hostname is hardcoded here.