The public content API lets a user script the things they can already do in the browser: create and edit their assets, mods, servers, articles, communities, collections and groups, using an API key instead of a session.
Base URL: https://api.moddingcommunity.com/api/content. Everything is
versionless and JSON unless noted. The apex address
(https://moddingcommunity.com/api/content) is proxied to the same service and
still works — see the API index.
Manage your keys under Account → API keys.
Reading a public item needs no key at all
GET /api/content/<type> and GET /api/content/<type>/<id> answer with no
Authorization header, for items that are completely public. Everything else
on this surface needs a key. See Reading without a
key.
Reading without a key
The anonymous surface: what answers, what comes back, quotas and CORS.
Items
The content types, the endpoints, the fields each accepts, and bulk semantics.
Relations
Tags, media, releases, links, sources and collection items as sub-resources.
Files
Uploading, attaching to releases, and the size limits.
Content types
| Type | Path | Notes |
|---|---|---|
asset |
/api/content/asset |
Canonical writer |
mod |
/api/content/mod |
Canonical writer |
server |
/api/content/server |
Canonical writer |
community |
/api/content/community |
Canonical writer |
article |
/api/content/article |
Canonical writer |
collection |
/api/content/collection |
Canonical writer |
group |
/api/content/group |
Canonical writer; tags is its only relation |
favorite |
/api/content/favorite |
Simple owned row |
filter |
/api/content/filter |
Simple owned row |
comment |
/api/content/comment |
Simple owned row |
review |
/api/content/review |
Simple owned row |
release |
/api/content/release |
Prefer the relation sub-resource |
media |
/api/content/media |
Prefer the relation sub-resource |
tag |
/api/content/tag |
Staff-only write |
“Canonical writer” means writes run through the same server-side function the website’s own edit forms use — so an API edit performs slug-change redirects, cache busting and relation reconciliation identically to a UI edit.
Two rules worth internalising
Ownership is never taken from the body. The owner column is injected from
the key’s user. Schemas are strict, so sending ownerId — or misspelling any
field — is a 400 rather than a silent no-op.
Hidden items behave as if they do not exist. Unless you own it or you are
staff, reading a hidden item by id returns 404, not 403 — a 403 would
still confirm the id is real. The same applies to its relations.