---
title: "Get News Post"
method: GET
path: "/api/news/{slug}"
tags: ["news"]
---

# Get News Post

`GET /api/news/{slug}`

## Request

- Base URL: `https://api.getcheapgames.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getcheapgames.com/api/news/{slug}`
- Auth: none declared

One live post: its body as blocks, its games priced in `currency`, three
more to read; the post and those three each in `locale` where it has a
current translation into it. A translated body's mentions are priced as
the English's are: the same games, by the slugs it names them with.

## Path parameters

- `slug` string, required

## Query parameters

- `locale` string, nullable: The reader's language, as the app names it
- `country` string, nullable: ISO country code; decides which keys are region-locked FOR YOU
- `currency` string, nullable: One of EUR, GBP, USD, CAD, CHF, DKK, SEK, NOK, PLN, CZK, HUF, BRL, MXN, CLP, COP, PEN, CRC, UYU, GTQ

## Response `200`

Successful Response

- NewsPostOut: One post: its card, its body as blocks, its rail of games and what to read next.
  - `slug` string, required
  - `title` string, required
  - `dek` string, required
  - `tag` string, required
  - `author` string, required
  - `publishedAt` string, date-time, required
  - `updatedAt` string, date-time, required
  - `readingMinutes` integer, required
  - `cover` NewsCoverOut: A post's picture: `src` a 960-wide WebP, the two `srcset`s the widths in AVIF and WebP (`url 480w, url 960w, url 1600w` for a stored cover; a game's own widths when it is borrowed), and the frame's size for the box a page reserves. Pages crop it to 16:9. Site-relative, like `coverBase`.
    - `src` string, required
    - `srcsetAvif` string, required
    - `srcsetWebp` string, required
    - `width` integer, required
    - `height` integer, required
  - `videoId` string, nullable
  - `lang` string
  - `blocks` object[], required
  - `games` GameCardOut[], required
    - `slug` string, required
    - `title` string, required
    - `releaseYear` integer, nullable, required
    - `releaseDate` string, date, nullable
    - `publisher` string, required
    - `genres` string[], required
    - `steamAppId` integer, nullable
    - `coverBase` string, nullable
    - `priceHistory` integer[]
    - `kind` string
    - `isFree` boolean
    - `freeToKeep` boolean
    - `giveaway` GcgSchemasGiveawayOut: A giveaway on another store than Steam: what the claim button says and where it goes (`catalog.GIVEAWAY_ELSEWHERE`). Steam's own is the game's `free_to_keep`, whose link the client builds from the appid.
      - `platform` string, required
      - `claimUrl` string, nullable
      - `endsAt` string, date-time, nullable
    - `playUrl` string, nullable
    - `edition` string, nullable
    - `franchise` string, nullable
    - `offers` OfferCardOut[]
      - `store` StoreRefOut, required: The store fields a client needs to render an offer. Embedded in each offer rather than referenced by id: it removes a client-side join and a second request, and six short records across a response is nothing next to the round trip it saves.
        - `code` string, required
        - `name` string, required
        - `accent` string, required
        - `kind` string, required
      - `currency` string, required
      - `listPriceCents` integer, nullable, required
      - `feeCents` integer, required
      - `totalCents` integer, required
      - `platform` string, required
      - `inStock` boolean, required
  - `mentions` object
  - `related` NewsCardOut[], required
    - `slug` string, required
    - `title` string, required
    - `dek` string, required
    - `tag` string, required
    - `author` string, required
    - `publishedAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `readingMinutes` integer, required
    - `cover` NewsCoverOut: A post's picture: `src` a 960-wide WebP, the two `srcset`s the widths in AVIF and WebP (`url 480w, url 960w, url 1600w` for a stored cover; a game's own widths when it is borrowed), and the frame's size for the box a page reserves. Pages crop it to 16:9. Site-relative, like `coverBase`.
      - `src` string, required
      - `srcsetAvif` string, required
      - `srcsetWebp` string, required
      - `width` integer, required
      - `height` integer, required
    - `videoId` string, nullable
    - `lang` string

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/getcheapgames/apis/getcheapgames-api.md) · [All operations](https://skmtc.dev/getcheapgames/apis/getcheapgames-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getcheapgames/apis/getcheapgames-api/revisions/57333a690301?raw)
