API DOCUMENTATION

OnThePixel.net exposes a small read-only REST API. It serves the news, the creators and the open positions you can also see on this website, and it is open to anyone who wants to display that data somewhere else. Every endpoint answers with JSON and only supports GET, plus OPTIONS for CORS preflight requests.

Getting started

Base URL: https://onthepixel.net

Authentication

None. Every endpoint on this page is public and read-only — there is no API key, no token and no account you have to sign up for.

CORS

All responses are sent with the header Access-Control-Allow-Origin: *, so the API can be called straight from a browser. Preflight requests are answered by OPTIONS with 204 No Content.

Fair use

There is no hard rate limit, and we would like to keep it that way. Please keep your request rate moderate and cache the responses on your side — the Cache-Control header of each endpoint is a good hint at how often the data actually changes.

Errors

Errors use the same envelope everywhere: a single error property holding a message, sent with the status code listed for the endpoint.

{
  "error": "Not found"
}

News

GET /api/news

Returns the published news articles, newest first by publication date. Each article carries its base text plus a translations object keyed by language code (for example de) with the translated title, short description and content.

Query parameters

ParameterTypeDefaultDescription
limitinteger50Maximum number of articles to return. Values above 100 are capped at 100.
offsetinteger0Number of articles to skip, for paging through the list.
slugstringnoneReturn a single article by its slug instead of a list. limit and offset are ignored in that case.

Example request

https://onthepixel.net/api/news?limit=1&offset=0

Example 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
  }
}

Single item

With slug the response holds a single object instead of an array, and no 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 ..."
      }
    }
  }
}

Status codes

StatusMeaning
200Success.
404Only with slug: no article exists for that slug.
500Unexpected error while reading the data.

Caching and headers

The list response is sent with Cache-Control: public, s-maxage=30, stale-while-revalidate=120. The single-article response is sent without a Cache-Control header. Every response, errors included, carries Access-Control-Allow-Origin: *.

Creators

GET /api/creators

Returns the community creators featured on the site, in the same order they are shown there, each with their Minecraft UUID and their channel links. By default the payload keeps the field names of the legacy CMS so existing consumers keep working.

Query parameters

ParameterTypeDefaultDescription
limitinteger200Maximum number of creators to return. Values above 200 are capped at 200. Ignored when uuid or name is set.
offsetinteger0Number of creators to skip. Ignored when uuid or name is set.
uuidstringnoneReturn a single creator by Minecraft UUID. Accepted with or without dashes.
namestringnoneReturn a single creator by name, matched case-insensitively.
formatstringnoneSet to raw to receive the internal shape (id, name, minecraftUuid, sortOrder, channels) instead of the default CMS shape.

Example request

https://onthepixel.net/api/creators?limit=1&offset=0

Example 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 holds the creator's Minecraft UUID — the avatar services used on this site accept it in place of a name. Icons is the platform key; the keys used by the site are youtube, twitch, tiktok, instagram, x_twitter, discord, whatsapp and website.

Raw format

With format=raw the same creators are returned in the shape they are stored in:

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
  }
}

Single item

With uuid or name the response holds a single object instead of an array, and no meta block. format=raw applies here as well.

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" }
    ]
  }
}

Status codes

StatusMeaning
200Success.
404Only with uuid or name: no creator matched. A uuid that is not a valid Minecraft UUID matches nothing and returns 404 as well.
500Unexpected error while reading the data.

Caching and headers

Successful responses are sent with Cache-Control: public, s-maxage=60, stale-while-revalidate=300. Every response, errors included, carries Access-Control-Allow-Origin: *.

Open positions

GET /api/apply

Returns the positions you can apply for, in the order the apply page shows them, together with their current status. status is either open or closed.

Query parameters

ParameterTypeDefaultDescription
slugstringnoneReturn a single position by its slug, matched case-insensitively.

Example request

https://onthepixel.net/api/apply

Example 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 is the position's address on this site: /apply/<slug>/. descriptionEn and descriptionDe hold the short text the apply page shows on the position's card, in English and German; either one may be an empty string when it has not been written yet.

Single item

With slug the response holds a single object instead of an array.

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."
  }
}

Status codes

StatusMeaning
200Success.
404Only with slug: no position exists for that slug.
500Unexpected error while reading the data.

Caching and headers

Successful responses are sent with Cache-Control: public, s-maxage=30, stale-while-revalidate=120. Every response, errors included, carries Access-Control-Allow-Origin: *.

This endpoint only reports which positions are currently open. Submitting an application is not part of the public API — that happens through the apply pages on this website and requires a signed-in Discord account.