コンテンツにスキップ

複数のゲームをまとめて同定

POST
/rest/v1/searchGamesBatch
curl --request POST \
--url https://game.retrogather.com/rest/v1/searchGamesBatch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "rows": [ { "query": "example", "janCode": "example", "modelNumber": "example", "externalId": { "provider": "example", "id": "example" }, "platformIds": [ 1 ], "releaseDateFrom": "2026-04-15", "releaseDateTo": "2026-04-15" } ], "perRowLimit": 1, "fields": [ "externalLinks" ] }'

Games / ゲーム一括同定: identify up to 20 games in one call, e.g. rows from a spreadsheet or list the user gave you. Each row needs one identifying term (query, janCode, modelNumber, or externalId) and may narrow with platformIds or release dates. Each row returns up to perRowLimit candidates (default 3, max 5) ordered like searchGames, with matchedBy / exact / edition. No paging: if a row is ambiguous or not found, ask the user or call searchGames for that row with more conditions. Show the resolved list to the user before adding games (addToLibraryBatch).

Plans: FREE / LIGHT / PREMIUM. Scopes: games:read.

Media typeapplication/json
object
rows
required

One row per game to identify. Results come back in the same order with the same index.

Array<object>
>= 1 items <= 20 items
object
query

Title, reading, or abbreviation (same as searchGames query).

string
janCode
string
modelNumber

Partial match, hyphens and case ignored.

string
externalId

Exact external id. provider is one of igdb, asin, media (alias mediaArts), gps, catalog; other providers are not matched as an identifier.

object
provider
string
id
string
platformIds
Array<integer>
releaseDateFrom

YYYY-MM-DD, inclusive.

string format: date
releaseDateTo

YYYY-MM-DD, inclusive.

string format: date
perRowLimit

Candidates per row. Default 3.

integer
>= 1 <= 5
fields

Optional game groups. Default [] (core fields only) to keep 20 rows small.

Array<string>
Allowed values: externalLinks editions supportGenre specs

Tool result JSON (no MCP envelope). Delete previews also return 200 with confirmToken.

Media typeapplication/json
Any of:
object
rows
required
Array<object>
object
index
required
integer
items
required
Array<object>
object
gameId
required
integer
title
string
titleEn
Array<string>
platform
object
platformId
required
integer
name
string
key
additional properties
any
publisher
object
companyId
required
integer
name
string
key
additional properties
any
genre
object
genreId
required
integer
name
string
key
additional properties
any
genreSub
object
genreId
required
integer
name
string
key
additional properties
any
releaseDate
string
custom
boolean
editions
Array<object>
object
gameEditionId
integer
title
string
modelNumber
Array<string>
releaseDate
string
price
number
janCode
string
key
additional properties
any
specs
object
modelNumber
Array<string>
price
number
janCode
string
key
additional properties
any
matchedBy

JanCode / modelNumber / externalId / gameId: identifier. title / titleEn: official title. alias: hiragana reading or nickname, not the official title. Multi-term queries report the weakest field.

string
Allowed values: janCode modelNumber externalId gameId title titleEn alias
exact

True when the whole query equals the matched value. For alias it means the query equals a reading or nickname, not the official title.

boolean
edition

True when an edition’s JAN or model number matched; specs may differ from the query.

boolean
key
additional properties
any
totalCount
required
integer
returnedCount
required
integer
hasMore
required
boolean
key
additional properties
any
hint
string
key
additional properties
any
Example
{
"rows": [
{
"items": [
{
"matchedBy": "janCode"
}
]
}
]
}

Invalid_input (arguments, broken JSON body)

Media typeapplication/json

Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.

object
error
string
code
string
message
string
retryable
boolean
retryAfterSec
integer
requestId
string
resetAt
string
remaining
integer
scopes
Array<string>
upgradeUrl
string
key
additional properties
any
Examplegenerated
{
"error": "example",
"code": "example",
"message": "example",
"retryable": true,
"retryAfterSec": 1,
"requestId": "example",
"resetAt": "example",
"remaining": 1,
"scopes": [
"example"
],
"upgradeUrl": "example"
}

Missing or invalid API key

Media typeapplication/json

Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.

object
error
string
code
string
message
string
retryable
boolean
retryAfterSec
integer
requestId
string
resetAt
string
remaining
integer
scopes
Array<string>
upgradeUrl
string
key
additional properties
any
Examplegenerated
{
"error": "example",
"code": "example",
"message": "example",
"retryable": true,
"retryAfterSec": 1,
"requestId": "example",
"resetAt": "example",
"remaining": 1,
"scopes": [
"example"
],
"upgradeUrl": "example"
}

Insufficient_scope, plan_required, or access_suspended

Media typeapplication/json

Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.

object
error
string
code
string
message
string
retryable
boolean
retryAfterSec
integer
requestId
string
resetAt
string
remaining
integer
scopes
Array<string>
upgradeUrl
string
key
additional properties
any
Examplegenerated
{
"error": "example",
"code": "example",
"message": "example",
"retryable": true,
"retryAfterSec": 1,
"requestId": "example",
"resetAt": "example",
"remaining": 1,
"scopes": [
"example"
],
"upgradeUrl": "example"
}

Target or tool not found

Media typeapplication/json

Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.

object
error
string
code
string
message
string
retryable
boolean
retryAfterSec
integer
requestId
string
resetAt
string
remaining
integer
scopes
Array<string>
upgradeUrl
string
key
additional properties
any
Examplegenerated
{
"error": "example",
"code": "example",
"message": "example",
"retryable": true,
"retryAfterSec": 1,
"requestId": "example",
"resetAt": "example",
"remaining": 1,
"scopes": [
"example"
],
"upgradeUrl": "example"
}

Burst or daily quota exceeded. See resetAt.

Media typeapplication/json

Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.

object
error
string
code
string
message
string
retryable
boolean
retryAfterSec
integer
requestId
string
resetAt
string
remaining
integer
scopes
Array<string>
upgradeUrl
string
key
additional properties
any
Examplegenerated
{
"error": "example",
"code": "example",
"message": "example",
"retryable": true,
"retryAfterSec": 1,
"requestId": "example",
"resetAt": "example",
"remaining": 1,
"scopes": [
"example"
],
"upgradeUrl": "example"
}
Retry-After
integer

Seconds

Unexpected server failure. Retrying the same call will not help.

Media typeapplication/json

Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.

object
error
string
code
string
message
string
retryable
boolean
retryAfterSec
integer
requestId
string
resetAt
string
remaining
integer
scopes
Array<string>
upgradeUrl
string
key
additional properties
any
Examplegenerated
{
"error": "example",
"code": "example",
"message": "example",
"retryable": true,
"retryAfterSec": 1,
"requestId": "example",
"resetAt": "example",
"remaining": 1,
"scopes": [
"example"
],
"upgradeUrl": "example"
}

Temporary failure or maintenance. Retry after Retry-After.

Media typeapplication/json

Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.

object
error
string
code
string
message
string
retryable
boolean
retryAfterSec
integer
requestId
string
resetAt
string
remaining
integer
scopes
Array<string>
upgradeUrl
string
key
additional properties
any
Examplegenerated
{
"error": "example",
"code": "example",
"message": "example",
"retryable": true,
"retryAfterSec": 1,
"requestId": "example",
"resetAt": "example",
"remaining": 1,
"scopes": [
"example"
],
"upgradeUrl": "example"
}
Retry-After
integer

Seconds