Itch.io Profile API
Operations related to the authenticated user's profile
Operations related to the authenticated user's profile
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/itch-io-profile-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: Itch.io Auth Profile API
description: The itch.io server-side API provides authenticated access to user profiles, uploaded games, download key validation, purchase lookup, and build version retrieval. Authentication is via API key or short-lived JWT tokens using the Authorization Bearer header. Responses are JSON with snake_case naming and RFC 3339 dates.
version: 1.0.0
contact:
name: Itch.io Support
url: https://itch.io/support
license:
name: Proprietary
url: https://itch.io/docs/legal/terms
servers:
- url: https://api.itch.io
description: Itch.io API Server
security:
- bearerAuth: []
tags:
- name: Profile
description: Operations related to the authenticated user's profile
paths:
/profile:
get:
operationId: getProfile
summary: Get current user profile
description: Returns information about the user the current credentials belong to.
tags:
- Profile
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/GetProfileResponse'
'401':
$ref: '#/components/responses/Unauthorized'
/profile/games:
get:
operationId: listProfileGames
summary: List profile games
description: Lists the games the authenticated user develops (i.e. can edit).
tags:
- Profile
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ListProfileGamesResponse'
'401':
$ref: '#/components/responses/Unauthorized'
/profile/owned-keys:
get:
operationId: listProfileOwnedKeys
summary: List owned download keys
description: Lists the download keys the authenticated account owns.
tags:
- Profile
parameters:
- name: page
in: query
description: Page number for pagination
schema:
type: integer
format: int64
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ListProfileOwnedKeysResponse'
'401':
$ref: '#/components/responses/Unauthorized'
/profile/collections:
get:
operationId: listProfileCollections
summary: List profile collections
description: Lists the collections associated to the authenticated profile.
tags:
- Profile
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ListProfileCollectionsResponse'
'401':
$ref: '#/components/responses/Unauthorized'
/profile/owned-bundles:
get:
operationId: listProfileOwnedBundles
summary: List owned bundles
description: Lists the bundles the current user owns. Each BundleKey has its Bundle field populated. Deduped across multiple purchases of the same bundle; sale bundles are currently excluded; capped at 100.
tags:
- Profile
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ListProfileOwnedBundlesResponse'
'401':
$ref: '#/components/responses/Unauthorized'
/profile/builds:
get:
operationId: listProfileBuilds
summary: List profile builds
description: 'Lists builds across all games the current user develops. The response is normalized: each build carries scalar GameID/UploadID/UserID, and the referenced games/uploads/users are returned once each.'
tags:
- Profile
parameters:
- name: page
in: query
schema:
type: integer
format: int64
- name: per_page
in: query
schema:
type: integer
format: int64
- name: state
in: query
description: 'Filter by build state. One of: live, processing, failed. Empty for all.'
schema:
type: string
enum:
- live
- processing
- failed
- name: include_totals
in: query
description: If set to 1, include aggregate totals in the response.
schema:
type: string
- name: started_build_ids
in: query
description: Comma-separated build IDs in the started state to surface in the listing.
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ListProfileBuildsResponse'
'401':
$ref: '#/components/responses/Unauthorized'
components:
schemas:
ListProfileBuildsResponse:
type: object
properties:
builds:
type: array
items:
$ref: '#/components/schemas/Build'
games:
type: array
items:
$ref: '#/components/schemas/Game'
uploads:
type: array
items:
$ref: '#/components/schemas/Upload'
users:
type: array
items:
$ref: '#/components/schemas/User'
page:
type: integer
format: int64
perPage:
type: integer
format: int64
totals:
type: object
properties:
all:
type: integer
format: int64
live:
type: integer
format: int64
processing:
type: integer
format: int64
failed:
type: integer
format: int64
projectCount:
type: integer
format: int64
Collection:
type: object
description: A curated set of games
properties:
id:
type: integer
format: int64
title:
type: string
description: Human-friendly title (e.g. Couch coop games)
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
gamesCount:
type: integer
format: int64
collectionGames:
type: array
items:
$ref: '#/components/schemas/CollectionGame'
userId:
type: integer
format: int64
user:
$ref: '#/components/schemas/User'
Game:
type: object
description: Represents a page on itch.io; could be a game, tool, comic, etc.
properties:
id:
type: integer
format: int64
description: Site-wide unique identifier
url:
type: string
format: uri
description: Canonical address of the game's page on itch.io
title:
type: string
description: Human-friendly title (may contain any character)
shortText:
type: string
description: Human-friendly short description
type:
type: string
enum:
- default
- flash
- unity
- java
- html
description: Type of the game page
classification:
type: string
enum:
- game
- tool
- assets
- game_mod
- physical_game
- soundtrack
- other
- comic
- book
description: Creator-picked classification
embed:
$ref: '#/components/schemas/GameEmbedData'
coverUrl:
type: string
format: uri
description: Cover URL (might be a GIF)
stillCoverUrl:
type: string
format: uri
description: Non-gif cover URL; only set if the main cover is a GIF
createdAt:
type: string
format: date-time
description: Date the game was created
publishedAt:
type: string
format: date-time
description: Date the game was published; empty if not currently published
minPrice:
type: integer
format: int64
description: Price in cents of a dollar
canBeBought:
type: boolean
description: Are payments accepted?
hasDemo:
type: boolean
description: Does this game have a demo available?
inPressSystem:
type: boolean
description: Is this game part of the itch.io press system?
platforms:
$ref: '#/components/schemas/Platforms'
user:
$ref: '#/components/schemas/User'
userId:
type: integer
format: int64
sale:
$ref: '#/components/schemas/Sale'
viewsCount:
type: integer
format: int64
description: Owner-only field
downloadsCount:
type: integer
format: int64
description: Owner-only field
purchasesCount:
type: integer
format: int64
description: Owner-only field
published:
type: boolean
description: Owner-only field
GetProfileResponse:
type: object
properties:
user:
$ref: '#/components/schemas/User'
BuildFile:
type: object
description: Contains information about a build file (archive, signature, patch, etc.)
properties:
id:
type: integer
format: int64
size:
type: integer
format: int64
state:
type: string
enum:
- created
- uploading
- uploaded
- failed
type:
type: string
enum:
- patch
- archive
- signature
- manifest
- unpacked
subType:
type: string
enum:
- default
- gzip
- optimized
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
Build:
type: object
description: Contains information about a specific build
properties:
id:
type: integer
format: int64
parentBuildId:
type: integer
format: int64
description: Identifier of the build before this one on the same channel, or -1 if initial
state:
type: string
enum:
- started
- queued
- processing
- completed
- failed
uploadId:
type: integer
format: int64
gameId:
type: integer
format: int64
userId:
type: integer
format: int64
version:
type: integer
format: int64
description: Automatically-incremented version number, starting with 1
userVersion:
type: string
description: Developer-specified version string from --userversion
files:
type: array
items:
$ref: '#/components/schemas/BuildFile'
user:
$ref: '#/components/schemas/User'
upload:
$ref: '#/components/schemas/Upload'
game:
$ref: '#/components/schemas/Game'
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
ListProfileOwnedBundlesResponse:
type: object
properties:
bundleKeys:
type: array
items:
$ref: '#/components/schemas/BundleKey'
Bundle:
type: object
description: A collection of games sold together as a single purchase
properties:
id:
type: integer
format: int64
title:
type: string
url:
type: string
format: uri
coverUrl:
type: string
format: uri
gamesCount:
type: integer
format: int64
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
bundleGames:
type: array
items:
$ref: '#/components/schemas/BundleGame'
ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: string
ListProfileCollectionsResponse:
type: object
properties:
collections:
type: array
items:
$ref: '#/components/schemas/Collection'
User:
type: object
description: Represents an itch.io account with basic profile info
properties:
id:
type: integer
format: int64
description: Site-wide unique identifier generated by itch.io
username:
type: string
description: The user's username (used for login)
displayName:
type: string
description: The user's display name; may contain spaces and unicode characters
developer:
type: boolean
description: Has the user opted into creating games?
pressUser:
type: boolean
description: Is the user part of itch.io's press program?
url:
type: string
format: uri
description: The address of the user's page on itch.io
coverUrl:
type: string
format: uri
description: User's avatar URL; may be a GIF
stillCoverUrl:
type: string
format: uri
description: Static version of user's avatar; only set if the main cover URL is a GIF
ListProfileOwnedKeysResponse:
type: object
properties:
page:
type: integer
format: int64
perPage:
type: integer
format: int64
ownedKeys:
type: array
items:
$ref: '#/components/schemas/DownloadKey'
ListProfileGamesResponse:
type: object
properties:
games:
type: array
items:
$ref: '#/components/schemas/Game'
Sale:
type: object
description: Describes a discount for a game
properties:
id:
type: integer
format: int64
gameId:
type: integer
format: int64
rate:
type: number
description: Discount rate in percent; can be negative (reverse sales)
startDate:
type: string
format: date-time
endDate:
type: string
format: date-time
GameEmbedData:
type: object
description: Presentation information for embed games
properties:
gameId:
type: integer
format: int64
width:
type: integer
format: int64
description: Width of the initial viewport in pixels
height:
type: integer
format: int64
description: Height of the initial viewport in pixels
fullscreen:
type: boolean
description: Whether a fullscreen button should be shown
CollectionGame:
type: object
description: Represents a game's membership in a collection
properties:
collectionId:
type: integer
format: int64
collection:
$ref: '#/components/schemas/Collection'
gameId:
type: integer
format: int64
game:
$ref: '#/components/schemas/Game'
position:
type: integer
format: int64
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
blurb:
type: string
userId:
type: integer
format: int64
Platforms:
type: object
description: Describes which OS/architectures a game or upload is compatible with
properties:
windows:
type: string
enum:
- all
- '386'
- amd64
linux:
type: string
enum:
- all
- '386'
- amd64
osx:
type: string
enum:
- all
- '386'
- amd64
Upload:
type: object
description: A downloadable file; may be wharf-enabled for versioned channel-based distribution
properties:
id:
type: integer
format: int64
storage:
type: string
enum:
- hosted
- build
- external
host:
type: string
description: Host if external storage
filename:
type: string
description: Original file name (e.g. Overland_x64.zip)
displayName:
type: string
description: Human-friendly name set by developer
size:
type: integer
format: int64
description: Size of upload in bytes
channelName:
type: string
description: Name of the wharf channel for this upload, if wharf-enabled
build:
$ref: '#/components/schemas/Build'
buildId:
type: integer
format: int64
type:
type: string
enum:
- default
- flash
- unity
- java
- html
- soundtrack
- book
- video
- documentation
- mod
- audio_assets
- graphical_assets
- sourcecode
- other
preorder:
type: boolean
description: Is this upload a pre-order placeholder?
demo:
type: boolean
description: Is this upload a free demo?
platforms:
$ref: '#/components/schemas/Platforms'
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
DownloadKey:
type: object
description: Allows downloading uploads for a game; typically generated at purchase time
properties:
id:
type: integer
format: int64
gameId:
type: integer
format: int64
game:
$ref: '#/components/schemas/Game'
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
ownerId:
type: integer
format: int64
BundleGame:
type: object
description: Represents a game's membership in a bundle
properties:
bundleId:
type: integer
format: int64
bundle:
$ref: '#/components/schemas/Bundle'
gameId:
type: integer
format: int64
game:
$ref: '#/components/schemas/Game'
position:
type: integer
format: int64
minPrice:
type: integer
format: int64
description: Minimum price for this game inside the bundle in cents of a dollar
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
BundleKey:
type: object
description: Records a profile's ownership of a Bundle via a purchase
properties:
id:
type: integer
format: int64
bundleId:
type: integer
format: int64
bundle:
$ref: '#/components/schemas/Bundle'
purchaseId:
type: integer
format: int64
createdAt:
type: string
format: date-time
ownerId:
type: integer
format: int64
responses:
Unauthorized:
description: Authentication is required or credentials are invalid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: API key or JWT token issued by itch.io