コンテンツにスキップ

カスタムゲームを作成

POST
/rest/v1/addCustomGame
curl --request POST \
--url https://game.retrogather.com/rest/v1/addCustomGame \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "title": "example", "titleKana": "example", "titleEn": "example", "releaseDate": "2026-04-15", "platformId": 1, "modelNumber": "example", "price": 1, "publisherId": 1, "genreId": 1, "genreSubId": 1, "janCode": "example", "igdbId": "example", "igdbCoverId": "example", "mediaId": "example", "asin": "example", "wikipediaUrl": "https://example.com", "catalogId": "example" }'

PREMIUM. Custom game / カスタムゲーム: create your own game entry. Only when the user asks to register a game RGG does not cover: run searchGames first (also try a hiragana reading) so you do not duplicate the public master. platformId and publisherId may be public or your custom entries.

Plans: PREMIUM. Scopes: games:write.

Media typeapplication/json
object
title
required
string
titleKana

Title reading in hiragana. Used for hiragana search and support genre matching.

string
titleEn
string
releaseDate
required

YYYY-MM-DD.

string format: date
platformId
required

Public platformId from listPlatforms, or one of your custom platforms.

integer
modelNumber
string
price

Retail price in JPY.

integer
publisherId
required

Public companyId from listCompanies, or one of your custom companies.

integer
genreId
required

Main genre only (listGenres rows without parentGenreId). Support genres are matched from titleKana and cannot be set.

integer
genreSubId

Main genre only (listGenres rows without parentGenreId). Support genres are matched from titleKana and cannot be set.

integer
janCode
string
igdbId

IGDB game id.

string
igdbCoverId

IGDB cover image id (image_id).

string
mediaId

Media Arts Database id (e.g. M724583).

string
asin

Amazon ASIN for the purchase link. Write-only: not returned except by exportMyData customGames.

string
<= 50 characters
wikipediaUrl

Http(s) URL. Send null to clear it on update.

string | null format: uri
<= 2000 characters
catalogId
string
Examplegenerated
{
"title": "example",
"titleKana": "example",
"titleEn": "example",
"releaseDate": "2026-04-15",
"platformId": 1,
"modelNumber": "example",
"price": 1,
"publisherId": 1,
"genreId": 1,
"genreSubId": 1,
"janCode": "example",
"igdbId": "example",
"igdbCoverId": "example",
"mediaId": "example",
"asin": "example",
"wikipediaUrl": "https://example.com",
"catalogId": "example"
}

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

Media typeapplication/json
Any of:
object
item
required
object
gameId
required
integer
revision
string
updatedAt
string
createdAt
string
key
additional properties
any
key
additional properties
any
Example
{
"code": "plan_required",
"status": "PLANNED",
"items": [
{
"status": "added"
}
]
}

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

Already_exists or revision_conflict (stale revision: re-read, then retry)

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