Gameshot Selected API
The Selected API from Gameshot — 2 operation(s) for selected.
The Selected API from Gameshot — 2 operation(s) for selected.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/gameshot-games:gameshot-games-selected-api"
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.
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: 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