API-DOKUMENTATION
OnThePixel.net stellt eine kleine, ausschließlich lesende REST-API bereit. Sie liefert die News, die Creators und die offenen Positionen, die du auch auf dieser Website siehst, und steht allen offen, die diese Daten anderswo anzeigen möchten. Jeder Endpunkt antwortet mit JSON und unterstützt nur GET sowie OPTIONS für CORS-Preflight-Anfragen.
Erste Schritte
Basis-URL: https://onthepixel.net
Authentifizierung
Keine. Alle hier aufgeführten Endpunkte sind öffentlich und lesend — es gibt keinen API-Key, kein Token und keinen Account, für den du dich registrieren müsstest.
CORS
Alle Antworten werden mit dem Header Access-Control-Allow-Origin: * ausgeliefert, die API lässt sich also direkt aus dem Browser aufrufen. Preflight-Anfragen beantwortet OPTIONS mit 204 No Content.
Faire Nutzung
Es gibt kein hartes Rate-Limit, und das soll auch so bleiben. Bitte halte deine Anfragerate moderat und cache die Antworten auf deiner Seite — der Cache-Control-Header des jeweiligen Endpunkts ist ein guter Anhaltspunkt dafür, wie oft sich die Daten tatsächlich ändern.
Fehler
Fehler nutzen überall dieselbe Struktur: eine einzelne error-Eigenschaft mit einer Meldung, ausgeliefert mit dem beim Endpunkt genannten Statuscode.
{
"error": "Not found"
}News
GET /api/news
Liefert die veröffentlichten News-Artikel, die neuesten zuerst, sortiert nach Veröffentlichungsdatum. Jeder Artikel enthält seinen Basistext sowie ein translations-Objekt, das nach Sprachcode (zum Beispiel de) die übersetzten Werte für Titel, Kurzbeschreibung und Inhalt enthält.
Query-Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
| limit | integer | 50 | Maximale Anzahl zurückgegebener Artikel. Werte über 100 werden auf 100 begrenzt. |
| offset | integer | 0 | Anzahl der zu überspringenden Artikel, für das Blättern durch die Liste. |
| slug | string | keiner | Gibt statt einer Liste einen einzelnen Artikel anhand seines Slugs zurück. limit und offset werden in diesem Fall ignoriert. |
Beispiel-Request
https://onthepixel.net/api/news?limit=1&offset=0
Beispiel-Response
{
"data": [
{
"id": 12,
"title": "Season 4 is live",
"slug": "season-4-is-live",
"short_description": "New maps, new kits and a fresh leaderboard.",
"content": "The new season is here ...",
"image_url": "https://cdn.onthepixel.net/2f1c8e5a-4b17-4a55-9f0e-1d2c3b4a5e6f",
"published_at": "2026-04-18",
"author": "OnThePixel",
"created_at": "2026-04-18T09:12:44.512Z",
"updated_at": "2026-04-18T09:12:44.512Z",
"translations": {
"de": {
"title": "Season 4 ist live",
"short_description": "Neue Maps, neue Kits und eine frische Bestenliste.",
"content": "Die neue Season ist da ..."
}
}
}
],
"meta": {
"total": 42,
"limit": 1,
"offset": 0
}
}Einzelner Eintrag
Mit slug enthält die Antwort ein einzelnes Objekt statt eines Arrays und keinen meta-Block.
https://onthepixel.net/api/news?slug=season-4-is-live
{
"data": {
"id": 12,
"title": "Season 4 is live",
"slug": "season-4-is-live",
"short_description": "New maps, new kits and a fresh leaderboard.",
"content": "The new season is here ...",
"image_url": "https://cdn.onthepixel.net/2f1c8e5a-4b17-4a55-9f0e-1d2c3b4a5e6f",
"published_at": "2026-04-18",
"author": "OnThePixel",
"created_at": "2026-04-18T09:12:44.512Z",
"updated_at": "2026-04-18T09:12:44.512Z",
"translations": {
"de": {
"title": "Season 4 ist live",
"short_description": "Neue Maps, neue Kits und eine frische Bestenliste.",
"content": "Die neue Season ist da ..."
}
}
}
}Statuscodes
| Status | Bedeutung |
|---|---|
| 200 | Erfolg. |
| 404 | Nur mit slug: Zu diesem Slug existiert kein Artikel. |
| 500 | Unerwarteter Fehler beim Lesen der Daten. |
Caching und Header
Die Listen-Antwort wird mit Cache-Control: public, s-maxage=30, stale-while-revalidate=120 ausgeliefert. Die Antwort für einen einzelnen Artikel wird ohne Cache-Control-Header ausgeliefert. Jede Antwort, auch Fehler, trägt Access-Control-Allow-Origin: *.
Creators
GET /api/creators
Liefert die auf der Website vorgestellten Community-Creators in derselben Reihenfolge, in der sie dort erscheinen, jeweils mit ihrer Minecraft-UUID und ihren Kanal-Links. Standardmäßig behält die Antwort die Feldnamen des alten CMS bei, damit bestehende Konsumenten weiter funktionieren.
Query-Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
| limit | integer | 200 | Maximale Anzahl zurückgegebener Creators. Werte über 200 werden auf 200 begrenzt. Wird ignoriert, wenn uuid oder name gesetzt ist. |
| offset | integer | 0 | Anzahl der zu überspringenden Creators. Wird ignoriert, wenn uuid oder name gesetzt ist. |
| uuid | string | keiner | Gibt einen einzelnen Creator anhand der Minecraft-UUID zurück. Mit oder ohne Bindestriche akzeptiert. |
| name | string | keiner | Gibt einen einzelnen Creator anhand des Namens zurück, Groß- und Kleinschreibung wird ignoriert. |
| format | string | keiner | Auf raw gesetzt, liefert die interne Struktur (id, name, minecraftUuid, sortOrder, channels) statt der Standard-CMS-Struktur. |
Beispiel-Request
https://onthepixel.net/api/creators?limit=1&offset=0
Beispiel-Response
{
"data": [
{
"Minecraft_username": "8667ba71-b85a-4004-af54-457a9734eed7",
"Name": "ExampleCreator",
"Platforms": [
{ "Icons": "youtube", "Link": "https://youtube.com/@examplecreator" },
{ "Icons": "twitch", "Link": "https://twitch.tv/examplecreator" }
]
}
],
"meta": {
"total": 12,
"limit": 1,
"offset": 0
}
}Minecraft_username enthält die Minecraft-UUID des Creators — die auf dieser Website genutzten Avatar-Dienste akzeptieren sie anstelle eines Namens. Icons ist der Plattform-Schlüssel; die von der Website genutzten Schlüssel sind youtube, twitch, tiktok, instagram, x_twitter, discord, whatsapp und website.
Raw-Format
Mit format=raw werden dieselben Creators in der Struktur zurückgegeben, in der sie gespeichert sind:
https://onthepixel.net/api/creators?format=raw&limit=1
{
"data": [
{
"id": 3,
"name": "ExampleCreator",
"minecraftUuid": "8667ba71-b85a-4004-af54-457a9734eed7",
"sortOrder": 0,
"channels": [
{
"id": 7,
"platform": "youtube",
"url": "https://youtube.com/@examplecreator"
}
]
}
],
"meta": {
"total": 12,
"limit": 1,
"offset": 0
}
}Einzelner Eintrag
Mit uuid oder name enthält die Antwort ein einzelnes Objekt statt eines Arrays und keinen meta-Block. format=raw gilt hier ebenfalls.
https://onthepixel.net/api/creators?name=ExampleCreator
{
"data": {
"Minecraft_username": "8667ba71-b85a-4004-af54-457a9734eed7",
"Name": "ExampleCreator",
"Platforms": [
{ "Icons": "youtube", "Link": "https://youtube.com/@examplecreator" }
]
}
}Statuscodes
| Status | Bedeutung |
|---|---|
| 200 | Erfolg. |
| 404 | Nur mit uuid oder name: Es wurde kein Creator gefunden. Eine uuid, die keine gültige Minecraft-UUID ist, trifft auf nichts zu und liefert ebenfalls 404. |
| 500 | Unerwarteter Fehler beim Lesen der Daten. |
Caching und Header
Erfolgreiche Antworten werden mit Cache-Control: public, s-maxage=60, stale-while-revalidate=300 ausgeliefert. Jede Antwort, auch Fehler, trägt Access-Control-Allow-Origin: *.
Offene Positionen
GET /api/apply
Liefert die Positionen, auf die man sich bewerben kann, in der Reihenfolge der Bewerbungsseite und mit ihrem aktuellen Status. status ist entweder open oder closed.
Query-Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
| slug | string | keiner | Gibt eine einzelne Position anhand ihres Slugs zurück, Groß- und Kleinschreibung wird ignoriert. |
Beispiel-Request
https://onthepixel.net/api/apply
Beispiel-Response
{
"data": [
{
"id": 1,
"name": "Builder",
"slug": "builder",
"status": "open",
"sortOrder": 0,
"descriptionEn": "Create stunning worlds and game maps for our Minecraft server.",
"descriptionDe": "Erschaffe beeindruckende Welten und Spielkarten für unseren Minecraft-Server."
},
{
"id": 2,
"name": "Supporter",
"slug": "supporter",
"status": "closed",
"sortOrder": 1,
"descriptionEn": "Help players with questions and handle support tickets.",
"descriptionDe": "Hilf Spielern bei Fragen und bearbeite Support-Tickets."
},
{
"id": 3,
"name": "Java Developer",
"slug": "developer",
"status": "closed",
"sortOrder": 2,
"descriptionEn": "Develop plugins and features for our Minecraft server.",
"descriptionDe": "Entwickle Plugins und Funktionen für unseren Minecraft-Server."
}
]
}slug ist die Adresse der Position auf dieser Website: /apply/<slug>/. descriptionEn und descriptionDe enthalten den kurzen Text, den die Bewerbungsseite auf der Karte der Position zeigt, auf Englisch und auf Deutsch; beide können ein leerer String sein, solange sie nicht gepflegt wurden.
Einzelner Eintrag
Mit slug enthält die Antwort ein einzelnes Objekt statt eines Arrays.
https://onthepixel.net/api/apply?slug=builder
{
"data": {
"id": 1,
"name": "Builder",
"slug": "builder",
"status": "open",
"sortOrder": 0,
"descriptionEn": "Create stunning worlds and game maps for our Minecraft server.",
"descriptionDe": "Erschaffe beeindruckende Welten und Spielkarten für unseren Minecraft-Server."
}
}Statuscodes
| Status | Bedeutung |
|---|---|
| 200 | Erfolg. |
| 404 | Nur mit slug: Zu diesem Slug existiert keine Position. |
| 500 | Unerwarteter Fehler beim Lesen der Daten. |
Caching und Header
Erfolgreiche Antworten werden mit Cache-Control: public, s-maxage=30, stale-while-revalidate=120 ausgeliefert. Jede Antwort, auch Fehler, trägt Access-Control-Allow-Origin: *.
Dieser Endpunkt gibt nur Auskunft darüber, welche Positionen gerade offen sind. Das Einreichen einer Bewerbung ist nicht Teil der öffentlichen API — das läuft über die Bewerbungsseiten dieser Website und setzt einen angemeldeten Discord-Account voraus.