個人データのダウンロード URL を発行
const url = 'https://game.retrogather.com/rest/v1/exportMyData';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"dataset":"library","format":"json","includeHistory":true,"platformIds":[1],"genreId":1,"title":"example","releaseDateFrom":"2026-04-15","releaseDateTo":"2026-04-15","attributes":["example"],"buyPlace":"example","ratingFrom":1,"ratingTo":1,"buyDateFrom":"2026-04-15","buyDateTo":"2026-04-15","buyPriceFrom":1,"buyPriceTo":1,"sortBy":"buyDate","sortOrder":"asc","wishPlace":"example","wishDateFrom":"2026-04-15","wishDateTo":"2026-04-15","wishDateOverdue":"overdue","wishPriceFrom":1,"wishPriceTo":1,"statuses":["PLANNED"],"consoleIds":["example"],"playStartDateFrom":"2026-04-15","playStartDateTo":"2026-04-15","playEndDateFrom":"2026-04-15","playEndDateTo":"2026-04-15","clearTargetDateFrom":"2026-04-15","clearTargetDateTo":"2026-04-15","clearTargetOverdue":"overdue","totalPlayTimeFrom":1,"totalPlayTimeTo":1,"name":"example","unrated":true,"purposeTypes":["LIBRARY"],"collectionTypes":["INDIVIDUAL"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://game.retrogather.com/rest/v1/exportMyData \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "dataset": "library", "format": "json", "includeHistory": true, "platformIds": [ 1 ], "genreId": 1, "title": "example", "releaseDateFrom": "2026-04-15", "releaseDateTo": "2026-04-15", "attributes": [ "example" ], "buyPlace": "example", "ratingFrom": 1, "ratingTo": 1, "buyDateFrom": "2026-04-15", "buyDateTo": "2026-04-15", "buyPriceFrom": 1, "buyPriceTo": 1, "sortBy": "buyDate", "sortOrder": "asc", "wishPlace": "example", "wishDateFrom": "2026-04-15", "wishDateTo": "2026-04-15", "wishDateOverdue": "overdue", "wishPriceFrom": 1, "wishPriceTo": 1, "statuses": [ "PLANNED" ], "consoleIds": [ "example" ], "playStartDateFrom": "2026-04-15", "playStartDateTo": "2026-04-15", "playEndDateFrom": "2026-04-15", "playEndDateTo": "2026-04-15", "clearTargetDateFrom": "2026-04-15", "clearTargetDateTo": "2026-04-15", "clearTargetOverdue": "overdue", "totalPlayTimeFrom": 1, "totalPlayTimeTo": 1, "name": "example", "unrated": true, "purposeTypes": [ "LIBRARY" ], "collectionTypes": [ "INDIVIDUAL" ] }'Export / エクスポート: issue a 15-minute bearer URL for a personal dataset (backup as JSON or CSV). Physical copy details are out of scope. One game per row (playRecords with includeHistory: one row per play record). Does not return the file body. library / wishlist / playRecords / collections / consoles accept the same filters and sort as the matching list tools; filters are stored in the token and reapplied on download. The response is a download URL; direct=1 style inline bodies are not provided.
Plans: FREE / LIGHT / PREMIUM. Scopes: library:read, play:read, games:read. FREE: not available: includeHistory, consoleIds, name, unrated, purposeTypes, collectionTypes; narrowed: buyDateFrom, buyDateTo, buyPriceFrom, buyPriceTo (see x-rgg-plan-differences). LIGHT: not available: includeHistory, purposeTypes, collectionTypes; narrowed: name (see x-rgg-plan-differences).
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
(LIGHT+: tags, consoles) (PREMIUM: collections, customGames)
PlayRecords only. true exports every play cycle (a game can appear more than once) instead of the latest record per game. (PREMIUM)
Platform IDs (OR)
Genre ID from listGenres. A root ID matches the game’s genreId or genreSubId. A non-root ID matches titleKana using that genre’s taxonomy key.
Title, reading, or edition name
Release date from (inclusive, YYYY-MM-DD). Games without a release date are excluded.
Release date to (inclusive, YYYY-MM-DD). Games without a release date are excluded.
Attribute IDs or labels (AND)
Purchase place (substring, case-insensitive)
Minimum rating (1-5)
Maximum rating (1-5)
YYYY-MM-DD
YYYY-MM-DD
Sort field allowed by the selected dataset (same values as the matching list tool)
Asc or desc
Store being searched (substring, case-insensitive)
Planned purchase date from
Planned purchase date to
Overdue: wishDate is set and before today. not_overdue: no wishDate, or wishDate is today or later.
Target price from (JPY)
Target price to (JPY)
Play statuses (OR)
Played console IDs (OR) (LIGHT+)
YYYY-MM-DD
YYYY-MM-DD
YYYY-MM-DD
YYYY-MM-DD
YYYY-MM-DD
YYYY-MM-DD
Overdue: unfinished (PLANNED/PLAYING/PAUSED) with clearTargetDate before today. COMPLETED/DROPPED are never overdue.
Total play time from (minutes)
Total play time to (minutes)
Collection name (substring, case-insensitive)
Only consoles with no rating
Responses
Section titled “ Responses ”Tool result JSON (no MCP envelope). Delete previews also return 200 with confirmToken.
object
object
object
object
Example
{ "format": "json"}Invalid_input (arguments, broken JSON body)
Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.
object
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
Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.
object
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
Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.
object
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
Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.
object
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.
Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.
object
Examplegenerated
{ "error": "example", "code": "example", "message": "example", "retryable": true, "retryAfterSec": 1, "requestId": "example", "resetAt": "example", "remaining": 1, "scopes": [ "example" ], "upgradeUrl": "example"}Headers
Section titled “Headers”Seconds
Unexpected server failure. Retrying the same call will not help.
Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.
object
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.
Entry errors (auth, routing, quota) use error; tool errors use code and message. Check retryable when present.
object
Examplegenerated
{ "error": "example", "code": "example", "message": "example", "retryable": true, "retryAfterSec": 1, "requestId": "example", "resetAt": "example", "remaining": 1, "scopes": [ "example" ], "upgradeUrl": "example"}Headers
Section titled “Headers”Seconds
