STYGION API
Server status, releases, documentation, modpack performance and your own account, over plain HTTP. Every operation is also a tool for AI assistants over MCP, under the same name. This reference is generated from the OpenAPI document the API publishes, so it lists exactly what the API answers.
Base address
Every path below starts here. Answers are JSON; anything a person reads follows the accept-language header.
https://stygion.eu/api/v1 Sign-in and scopes
An operation with no scope answers anybody. Some of them answer a signed-in person differently, and a few need a sign-in at all (they say so with 401).
An operation with a scope acts on the account that asks. On this website it uses your sign-in; outside it, the way in is MCP, where you sign in with Discord and the assistant can do only what your account can.
We do not issue API keys for other projects. If you need one, write to us and say what you are building.
Errors
Every error, from every operation, has the same shape. The code is stable and meant for programs; the message is for people and follows accept-language.
| Field | Type and meaning |
|---|---|
code always | string Stable and machine readable. |
message always | string In the reader's language. |
requestId | string Quote this when reporting a problem. |
MCP for AI assistants
Connect an assistant to this address. It signs in with OAuth 2.1 through Discord, and sees only the tools your account may use. Each tool is named after the operation here: the reference page of an operation shows the same call as a tool.
https://mcp.stygion.eu/mcp/v1 OpenAPI
OpenAPI 3.1, API version dev.
Other APIs
- The local API of a Keystone server
Runs on every server with Keystone, not with us. Its own keys, scopes and OpenAPI.
- Play buttons for your website
An address and an image that install your pack and join your server.
Operations 83 operations
Worlds 4 operations
- GET Which of our worlds are up, and how many people are on them
/status/worlds - GET What a launcher needs to put somebody in a world: the pack, its version and the address
/worlds/{key}/join - GET How a world's season is going: what the whole server has finished together, who leads each craft, which chapters nobody has touched, and the teams
/worlds/{key}/leaders - GET One player's season on one world: their progress, chapter by chapter
/worlds/{key}/players/{player}
Releases and updates 9 operations
- GET Every released version, newest first
/releases - GET One version, with everything that changed in it
/releases/{id} - GET The highest channel each product actually has a build in
/status/products - GET Everything there is to download for one product, with sizes and systems in words
/updates/builds - GET What changed between two versions, in the reader's language
/updates/changelog - GET The file itself
/updates/download - GET The newest build worth offering a visitor, and where to get it
/updates/latest - GET Whether a desktop client should update, and the manifest if it should
/updates/update-check - GET The same question for a self-hosted build, which ships as a tarball
/updates/update-check-server
Documentation 5 operations
- GET One documentation page as the markdown it is written in, in the reader's language where we have it
/docs/markdown/{slug} - GET The tree of the documentation, as this reader is allowed to see it
/docs/outline - GET One documentation page, rendered, in the reader's language where we have it
/docs/pages/{slug} - POST Did this page help
/docs/rating - GET Search the documentation in both languages at once
/docs/search
Articles and artwork 6 operations
- GET What we have written, newest first, in the reader's language
/articles - GET One article, with everything it says
/articles/{slug} - GET The newest of everything we write and everything we release, in one list
/news - GET What supporting the project pays for, and the ways to do it
/support - GET Our artwork, in the sizes that were actually rendered
/wallpapers - GET One wallpaper, so it can be linked to rather than only browsed
/wallpapers/{id}
Product catalogue 1 operation
- GET What a product page says the thing does
/catalog/{product}/features
Modpack performance 5 operations
- GET Processor models to pick from, with the single-thread speed we have measured for each — from the empty tick of the runs people send, never from somebody else's score table
/perf/cpus - GET What one modpack costs a server, on a machine like yours: how many players packs like it held, what gave out first, and the runs behind every number with how far off each one is
/perf/open - GET Search CurseForge and Modrinth for a modpack by name, to ask what it costs a server
/perf/packs - GET What one set of mods costs a server: how many players it holds, what gives out first, and what each mod in it costs — every number with the count of runs behind it, and no number at all where there are not enough
/perf/packs/{fingerprint} - POST Send one measurement of a modpack — a load test from a server, a benchmark from a client
/perf/runs
Play buttons 12 operations
- GET What one Play button says, for drawing the picture of it
/play/badge - POST A Play button's page was opened (view) or its button pressed (click)
/play/count - GET The Play buttons you have made, and how often each was used
/play/links - POST Makes a Play button for a server, to put on its own website
/play/links - POST Delete one of your Play buttons and its numbers for good
/play/links/delete - POST Changes a Play button that is already on somebody's page — where it goes, what it is called, which pack it installs
/play/links/edit - POST Takes one of your Play buttons down
/play/links/revoke - POST What a Play link means: which server, which pack
/play/open - GET A Play button's own page: the server, the pack, and how the server is doing when it is listed
/play/page - POST Report a Play button or a listed server: spam, scam, offensive, broken or other
/play/report - GET The public list of servers: name, description, address, pack, whether it is online and how many are playing
/play/servers - GET One button's views, clicks and launches: totals and the last thirty days
/play/stats
Feedback and tickets 11 operations
- GET The public half of the queue: what people asked us for, in the open
/feedback - POST Files a report
/feedback - GET One item with its whole conversation, if you may read it
/feedback/{id} - PATCH Changes what an item says or who may read it
/feedback/{id} - DELETE Takes an item back entirely
/feedback/{id} - POST Closes a ticket for good: the conversation is cut into a transcript that stays with it and its Discord channel is deleted
/feedback/{id}/close - POST Puts a picture on a report
/feedback/{id}/files - GET A file from a report, to whoever may read the report
/feedback/{id}/files/{fileId} - POST Adds a message to the conversation
/feedback/{id}/replies - GET What was said in a closed ticket, as plain text
/feedback/{id}/transcript - POST I want this too
/feedback/{id}/vote
STYGION ID and sign-in 17 operations
- POST Deletes the account that asked, for good
/account/delete - GET Everywhere this account is signed in
/account/devices - POST Lets a program in, as you
/account/devices/approve - POST The program collecting the token it was allowed, once
/account/devices/claim - POST A downloaded program asking to be connected to an account
/account/devices/link - POST Signs one device out
/account/devices/revoke - POST Signs out every device on this account, the launcher included
/account/devices/revoke-all - GET What a program is asking to be allowed, before you allow it
/account/devices/waiting - GET Everything we hold about the account that asked, in one object
/account/export - GET Which providers are joined to the account that asked
/account/links - POST Starts joining another provider to the account that asked
/account/links/begin - POST Takes a provider off the account, unless it is the last way in
/account/links/remove - POST Starts signing in with a provider and says where to send the person
/auth/begin - POST Finishes signing in and hands back a session
/auth/complete - POST Signs out the device that asked, and only that one
/auth/sign-out - GET The account making the request, or 401 for a stranger
/me - GET Somebody's picture, fetched from the provider they linked rather than by the reader's browser
/people/{id}/avatar
Notifications 4 operations
- GET What you have been told about, newest first
/notifications - POST Marks one as read, or all of them when no id is given
/notifications/read - GET What you want to hear about
/notifications/settings - PUT Switches kinds of notification off, or back on
/notifications/settings
Friends and chat 8 operations
- GET What you and one friend have said to each other
/social/chat - POST Sends one message to a friend
/social/chat - GET Who you know, whether they are on, and what they are playing
/social/friends - POST Asks somebody to be friends, or accepts if they asked first
/social/friends - POST Accepts a request somebody sent you
/social/friends/accept - POST Ends a friendship, declines a request, or takes back one you sent
/social/friends/remove - GET Finds somebody by name so you can ask to be friends
/social/people - PUT Tells your friends what you are playing, or that you stopped
/social/presence