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

ParameterTypStandardBeschreibung
limitinteger50Maximale Anzahl zurückgegebener Artikel. Werte über 100 werden auf 100 begrenzt.
offsetinteger0Anzahl der zu überspringenden Artikel, für das Blättern durch die Liste.
slugstringkeinerGibt 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

StatusBedeutung
200Erfolg.
404Nur mit slug: Zu diesem Slug existiert kein Artikel.
500Unerwarteter 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

ParameterTypStandardBeschreibung
limitinteger200Maximale Anzahl zurückgegebener Creators. Werte über 200 werden auf 200 begrenzt. Wird ignoriert, wenn uuid oder name gesetzt ist.
offsetinteger0Anzahl der zu überspringenden Creators. Wird ignoriert, wenn uuid oder name gesetzt ist.
uuidstringkeinerGibt einen einzelnen Creator anhand der Minecraft-UUID zurück. Mit oder ohne Bindestriche akzeptiert.
namestringkeinerGibt einen einzelnen Creator anhand des Namens zurück, Groß- und Kleinschreibung wird ignoriert.
formatstringkeinerAuf 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

StatusBedeutung
200Erfolg.
404Nur 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.
500Unerwarteter 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

ParameterTypStandardBeschreibung
slugstringkeinerGibt 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

StatusBedeutung
200Erfolg.
404Nur mit slug: Zu diesem Slug existiert keine Position.
500Unerwarteter 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.