Gameshot Selected API

The Selected API from Gameshot — 2 operation(s) for selected.

GitHub OpenAPI

Operations 2

GET /api/v1/selected/snapshot Fetch the current selected-item snapshot, one page at a time #
GET /api/v1/selected/changes Fetch atomic selected-item changes #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/gameshot-games:gameshot-games-selected-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gameshot-games-selected-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Gameshot Games Selected API
  version: 3.0.0
  termsOfService: https://gameshot.games/terms
  description: 'Operations tagged Selected across 2 of this provider''s published API definitions: gameshot-games-openapi.json, openapi-v1.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://gameshot.games
tags:
- name: Selected
paths:
  /api/v1/selected/snapshot:
    get:
      operationId: selectedSnapshot
      summary: Fetch the current selected-item snapshot, one page at a time
      description: 'One-time bootstrap for clients that keep a complete local copy of the selected set. Not a browsing endpoint and not something to poll: page through it once with limit (default 500, max 1000) until hasMore is false, keep the cursor from the FIRST page, then stay current with /api/v1/selected/changes. The full set runs to several thousand items and only grows; fields=minimal keeps the bootstrap small. A widget that just shows today''s picks does not need this at all — use /api/v1/items.'
      parameters:
      - $ref: '#/components/parameters/ActorUserAgent'
      - $ref: '#/components/parameters/IfNoneMatch'
      - name: fields
        in: query
        schema:
          type: string
          enum:
          - default
          - minimal
          default: default
        description: '''minimal'' drops summary and the original-article link, cutting the payload roughly 4x. Prefer it when you only need to know which items are currently selected. On continuation pages the value is locked by the page cursor, so a mirror can never end up half default and half minimal.'
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 1000
          default: 500
      - name: page
        in: query
        schema:
          type: string
        description: Opaque continuation cursor from the previous response's nextPage. Keep requesting pages while hasMore is true; only after the last page should you use cursor against /api/v1/selected/changes. The sync cursor is identical on every page and always refers to the watermark taken on the first page, so items changed mid-pagination are reconciled by the first changes call.
      responses:
        '200':
          description: OK
          headers:
            ETag:
              schema:
                type: string
            Cache-Control:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SelectedSnapshot'
        '304':
          description: Not Modified
          headers:
            ETag:
              schema:
                type: string
            Cache-Control:
              schema:
                type: string
        '400':
          description: Machine-readable problem response.
          headers:
            X-Request-Id:
              description: Support correlation identifier for this failed request.
              schema:
                type: string
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Machine-readable problem response.
          headers:
            X-Request-Id:
              description: Support correlation identifier for this failed request.
              schema:
                type: string
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Machine-readable problem response.
          headers:
            X-Request-Id:
              description: Support correlation identifier for this failed request.
              schema:
                type: string
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Machine-readable problem response.
          headers:
            X-Request-Id:
              description: Support correlation identifier for this failed request.
              schema:
                type: string
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '429':
          description: Machine-readable problem response.
          headers:
            X-Request-Id:
              description: Support correlation identifier for this failed request.
              schema:
                type: string
            Retry-After:
              description: Minimum number of seconds to wait before retrying.
              schema:
                type: integer
                minimum: 1
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Machine-readable problem response.
          headers:
            X-Request-Id:
              description: Support correlation identifier for this failed request.
              schema:
                type: string
            Retry-After:
              description: Minimum number of seconds to wait before retrying.
              schema:
                type: integer
                minimum: 1
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      tags:
      - Selected
    servers:
    - url: https://gameshot.games
  /api/v1/selected/changes:
    get:
      operationId: selectedChanges
      summary: Fetch atomic selected-item changes
      description: 'Adds, edits and removals since your cursor, so a local copy stays correct without re-downloading anything. Apply a page, then save the returned cursor — never the other way round. The cursor is a ledger watermark, not a session: it does not expire on a timer, so a client may go offline for days and resume exactly where it stopped. On 409 snapshot_required, re-bootstrap from /api/v1/selected/snapshot; that response is the only signal that resuming is no longer safe.'
      parameters:
      - $ref: '#/components/parameters/ActorUserAgent'
      - $ref: '#/components/parameters/IfNoneMatch'
      - name: cursor
        in: query
        required: true
        schema:
          type: string
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 100
      responses:
        '200':
          description: OK
          headers:
            ETag:
              schema:
                type: string
            Cache-Control:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SelectedChanges'
        '304':
          description: Not Modified
          headers:
            ETag:
              schema:
                type: string
            Cache-Control:
              schema:
                type: string
        '400':
          description: Machine-readable problem response.
          headers:
            X-Request-Id:
              description: Support correlation identifier for this failed request.
              schema:
                type: string
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Machine-readable problem response.
          headers:
            X-Request-Id:
              description: Support correlation identifier for this failed request.
              schema:
                type: string
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Machine-readable problem response.
          headers:
            X-Request-Id:
              description: Support correlation identifier for this failed request.
              schema:
                type: string
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Machine-readable problem response.
          headers:
            X-Request-Id:
              description: Support correlation identifier for this failed request.
              schema:
                type: string
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '429':
          description: Machine-readable problem response.
          headers:
            X-Request-Id:
              description: Support correlation identifier for this failed request.
              schema:
                type: string
            Retry-After:
              description: Minimum number of seconds to wait before retrying.
              schema:
                type: integer
                minimum: 1
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Machine-readable problem response.
          headers:
            X-Request-Id:
              description: Support correlation identifier for this failed request.
              schema:
                type: string
            Retry-After:
              description: Minimum number of seconds to wait before retrying.
              schema:
                type: integer
                minimum: 1
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      tags:
      - Selected
    servers:
    - url: https://gameshot.games
components:
  parameters:
    ActorUserAgent:
      name: User-Agent
      in: header
      required: false
      description: The client's normal User-Agent (optional; any value works).
      schema:
        type: string
        maxLength: 2048
      example: my-reader/1.0
    IfNoneMatch:
      name: If-None-Match
      in: header
      required: false
      description: Previously received ETag for this exact URL. A match returns 304 without a response body.
      schema:
        type: string
  schemas:
    Attribution:
      type: object
      description: Machine-readable Gameshot provenance for traceability. Retain it where technically feasible. Attribution alone is not authorization; see the public terms.
      required:
      - name
      - url
      properties:
        name:
          type: string
        url:
          type: string
          format: uri
    SelectedRemove:
      type: object
      required:
      - op
      - changedAt
      - id
      properties:
        op:
          const: remove
        changedAt:
          type: string
          format: date-time
        id:
          type: string
    SelectedUpsertMinimal:
      type: object
      required:
      - op
      - changedAt
      - item
      properties:
        op:
          const: upsert
        changedAt:
          type: string
          format: date-time
        item:
          $ref: '#/components/schemas/ItemMinimal'
    SelectedChanges:
      type: object
      required:
      - schemaVersion
      - fields
      - cursor
      - count
      - hasMore
      - changes
      properties:
        schemaVersion:
          const: 1
        fields:
          type: string
          enum:
          - default
          - minimal
        cursor:
          type: string
        count:
          type: integer
          minimum: 0
        hasMore:
          type: boolean
        changes:
          type: array
      oneOf:
      - properties:
          fields:
            const: default
          changes:
            type: array
            items:
              oneOf:
              - $ref: '#/components/schemas/SelectedUpsert'
              - $ref: '#/components/schemas/SelectedRemove'
      - properties:
          fields:
            const: minimal
          changes:
            type: array
            items:
              oneOf:
              - $ref: '#/components/schemas/SelectedUpsertMinimal'
              - $ref: '#/components/schemas/SelectedRemove'
    SelectedSnapshot:
      type: object
      required:
      - schemaVersion
      - asOf
      - fields
      - cursor
      - count
      - hasMore
      - nextPage
      - items
      properties:
        schemaVersion:
          const: 1
        asOf:
          type: string
          format: date-time
        fields:
          type: string
          enum:
          - default
          - minimal
        cursor:
          type: string
        count:
          type: integer
          minimum: 0
        hasMore:
          type: boolean
        nextPage:
          type:
          - string
          - 'null'
        items:
          type: array
      oneOf:
      - properties:
          fields:
            const: default
          items:
            type: array
            items:
              $ref: '#/components/schemas/Item'
      - properties:
          fields:
            const: minimal
          items:
            type: array
            items:
              $ref: '#/components/schemas/ItemMinimal'
    SelectedUpsert:
      type: object
      required:
      - op
      - changedAt
      - item
      properties:
        op:
          const: upsert
        changedAt:
          type: string
          format: date-time
        item:
          $ref: '#/components/schemas/Item'
    ItemMinimal:
      type: object
      required:
      - id
      - title
      - source
      - links
      - publishedAt
      - discoveredAt
      - category
      - score
      - selected
      properties:
        id:
          type: string
        title:
          type: string
        source:
          type: object
          required:
          - name
          properties:
            name:
              type: string
        links:
          type: object
          required:
          - aihot
          properties:
            aihot:
              type: string
              format: uri
        publishedAt:
          type:
          - string
          - 'null'
          format: date-time
        discoveredAt:
          type: string
          format: date-time
        category:
          type:
          - string
          - 'null'
          examples:
          - release
          - industry
          - leak
          - review
          - esports
          - deal
          description: 'Current values: release, industry, leak, review, esports, deal. Clients must tolerate future string values.'
        score:
          type:
          - number
          - 'null'
          minimum: 0
          maximum: 100
        selected:
          type: boolean
    Problem:
      type: object
      required:
      - type
      - title
      - status
      - detail
      - code
      - requestId
      properties:
        type:
          type: string
        title:
          type: string
        status:
          type: integer
        detail:
          type: string
        code:
          type: string
        requestId:
          type: string
    Item:
      type: object
      required:
      - id
      - title
      - originalTitle
      - summary
      - source
      - links
      - publishedAt
      - discoveredAt
      - category
      - score
      - selected
      properties:
        id:
          type: string
        title:
          type: string
        originalTitle:
          type:
          - string
          - 'null'
        summary:
          type:
          - string
          - 'null'
        source:
          type: object
          required:
          - name
          properties:
            name:
              type: string
        links:
          type: object
          required:
          - aihot
          - original
          properties:
            aihot:
              type: string
              format: uri
            original:
              type: string
              format: uri
        publishedAt:
          type:
          - string
          - 'null'
          format: date-time
        discoveredAt:
          type: string
          format: date-time
        category:
          type:
          - string
          - 'null'
          examples:
          - release
          - industry
          - leak
          - review
          - esports
          - deal
          description: 'Current values: release, industry, leak, review, esports, deal. Clients must tolerate future string values.'
        score:
          type:
          - number
          - 'null'
          minimum: 0
          maximum: 100
        selected:
          type: boolean
        reason:
          type:
          - string
          - 'null'
          description: Reader-facing recommendation reason, the same text shown as 推荐理由 on the website. Always present on /api/v1/items; null when the item is not selected or has no reader-facing reason. Selected snapshot and changes do not include this field yet.
        attribution:
          $ref: '#/components/schemas/Attribution'
externalDocs:
  description: Machine-readable OpenAPI document
  url: https://gameshot.games/openapi-v1.json
x-refined-from:
- gameshot-games-openapi.json
- openapi-v1.json