Duke Yin's Technology database

IGDB API Documents

from: https://api-docs.igdb.com/

Getting Started

One of the principles behind IGDB.com is accessibility of data. We wish to share the data with anyone who wants to build cool video game oriented websites, apps and services.

This means that you are not only contributing to the value of IGDB but to thousands of other projects as well. We are looking forward to see what exciting game related projects you come up with. Happy coding!

For a high level overview of our juicy data, check out the endpoints section.START USING US NOW, IT’S FREE!

Account Creation

In order to use our API, you must have a Twitch Account.

  1. Sign Up with Twitch for a free account
  2. Ensure you have Two Factor Authentication enabled
  3. Register your application in the Twitch Developer Portal
  4. Manage your newly created application
  5. Generate a Client Secret by pressing [New Secret]
  6. Take note of the Client ID and Client Secret

The IGDB.com API is free for non-commercial usage under the terms of the Twitch Developer Service Agreement.Note: We offer commercial partnership for users with a commercial need in their projects. For more details on that process please reach out to partner@igdb.com

Authentication

Now that you have a Client ID and Client Secret you will be authenticating as a Twitch Developer using Oauth2.
Detailed information can be found in the Twitch Developer Docs.

Make a  POST  request to  https://id.twitch.tv/oauth2/token  with the following query string parameters, substituting your Client ID and Client Secret accordingly.

client_id=Client ID

client_secret=Client Secret

grant_type=client_credentials

Example

If your Client ID is  abcdefg12345  and your Client Secret is  hijklmn67890 , the whole url should look like the following.

POST: https://id.twitch.tv/oauth2/token?client_id=abcdefg12345&client_secret=hijklmn67890&grant_type=client_credentials

The response from this will be a json object containing the access token and the number of second until the token expires.

{
"access_token": "access12345token",
"expires_in": 5587808,
"token_type": "bearer"
}

Note: The expires_in shows you the number of seconds before the access_token will expire and must be refreshed.

Requests

  • Most of the requests to the API will use the  POST  method
  • The base URL is: https://api.igdb.com/v4
  • You define which endpoint you wish to query by appending  /{endpoint name}  to the base URL eg. https://api.igdb.com/v4/games
  • Include your Client ID and Access Token in the HEADER of your request so that your headers look like the following.
    • Take special care of the capitalisation.  Bearer  should be hard-coded infront of your  access_token
Client-ID: Client ID
Authorization: Bearer access_token
  • You use the  BODY  of your request to specify the fields you want to retrieve as well as any other filters, sorting etc

Example

If your Client ID is  abcdefg12345  and your access_token is  access12345token , a simple request to get information about 10 games would be.

POST: https://api.igdb.com/v4/games
Client-ID: abcdefg12345
Authorization: Bearer access12345token
Body: "fields *;"

Note: If you are trying to make these requests via the Browser you will run into CORS errors as the API does not allow requests directly from browsers. You can read more about CORS and how to go around this issue in the CORS Proxy section

More Examples

You can find some examples requests here

Rate Limits

There is a rate limit of 4 requests per second. If you go over this limit you will receive a response with status code  429 Too Many Requests .

You are able to have up to 8 open requests at any moment in time. This can occur if requests take longer than 1 second to respond when multiple requests are being made.

Wrappers

Get setup quickly by using one of these wrappers!

Apicalypse

Third Party

Examples

It’s recommended to try out your queries in an API viewer like Postman or Insomnia before using code. This helps you find problems a lot sooner!

Postman setup example

A very basic example to retrieve the name for 10 games.

https://api.igdb.com/v4/games/
fields name; limit 10;

Get all information from a specific game

1942, is the ID of a game.

https://api.igdb.com/v4/games/

fields *; where id = 1942;

Exclude irrelevant data from your query

Remove alternative_name from your result query

https://api.igdb.com/v4/platforms/

fields *;
exclude alternative_name;

Get all games from specific genres

Notice how you can comma separate multiple IDs (8, 9, and 11). You can do this with games, companies and anything else. Also note that when you have multiple IDs they have to be surrounded by a parenthesis. Single ids can be queried both with and without the parenthesis.

https://api.igdb.com/v4/genres/

fields *; where id = (8,9,11);

Count total games that have a rating higher than 75

https://api.igdb.com/v4/games/count

where rating > 75;

Order by rating

https://api.igdb.com/v4/games/

fields name,rating; sort rating desc;

Coming soon games for Playstation 4

https://api.igdb.com/v4/release_dates/

fields *; where game.platforms = 48 & date > 1538129354; sort date asc;

1538129354: Is the timestamp in milliseconds of 28/09/2018 (This you need to generate yourself) 48 Is the platform id of Playstation 4.

Recently released games for Playstation 4

fields *; where game.platforms = 48 & date < 1538129354; sort date desc;

Note: “where game.platforms = 48 & date > 1538129354” It is possible to use either & (AND) or | (OR) to combine filters to better define the behaviour of your query

Search, return certain fields.

https://api.igdb.com/v4/games/

search "Halo"; fields name,release_date.human;

https://api.igdb.com/v4/games/

fields name, involved_companies; search "Halo";

Search games but exclude versions (editions)

https://api.igdb.com/v4/games/

fields name, involved_companies; search "Assassins Creed"; where version_parent = null;

This will return search results with ID and name of the game but exclude editions such as “Collectors Edition”.

Searching all endpoints

Note: Search is now also it’s own endpoint. Search is usable on: Characters, Collections, Games, Platforms, and Themes

The example below searches for “Sonic the Hedgehog” which will find the Character Sonic, the collection Soninc the Hedgehog. And of course also several games with names containing Sonic the Hedgehog.

https://api.igdb.com/v4/search

fields *; search "sonic the hedgehog"; limit 50;

Get versions (editions) of a game

https://api.igdb.com/v4/game_versions/

fields game.name,games.name; where game = 28540;

The resulting object will contain all games that are a version of the game with id 28540

Get the parent game for a version

https://api.igdb.com/v4/games/

fields version_parent.*; where id = 39047;

The resulting object will contain all main games

Get all games that are playstation 4 exclusives

fields name,category,platforms;
where category = 0 & platforms = 48;

Get all games that are only released on playstation 4 AND PC

fields name,category,platforms;
where category = 0 & platforms = {48,6};

Endpoints

Age Rating

from requests import post
response = post('https://api.igdb.com/v4/age_ratings', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields category,checksum,content_descriptions,rating,rating_cover_url,synopsis;'})
print ("response: %s" % str(response.json()))

Age Rating according to various rating organisations

Request Path

https://api.igdb.com/v4/age_ratings

fieldtypedescription
categoryCategory EnumThe organization that has issued a specific rating
checksumuuidHash of the object
content_descriptionsArray of Age Rating Content Description IDs
ratingRating EnumThe title of an age rating
rating_cover_urlStringThe url for the image of a age rating
synopsisStringA free text motivating a rating

Age Rating Enums

category

namevalue
ESRB1
PEGI2
CERO3
USK4
GRAC5
CLASS_IND6
ACB7

rating

namevalue
Three1
Seven2
Twelve3
Sixteen4
Eighteen5
RP6
EC7
E8
E109
T10
M11
AO12
CERO_A13
CERO_B14
CERO_C15
CERO_D16
CERO_Z17
USK_018
USK_619
USK_1220
USK_1621
USK_1822
GRAC_ALL23
GRAC_Twelve24
GRAC_Fifteen25
GRAC_Eighteen26
GRAC_TESTING27
CLASS_IND_L28
CLASS_IND_Ten29
CLASS_IND_Twelve30
CLASS_IND_Fourteen31
CLASS_IND_Sixteen32
CLASS_IND_Eighteen33
ACB_G34
ACB_PG35
ACB_M36
ACB_MA1537
ACB_R1838
ACB_RC39

Alternative Name

from requests import post
response = post('https://api.igdb.com/v4/alternative_names', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,comment,game,name;'})
print ("response: %s" % str(response.json()))

Alternative and international game titles

Request Path

https://api.igdb.com/v4/alternative_names

fieldtypedescription
checksumuuidHash of the object
commentStringA description of what kind of alternative name it is (Acronym, Working title, Japanese title etc)
gameReference ID for GameThe game this alternative name is associated with
nameStringAn alternative name

Artwork

from requests import post
response = post('https://api.igdb.com/v4/artworks', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields alpha_channel,animated,checksum,game,height,image_id,url,width;'})
print ("response: %s" % str(response.json()))

official artworks (resolution and aspect ratio may vary)

Request Path

https://api.igdb.com/v4/artworks

fieldtypedescription
alpha_channelboolean
animatedboolean
checksumuuidHash of the object
gameReference ID for GameThe game this artwork is associated with
heightIntegerThe height of the image in pixels
image_idStringThe ID of the image used to construct an IGDB image link
urlStringThe website address (URL) of the item
widthIntegerThe width of the image in pixels

Age Rating Content Description

from requests import post
response = post('https://api.igdb.com/v4/age_rating_content_descriptions', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields category,checksum,description;'})
print ("response: %s" % str(response.json()))

Age Rating Descriptors

Request Path

https://api.igdb.com/v4/age_rating_content_descriptions

fieldtypedescription
categoryCategory Enum
checksumuuidHash of the object
descriptionString

Age Rating Content Description Enums

category

namevalue
ESRB_alcohol_reference1
ESRB_animated_blood2
ESRB_blood3
ESRB_blood_and gore4
ESRB_cartoon_violence5
ESRB_comic_mischief6
ESRB_crude_humor7
ESRB_drug_reference8
ESRB_fantasy_violence9
ESRB_intense_violence10
ESRB_language11
ESRB_lyrics12
ESRB_mature_humor13
ESRB_nudity14
ESRB_partial_nudity15
ESRB_real_gambling16
ESRB_sexual_content17
ESRB_sexual_themes18
ESRB_sexual_violence19
ESRB_simulated_gambling20
ESRB_strong_language21
ESRB_strong_lyrics22
ESRB_strong_sexual content23
ESRB_suggestive_themes24
ESRB_tobacco_reference25
ESRB_use_of alcohol26
ESRB_use_of drugs27
ESRB_use_of tobacco28
ESRB_violence29
ESRB_violent_references30
ESRB_animated_violence31
ESRB_mild_language32
ESRB_mild_violence33
ESRB_use_of drugs and alcohol34
ESRB_drug_and alcohol reference35
ESRB_mild_suggestive themes36
ESRB_mild_cartoon violence37
ESRB_mild_blood38
ESRB_realistic_blood and gore39
ESRB_realistic_violence40
ESRB_alcohol_and tobacco reference41
ESRB_mature_sexual themes42
ESRB_mild_animated violence43
ESRB_mild_sexual themes44
ESRB_use_of alcohol and tobacco45
ESRB_animated_blood and gore46
ESRB_mild_fantasy violence47
ESRB_mild_lyrics48
ESRB_realistic_blood49
PEGI_violence50
PEGI_sex51
PEGI_drugs52
PEGI_fear53
PEGI_discrimination54
PEGI_bad_language55
PEGI_gambling56
PEGI_online_gameplay57
PEGI_in_game_purchases58
CERO_love59
CERO_sexual_content60
CERO_violence61
CERO_horror62
CERO_drinking_smoking63
CERO_gambling64
CERO_crime65
CERO_controlled_substances66
CERO_languages_and others67
GRAC_sexuality68
GRAC_violence69
GRAC_fear_horror_threatening70
GRAC_language71
GRAC_alcohol_tobacco_drug72
GRAC_crime_anti_social73
GRAC_gambling74
CLASS_IND_violencia75
CLASS_IND_violencia_extrema76
CLASS_IND_conteudo_sexual77
CLASS_IND_nudez78
CLASS_IND_sexo79
CLASS_IND_sexo_explicito80
CLASS_IND_drogas81
CLASS_IND_drogas_licitas82
CLASS_IND_drogas_ilicitas83
CLASS_IND_linguagem_impropria84
CLASS_IND_atos_criminosos85

Character Mug Shot

from requests import post
response = post('https://api.igdb.com/v4/character_mug_shots', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields alpha_channel,animated,checksum,height,image_id,url,width;'})
print ("response: %s" % str(response.json()))

Images depicting game characters

Request Path

https://api.igdb.com/v4/character_mug_shots

fieldtypedescription
alpha_channelboolean
animatedboolean
checksumuuidHash of the object
heightIntegerThe height of the image in pixels
image_idStringThe ID of the image used to construct an IGDB image link
urlStringThe website address (URL) of the item
widthIntegerThe width of the image in pixels

Character

from requests import post
response = post('https://api.igdb.com/v4/characters', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields akas,checksum,country_name,created_at,description,games,gender,mug_shot,name,slug,species,updated_at,url;'})
print ("response: %s" % str(response.json()))

Video game characters

Request Path

https://api.igdb.com/v4/characters

fieldtypedescription
akasArray of StringsAlternative names for a character
checksumuuidHash of the object
country_nameStringA characters country of origin
created_atUnix Time StampDate this was initially added to the IGDB database
descriptionStringA text describing a character
gamesArray of Game IDs
genderGender Enum
mug_shotReference ID for Character Mug ShotAn image depicting a character
nameString
slugStringA url-safe, unique, lower-case version of the name
speciesSpecies Enum
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
urlStringThe website address (URL) of the item

Character Enums

gender

namevalue
Male0
Female1
Other2

species

namevalue
Human1
Alien2
Animal3
Android4
Unknown5

Collection

from requests import post
response = post('https://api.igdb.com/v4/collections', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,games,name,slug,updated_at,url;'})
print ("response: %s" % str(response.json()))

Collection, AKA Series

Request Path

https://api.igdb.com/v4/collections

fieldtypedescription
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
gamesArray of Game IDsThe games that are associated with this collection
nameStringUmbrella term for a collection of games
slugStringA url-safe, unique, lower-case version of the name
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
urlStringThe website address (URL) of the item

Company

from requests import post
response = post('https://api.igdb.com/v4/companies', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields change_date,change_date_category,changed_company_id,checksum,country,created_at,description,developed,logo,name,parent,published,slug,start_date,start_date_category,updated_at,url,websites;'})
print ("response: %s" % str(response.json()))

Video game companies. Both publishers & developers

Request Path

https://api.igdb.com/v4/companies

fieldtypedescription
change_dateUnix Time StampThe data when a company got a new ID
change_date_categoryChange Date Category Enum
changed_company_idReference ID for CompanyThe new ID for a company that has gone through a merger or restructuring
checksumuuidHash of the object
countryIntegerISO 3166-1 country code
created_atUnix Time StampDate this was initially added to the IGDB database
descriptionStringA free text description of a company
developedArray of Game IDsAn array of games that a company has developed
logoReference ID for Company LogoThe company’s logo
nameString
parentReference ID for CompanyA company with a controlling interest in a specific company
publishedArray of Game IDsAn array of games that a company has published
slugStringA url-safe, unique, lower-case version of the name
start_dateUnix Time StampThe date a company was founded
start_date_categoryStart Date Category Enum
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
urlStringThe website address (URL) of the item
websitesArray of Company Website IDsThe companies official websites

Company Enums

change_date_category

namevalue
YYYYMMMMDD0
YYYYMMMM1
YYYY2
YYYYQ13
YYYYQ24
YYYYQ35
YYYYQ46
TBD7

start_date_category

namevalue
YYYYMMMMDD0
YYYYMMMM1
YYYY2
YYYYQ13
YYYYQ24
YYYYQ35
YYYYQ46
TBD7
from requests import post
response = post('https://api.igdb.com/v4/company_logos', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields alpha_channel,animated,checksum,height,image_id,url,width;'})
print ("response: %s" % str(response.json()))

The logos of developers and publishers

Request Path

https://api.igdb.com/v4/company_logos

fieldtypedescription
alpha_channelboolean
animatedboolean
checksumuuidHash of the object
heightIntegerThe height of the image in pixels
image_idStringThe ID of the image used to construct an IGDB image link
urlStringThe website address (URL) of the item
widthIntegerThe width of the image in pixels

Company Website

from requests import post
response = post('https://api.igdb.com/v4/company_websites', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields category,checksum,trusted,url;'})
print ("response: %s" % str(response.json()))

Company Website

Request Path

https://api.igdb.com/v4/company_websites

fieldtypedescription
categoryCategory EnumThe service this website links to
checksumuuidHash of the object
trustedboolean
urlStringThe website address (URL) of the item

Company Website Enums

category

namevalue
official1
wikia2
wikipedia3
facebook4
twitter5
twitch6
instagram8
youtube9
iphone10
ipad11
android12
steam13
reddit14
itch15
epicgames16
gog17
discord18

Cover

from requests import post
response = post('https://api.igdb.com/v4/covers', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields alpha_channel,animated,checksum,game,game_localization,height,image_id,url,width;'})
print ("response: %s" % str(response.json()))

The cover art of games

Request Path

https://api.igdb.com/v4/covers

fieldtypedescription
alpha_channelboolean
animatedboolean
checksumuuidHash of the object
gameReference ID for GameThe game this cover is associated with. If it is empty then this cover belongs to a game_localization, which can be found under game_localization field
game_localizationReference ID for Game LocalizationThe game localization this cover might be associated with
heightIntegerThe height of the image in pixels
image_idStringThe ID of the image used to construct an IGDB image link
urlStringThe website address (URL) of the item
widthIntegerThe width of the image in pixels

External Game

from requests import post
response = post('https://api.igdb.com/v4/external_games', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields category,checksum,countries,created_at,game,media,name,platform,uid,updated_at,url,year;'})
print ("response: %s" % str(response.json()))

Game IDs on other services

Request Path

https://api.igdb.com/v4/external_games

fieldtypedescription
categoryCategory EnumThe id of the other service
checksumuuidHash of the object
countriesArray of IntegersThe ISO country code of the external game product.
created_atUnix Time StampDate this was initially added to the IGDB database
gameReference ID for GameThe IGDB ID of the game
mediaMedia EnumThe media of the external game.
nameStringThe name of the game according to the other service
platformReference ID for PlatformThe platform of the external game product.
uidStringThe other services ID for this game
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
urlStringThe website address (URL) of the item
yearIntegerThe year in full (2018)

External Game Enums

category

namevalue
steam1
gog5
youtube10
microsoft11
apple13
twitch14
android15
amazon_asin20
amazon_luna22
amazon_adg23
epic_game_store26
oculus28
utomik29
itch_io30
xbox_marketplace31
kartridge32
playstation_store_us36
focus_entertainment37
xbox_game_pass_ultimate_cloud54
gamejolt55

media

namevalue
digital1
physical2

Franchise

from requests import post
response = post('https://api.igdb.com/v4/franchises', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,games,name,slug,updated_at,url;'})
print ("response: %s" % str(response.json()))

A list of video game franchises such as Star Wars.

Request Path

https://api.igdb.com/v4/franchises

fieldtypedescription
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
gamesArray of Game IDsThe games that are associated with this franchise
nameStringThe name of the franchise
slugStringA url-safe, unique, lower-case version of the name
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
urlStringThe website address (URL) of the item

Game

from requests import post
response = post('https://api.igdb.com/v4/games', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields age_ratings,aggregated_rating,aggregated_rating_count,alternative_names,artworks,bundles,category,checksum,collection,cover,created_at,dlcs,expanded_games,expansions,external_games,first_release_date,follows,forks,franchise,franchises,game_engines,game_localizations,game_modes,genres,hypes,involved_companies,keywords,language_supports,multiplayer_modes,name,parent_game,platforms,player_perspectives,ports,rating,rating_count,release_dates,remakes,remasters,screenshots,similar_games,slug,standalone_expansions,status,storyline,summary,tags,themes,total_rating,total_rating_count,updated_at,url,version_parent,version_title,videos,websites;'})
print ("response: %s" % str(response.json()))

Video Games!

Request Path

https://api.igdb.com/v4/games

fieldtypedescription
age_ratingsArray of Age Rating IDsThe PEGI rating
aggregated_ratingDoubleRating based on external critic scores
aggregated_rating_countIntegerNumber of external critic scores
alternative_namesArray of Alternative Name IDsAlternative names for this game
artworksArray of Artwork IDsArtworks of this game
bundlesArray of Game IDsThe bundles this game is a part of
categoryCategory EnumThe category of this game
checksumuuidHash of the object
collectionReference ID for CollectionThe series the game belongs to
coverReference ID for CoverThe cover of this game
created_atUnix Time StampDate this was initially added to the IGDB database
dlcsArray of Game IDsDLCs for this game
expanded_gamesArray of Game IDsExpanded games of this game
expansionsArray of Game IDsExpansions of this game
external_gamesArray of External Game IDsExternal IDs this game has on other services
first_release_dateUnix Time StampThe first release date for this game
followsIntegerNumber of people following a game
forksArray of Game IDsForks of this game
franchiseReference ID for FranchiseThe main franchise
franchisesArray of Franchise IDsOther franchises the game belongs to
game_enginesArray of Game Engine IDsThe game engine used in this game
game_localizationsArray of Game Localization IDsSupported game localizations for this game. A region can have at most one game localization for a given game
game_modesArray of Game Mode IDsModes of gameplay
genresArray of Genre IDsGenres of the game
hypesIntegerNumber of follows a game gets before release
involved_companiesArray of Involved Company IDsCompanies who developed this game
keywordsArray of Keyword IDsAssociated keywords
language_supportsArray of Language Support IDsSupported Languages for this game
multiplayer_modesArray of Multiplayer Mode IDsMultiplayer modes for this game
nameString
parent_gameReference ID for GameIf a DLC, expansion or part of a bundle, this is the main game or bundle
platformsArray of Platform IDsPlatforms this game was released on
player_perspectivesArray of Player Perspective IDsThe main perspective of the player
portsArray of Game IDsPorts of this game
ratingDoubleAverage IGDB user rating
rating_countIntegerTotal number of IGDB user ratings
release_datesArray of Release Date IDsRelease dates of this game
remakesArray of Game IDsRemakes of this game
remastersArray of Game IDsRemasters of this game
screenshotsArray of Screenshot IDsScreenshots of this game
similar_gamesArray of Game IDsSimilar games
slugStringA url-safe, unique, lower-case version of the name
standalone_expansionsArray of Game IDsStandalone expansions of this game
statusStatus EnumThe status of the games release
storylineStringA short description of a games story
summaryStringA description of the game
tagsArray of Tag NumbersRelated entities in the IGDB API
themesArray of Theme IDsThemes of the game
total_ratingDoubleAverage rating based on both IGDB user and external critic scores
total_rating_countIntegerTotal number of user and external critic scores
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
urlStringThe website address (URL) of the item
version_parentReference ID for GameIf a version, this is the main game
version_titleStringTitle of this version (i.e Gold edition)
videosArray of Game Video IDsVideos of this game
websitesArray of Website IDsWebsites associated with this game

Game Enums

category

namevalue
main_game0
dlc_addon1
expansion2
bundle3
standalone_expansion4
mod5
episode6
season7
remake8
remaster9
expanded_game10
port11
fork12
pack13
update14

status

namevalue
released0
alpha2
beta3
early_access4
offline5
cancelled6
rumored7
delisted8

Game Engine

from requests import post
response = post('https://api.igdb.com/v4/game_engines', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,companies,created_at,description,logo,name,platforms,slug,updated_at,url;'})
print ("response: %s" % str(response.json()))

Video game engines such as unreal engine.

Request Path

https://api.igdb.com/v4/game_engines

fieldtypedescription
checksumuuidHash of the object
companiesArray of Company IDsCompanies who used this game engine
created_atUnix Time StampDate this was initially added to the IGDB database
descriptionStringDescription of the game engine
logoReference ID for Game Engine LogoLogo of the game engine
nameStringName of the game engine
platformsArray of Platform IDsPlatforms this game engine was deployed on
slugStringA url-safe, unique, lower-case version of the name
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
urlStringThe website address (URL) of the item
from requests import post
response = post('https://api.igdb.com/v4/game_engine_logos', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields alpha_channel,animated,checksum,height,image_id,url,width;'})
print ("response: %s" % str(response.json()))

The logos of game engines

Request Path

https://api.igdb.com/v4/game_engine_logos

fieldtypedescription
alpha_channelboolean
animatedboolean
checksumuuidHash of the object
heightIntegerThe height of the image in pixels
image_idStringThe ID of the image used to construct an IGDB image link
urlStringThe website address (URL) of the item
widthIntegerThe width of the image in pixels

Game Localization

from requests import post
response = post('https://api.igdb.com/v4/game_localizations', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,cover,created_at,game,name,region,updated_at;'})
print ("response: %s" % str(response.json()))

Game localization for a game

Request Path

https://api.igdb.com/v4/game_localizations

fieldtypedescription
checksumuuidHash of the object
coverReference ID for CoverThe cover of this game localization
created_atUnix Time StampDate this was initially added to the IGDB database
gameReference ID for GameThe Game the localization belongs to
nameString
regionReference ID for RegionThe Region of the localization
updated_atUnix Time StampThe last date this entry was updated in the IGDB database

Game Mode

from requests import post
response = post('https://api.igdb.com/v4/game_modes', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,name,slug,updated_at,url;'})
print ("response: %s" % str(response.json()))

Single player, Multiplayer etc

Request Path

https://api.igdb.com/v4/game_modes

fieldtypedescription
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
nameStringThe name of the game mode
slugStringA url-safe, unique, lower-case version of the name
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
urlStringThe website address (URL) of the item

Game Version Feature

from requests import post
response = post('https://api.igdb.com/v4/game_version_features', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields category,checksum,description,position,title,values;'})
print ("response: %s" % str(response.json()))

Features and descriptions of what makes each version/edition different from the main game

Request Path

https://api.igdb.com/v4/game_version_features

fieldtypedescription
categoryCategory EnumThe category of the feature description
checksumuuidHash of the object
descriptionStringThe description of the feature
positionIntegerPosition of this feature in the list of features
titleStringThe title of the feature
valuesArray of Game Version Feature Value IDsThe bool/text value of the feature

Game Version Feature Enums

category

namevalue
boolean0
description1

Game Version Feature Value

from requests import post
response = post('https://api.igdb.com/v4/game_version_feature_values', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,game,game_feature,included_feature,note;'})
print ("response: %s" % str(response.json()))

The bool/text value of the feature

Request Path

https://api.igdb.com/v4/game_version_feature_values

fieldtypedescription
checksumuuidHash of the object
gameReference ID for GameThe version/edition this value refers to
game_featureReference ID for Game Version FeatureThe id of the game feature
included_featureIncluded Feature EnumThe boole value of this feature
noteStringThe text value of this feature

Game Version Feature Value Enums

included_feature

namevalue
NOT_INCLUDED0
INCLUDED1
PRE_ORDER_ONLY2

Game Video

from requests import post
response = post('https://api.igdb.com/v4/game_videos', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,game,name,video_id;'})
print ("response: %s" % str(response.json()))

A video associated with a game

Request Path

https://api.igdb.com/v4/game_videos

fieldtypedescription
checksumuuidHash of the object
gameReference ID for GameThe game this video is associated with
nameStringThe name of the video
video_idStringThe external ID of the video (usually youtube)

Genre

from requests import post
response = post('https://api.igdb.com/v4/genres', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,name,slug,updated_at,url;'})
print ("response: %s" % str(response.json()))

Genres of video game

Request Path

https://api.igdb.com/v4/genres

fieldtypedescription
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
nameString
slugStringA url-safe, unique, lower-case version of the name
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
urlStringThe website address (URL) of the item

Involved Company

from requests import post
response = post('https://api.igdb.com/v4/involved_companies', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,company,created_at,developer,game,porting,publisher,supporting,updated_at;'})
print ("response: %s" % str(response.json()))

Request Path

https://api.igdb.com/v4/involved_companies

fieldtypedescription
checksumuuidHash of the object
companyReference ID for Company
created_atUnix Time StampDate this was initially added to the IGDB database
developerboolean
gameReference ID for Game
portingboolean
publisherboolean
supportingboolean
updated_atUnix Time StampThe last date this entry was updated in the IGDB database

Keyword

from requests import post
response = post('https://api.igdb.com/v4/keywords', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,name,slug,updated_at,url;'})
print ("response: %s" % str(response.json()))

Keywords are words or phrases that get tagged to a game such as “world war 2” or “steampunk”.

Request Path

https://api.igdb.com/v4/keywords

fieldtypedescription
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
nameString
slugStringA url-safe, unique, lower-case version of the name
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
urlStringThe website address (URL) of the item

Language

from requests import post
response = post('https://api.igdb.com/v4/languages', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,locale,name,native_name,updated_at;'})
print ("response: %s" % str(response.json()))

Languages that are used in the Language Support endpoint.

Request Path

https://api.igdb.com/v4/languages

fieldtypedescription
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
localeStringThe combination of Language code and Country code
nameStringThe English name of the Language
native_nameStringThe Native Name of the Language
updated_atUnix Time StampThe last date this entry was updated in the IGDB database

Language Support

from requests import post
response = post('https://api.igdb.com/v4/language_supports', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,game,language,language_support_type,updated_at;'})
print ("response: %s" % str(response.json()))

Games can be played with different languages for voice acting, subtitles, or the interface language.

Request Path

https://api.igdb.com/v4/language_supports

fieldtypedescription
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
gameReference ID for Game
languageReference ID for Language
language_support_typeReference ID for Language Support Type
updated_atUnix Time StampThe last date this entry was updated in the IGDB database

Multiplayer Mode

from requests import post
response = post('https://api.igdb.com/v4/multiplayer_modes', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields campaigncoop,checksum,dropin,game,lancoop,offlinecoop,offlinecoopmax,offlinemax,onlinecoop,onlinecoopmax,onlinemax,platform,splitscreen,splitscreenonline;'})
print ("response: %s" % str(response.json()))

Data about the supported multiplayer types

Request Path

https://api.igdb.com/v4/multiplayer_modes

fieldtypedescription
campaigncoopbooleanTrue if the game supports campaign coop
checksumuuidHash of the object
dropinbooleanTrue if the game supports drop in/out multiplayer
gameReference ID for GameThe game this multiplayer mode is associated with
lancoopbooleanTrue if the game supports LAN coop
offlinecoopbooleanTrue if the game supports offline coop
offlinecoopmaxIntegerMaximum number of offline players in offline coop
offlinemaxIntegerMaximum number of players in offline multiplayer
onlinecoopbooleanTrue if the game supports online coop
onlinecoopmaxIntegerMaximum number of online players in online coop
onlinemaxIntegerMaximum number of players in online multiplayer
platformReference ID for PlatformThe platform this multiplayer mode refers to
splitscreenbooleanTrue if the game supports split screen, offline multiplayer
splitscreenonlinebooleanTrue if the game supports split screen, online multiplayer

Language Support Type

from requests import post
response = post('https://api.igdb.com/v4/language_support_types', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,name,updated_at;'})
print ("response: %s" % str(response.json()))

Language Support Types contains the identifiers for the support types that Language Support uses.

Request Path

https://api.igdb.com/v4/language_support_types

fieldtypedescription
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
nameString
updated_atUnix Time StampThe last date this entry was updated in the IGDB database

Game Version

from requests import post
response = post('https://api.igdb.com/v4/game_versions', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,features,game,games,updated_at,url;'})
print ("response: %s" % str(response.json()))

Details about game editions and versions.

Request Path

https://api.igdb.com/v4/game_versions

fieldtypedescription
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
featuresArray of Game Version Feature IDsFeatures and descriptions of what makes each version/edition different from the main game
gameReference ID for GameThe game these versions/editions are of
gamesArray of Game IDsGame Versions and Editions
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
urlStringThe website address (URL) of the item

Platform

from requests import post
response = post('https://api.igdb.com/v4/platforms', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields abbreviation,alternative_name,category,checksum,created_at,generation,name,platform_family,platform_logo,slug,summary,updated_at,url,versions,websites;'})
print ("response: %s" % str(response.json()))

The hardware used to run the game or game delivery network

Request Path

https://api.igdb.com/v4/platforms

fieldtypedescription
abbreviationStringAn abbreviation of the platform name
alternative_nameStringAn alternative name for the platform
categoryCategory EnumA physical or virtual category of the platform
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
generationIntegerThe generation of the platform
nameStringThe name of the platform
platform_familyReference ID for Platform FamilyThe family of platforms this one belongs to
platform_logoReference ID for Platform LogoThe logo of the first Version of this platform
slugStringA url-safe, unique, lower-case version of the name
summaryStringThe summary of the first Version of this platform
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
urlStringThe website address (URL) of the item
versionsArray of Platform Version IDsAssociated versions of this platform
websitesArray of Platform Website IDsThe main website

Platform Enums

category

namevalue
console1
arcade2
platform3
operating_system4
portable_console5
computer6
from requests import post
response = post('https://api.igdb.com/v4/platform_logos', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields alpha_channel,animated,checksum,height,image_id,url,width;'})
print ("response: %s" % str(response.json()))

Logo for a platform

Request Path

https://api.igdb.com/v4/platform_logos

fieldtypedescription
alpha_channelboolean
animatedboolean
checksumuuidHash of the object
heightIntegerThe height of the image in pixels
image_idStringThe ID of the image used to construct an IGDB image link
urlStringThe website address (URL) of the item
widthIntegerThe width of the image in pixels

Platform Family

from requests import post
response = post('https://api.igdb.com/v4/platform_families', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,name,slug;'})
print ("response: %s" % str(response.json()))

A collection of closely related platforms

Request Path

https://api.igdb.com/v4/platform_families

fieldtypedescription
checksumuuidHash of the object
nameStringThe name of the platform family
slugStringA url-safe, unique, lower-case version of the name

Platform Version

from requests import post
response = post('https://api.igdb.com/v4/platform_versions', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,companies,connectivity,cpu,graphics,main_manufacturer,media,memory,name,online,os,output,platform_logo,platform_version_release_dates,resolutions,slug,sound,storage,summary,url;'})
print ("response: %s" % str(response.json()))

Request Path

https://api.igdb.com/v4/platform_versions

fieldtypedescription
checksumuuidHash of the object
companiesArray of Platform Version Company IDsWho developed this platform version
connectivityStringThe network capabilities
cpuStringThe integrated control processing unit
graphicsStringThe graphics chipset
main_manufacturerReference ID for Platform Version CompanyWho manufactured this version of the platform
mediaStringThe type of media this version accepted
memoryStringHow much memory there is
nameStringThe name of the platform version
osStringThe operating system installed on the platform version
outputStringThe output video rate
platform_logoReference ID for Platform LogoThe logo of this platform version
platform_version_release_datesArray of Platform Version Release Date IDsWhen this platform was released
resolutionsStringThe maximum resolution
slugStringA url-safe, unique, lower-case version of the name
soundStringThe sound chipset
storageStringHow much storage there is
summaryStringA short summary
urlStringThe website address (URL) of the item

Platform Version Company

from requests import post
response = post('https://api.igdb.com/v4/platform_version_companies', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,comment,company,developer,manufacturer;'})
print ("response: %s" % str(response.json()))

A platform developer

Request Path

https://api.igdb.com/v4/platform_version_companies

fieldtypedescription
checksumuuidHash of the object
commentStringAny notable comments about the developer
companyReference ID for CompanyThe company responsible for developing this platform version
developerboolean
manufacturerboolean

Platform Version Release Date

from requests import post
response = post('https://api.igdb.com/v4/platform_version_release_dates', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields category,checksum,created_at,date,human,m,platform_version,region,updated_at,y;'})
print ("response: %s" % str(response.json()))

A handy endpoint that extends platform release dates. Used to dig deeper into release dates, platforms and versions.

Request Path

https://api.igdb.com/v4/platform_version_release_dates

fieldtypedescription
categoryCategory EnumThe format of the release date
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
dateUnix Time StampThe release date
humanStringA human readable version of the release date
mIntegerThe month as an integer starting at 1 (January)
platform_versionReference ID for Platform VersionThe platform this release date is for
regionRegion EnumThe region of the release
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
yIntegerThe year in full (2018)

Platform Version Release Date Enums

category

namevalue
YYYYMMMMDD0
YYYYMMMM1
YYYY2
YYYYQ13
YYYYQ24
YYYYQ35
YYYYQ46
TBD7

region

namevalue
europe1
north_america2
australia3
new_zealand4
japan5
china6
asia7
worldwide8
korea9
brazil10

Platform Website

from requests import post
response = post('https://api.igdb.com/v4/platform_websites', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields category,checksum,trusted,url;'})
print ("response: %s" % str(response.json()))

The main website for the platform

Request Path

https://api.igdb.com/v4/platform_websites

fieldtypedescription
categoryCategory EnumThe service this website links to
checksumuuidHash of the object
trustedboolean
urlStringThe website address (URL) of the item

Platform Website Enums

category

namevalue
official1
wikia2
wikipedia3
facebook4
twitter5
twitch6
instagram8
youtube9
iphone10
ipad11
android12
steam13
reddit14
discord15
google_plus16
tumblr17
linkedin18
pinterest19
soundcloud20

Player Perspective

from requests import post
response = post('https://api.igdb.com/v4/player_perspectives', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,name,slug,updated_at,url;'})
print ("response: %s" % str(response.json()))

Player perspectives describe the view/perspective of the player in a video game.

Request Path

https://api.igdb.com/v4/player_perspectives

fieldtypedescription
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
nameString
slugStringA url-safe, unique, lower-case version of the name
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
urlStringThe website address (URL) of the item

Region

from requests import post
response = post('https://api.igdb.com/v4/regions', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields category,checksum,created_at,identifier,name,updated_at;'})
print ("response: %s" % str(response.json()))

Region for game localization

Request Path

https://api.igdb.com/v4/regions

fieldtypedescription
categoryStringThis can be either ’locale’ or ‘continent’
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
identifierStringThis is the identifier of each region
nameString
updated_atUnix Time StampThe last date this entry was updated in the IGDB database

Screenshot

from requests import post
response = post('https://api.igdb.com/v4/screenshots', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields alpha_channel,animated,checksum,game,height,image_id,url,width;'})
print ("response: %s" % str(response.json()))

Screenshots of games

Request Path

https://api.igdb.com/v4/screenshots

fieldtypedescription
alpha_channelboolean
animatedboolean
checksumuuidHash of the object
gameReference ID for GameThe game this video is associated with
heightIntegerThe height of the image in pixels
image_idStringThe ID of the image used to construct an IGDB image link
urlStringThe website address (URL) of the item
widthIntegerThe width of the image in pixels

Release Date

from requests import post
response = post('https://api.igdb.com/v4/release_dates', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields category,checksum,created_at,date,game,human,m,platform,region,status,updated_at,y;'})
print ("response: %s" % str(response.json()))

A handy endpoint that extends game release dates. Used to dig deeper into release dates, platforms and versions.

Request Path

https://api.igdb.com/v4/release_dates

fieldtypedescription
categoryCategory EnumThe format category of the release date
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
dateUnix Time StampThe date of the release
gameReference ID for Game
humanStringA human readable representation of the date
mIntegerThe month as an integer starting at 1 (January)
platformReference ID for PlatformThe platform of the release
regionRegion EnumThe region of the release
statusReference ID for Release Date StatusThe status of the release.
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
yIntegerThe year in full (2018)

Release Date Enums

category

namevalue
YYYYMMMMDD0
YYYYMMMM1
YYYY2
YYYYQ13
YYYYQ24
YYYYQ35
YYYYQ46
TBD7

region

namevalue
europe1
north_america2
australia3
new_zealand4
japan5
china6
asia7
worldwide8
korea9
brazil10
from requests import post
response = post('https://api.igdb.com/v4/search', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields alternative_name,character,checksum,collection,company,description,game,name,platform,published_at,test_dummy,theme;'})
print ("response: %s" % str(response.json()))

Request Path

https://api.igdb.com/v4/search

fieldtypedescription
alternative_nameString
characterReference ID for Character
checksumuuidHash of the object
collectionReference ID for Collection
companyReference ID for Company
descriptionString
gameReference ID for Game
nameString
platformReference ID for Platform
published_atUnix Time StampThe date this item was initially published by the third party
test_dummyReference ID for Test Dummy
themeReference ID for Theme

Theme

from requests import post
response = post('https://api.igdb.com/v4/themes', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,name,slug,updated_at,url;'})
print ("response: %s" % str(response.json()))

Video game themes

Request Path

https://api.igdb.com/v4/themes

fieldtypedescription
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
nameString
slugStringA url-safe, unique, lower-case version of the name
updated_atUnix Time StampThe last date this entry was updated in the IGDB database
urlStringThe website address (URL) of the item

Release Date Status

from requests import post
response = post('https://api.igdb.com/v4/release_date_statuses', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,description,name,updated_at;'})
print ("response: %s" % str(response.json()))

An endpoint to provide definition of all of the current release date statuses.

Request Path

https://api.igdb.com/v4/release_date_statuses

fieldtypedescription
checksumuuidHash of the object
created_atUnix Time StampDate this was initially added to the IGDB database
descriptionStringThe description of the release date status.
nameStringThe name of the release date status.
updated_atUnix Time StampThe last date this entry was updated in the IGDB database

Website

from requests import post
response = post('https://api.igdb.com/v4/websites', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields category,checksum,game,trusted,url;'})
print ("response: %s" % str(response.json()))

A website url, usually associated with a game

Request Path

https://api.igdb.com/v4/websites

fieldtypedescription
categoryCategory EnumThe service this website links to
checksumuuidHash of the object
gameReference ID for GameThe game this website is associated with
trustedboolean
urlStringThe website address (URL) of the item

Website Enums

category

namevalue
official1
wikia2
wikipedia3
facebook4
twitter5
twitch6
instagram8
youtube9
iphone10
ipad11
android12
steam13
reddit14
itch15
epicgames16
gog17
discord18

Webhooks

What?

Webhooks allow us to push data to you when it is added, updated, or deleted. Instead of polling the API for changes, you can listen on your own HTTP endpoint (Webhook) and we will deliver the data to you.

Using Webhooks will ensure that your data is always up to date!

from requests import post
response = post('https://api.igdb.com/v4/ENDPOINT/webhooks/', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token', 'Content-Type': 'application/x-www-form-urlencoded'}, 'data': 'url=YOUR_WEBHOOK_URL&secret=YOUR_WEBHOOK_SECRET&method=create'})
print ("response: %s" % str(response.json()))

How to register your webhook

To register a new webhook you need to send a  POST  request to  ENDPOINT/webhooks . The endpoint is required as it specifies what type of data you want from your webhook.

The post request should contain  x-www-form-urlencoded  body with three parameters:

  • url  this is your prepared url that is ready to accept data from us.
  • method this is the type of data you are expecting to your url, there are three types of methods
    • create , sends new items from the API
    • delete , sends deleted items from the API
    • update , sends updated items from the API
  • secret  this is your “secret” password for your webhook. Every request from the webhook service will have your secret in the header called  X-Secret .
// Example response upon registering your webhook
{ 
"id": WEBHOOK_ID, // A unique ID for the webhook
"url": "YOUR_WEBHOOK_URL", // Your chosen URL
"category": 1, // Based on the endpoint you chose
"sub_category": 0, // Based on your method (can be 0, 1, 2)
"active": true, // Is the webhook currently active
"api_key": "YOUR_CLIENT_ID", // Displays the api key the webhook is connected to
"secret": "YOUR_SECRET", // Your chosen secret
"created_at": "2018-11-25T23:00:00.000Z", // Created at date
"updated_at": "2018-11-25T23:00:00.000Z" // Updated at date
}


Registering your webhook in Postman Once your webhook is registered you will receive a response with the new webhook object

That’s it!
The data will now be sent to your webhook in the body of a post request. The data is a single json object representing an unexpanded entity.Tip! Always validate your received data with you secret!

Webhooks have an  active  field, as you can see in the JSON response above, The service will keep the webhook active as long as the webhook url is capable of receiving data from the service. If the url fails 5 times the webhook will be set to inactive ( active: false ) and the service will stop to send data to this webhook.

Reactivating the webhook is done by re-registering it, this will update the  active  status to true.Tip! Re-register your webhook on service start, to make sure it’s always active!

Viewing your webhooks

You can always get information about your webhooks from the API. To get ALL of your registered webhooks simply send a  GET  request to  /webhooks , without the endpoint. This will return a JSON array of your webhooks

To get information about a specific webhook you can make a  GET  request with the webhook id to  /webhooks/WEBHOOK_ID , without the endpoint. This will return the webhook of that id.

# Get ALL registered Webhooks
from requests import post
response = get('https://api.igdb.com/v4/webhooks/', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'}})
print ("response: %s" % str(response.json()))

Viewing your webhooks

You can always get information about your webhooks from the API. To get ALL of your registered webhooks simply send a  GET  request to  /webhooks , without the endpoint. This will return a JSON array of your webhooks

To get information about a specific webhook you can make a  GET  request with the webhook id to  /webhooks/WEBHOOK_ID , without the endpoint. This will return the webhook of that id.

from requests import post
response = delete('https://api.igdb.com/v4/webhooks/WEBHOOK_ID', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'}})
print ("response: %s" % str(response.json()))

Removing a Webhook

To remove your existing webhook you need to send a  DELETE  request to  /webhooks/WEBHOOK_ID , without the endpoint. The Webhook id is returned during the registration process or can be found with a  GET  request to  /webhooks/ .

The  DELETE  request will receive the deleted webhook as confirmation.

from requests import post
response = post('https://api.igdb.com/v4/ENDPOINT/webhooks/test/WEBHOOK_ID?entityId=ENTITY_ID', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'}})
print ("response: %s" % str(response.json()))

Testing

To make sure you have everything setup just right we have a test endpoint for the webhook service. This endpoint will send an object of your choosing to your newly created webhook.

Send a  POST  request to  ENDPOINT/webhooks/test/WEBHOOK_ID?entityId=ENTITY_ID . The entity id is the id of the object from the endpoint you wish to test with, example:

POST  to  games/webhooks/test/42?entityId=1337 :
This request will send the game object with id 1337 to your webhook url.

Handling Webhooks on your end

When recieveing the webhook message on your end what we expect is to recieve a  200 OK  back within 15 seconds. If the endpoint takes longer than 15 seconds to respond the event will be deemed as a failed event, fail 5 times and the webhook will be set to inactive.

CORS Proxy

CORS

If you intend to use our API from your website you will encounter an issue with security; namely CORS Cross-Origin Resource Sharing.

There are security mechanisms in place by all major browsers to stop websites from accessing other domains without getting explicit permission. This is done through HTTP headers. So, for example, amazinggameswebsite.com cannot access api.igdb.com without us explicitly stating in the HTTP headers (Access-Control-Allow-Origin) that they have permission.

We do not offer the configuration of these headers as a service, so any browser-based javascript and mobile javascript frameworks will not be able to communicate directly with the IGDB API.

Workaround

See the guide for setting up a proxy or set up a proxy using CORS Anywhere

Proxy

There are a number of reasons why you may wish to proxy requests to the IGDB API.

  • To have a backend that keeps track of your Oauth Application Tokens
  • Caching requests to the API for better performance
  • Enable application logging to track/debug usage
  • Enable CORS between the proxy and applications

How do I set up a proxy?

Proxies can be complex, but to get you started we have a simple guide to get you up and running quickly through AWS.

We have provided a single link that will let you deploy an AWS Api Gateway in your own AWS account that will serve as a proxy. This Stack will also handle your Access Token rotations automatically for you, so you don’t need to think about that.

Simple Api Proxy Diagram

What will it cost?

AWS has a very generous free-tier for new users and the services used in the provided solution (Api GatewaySecrets ManagerLambda). Please use the AWS Pricing Calculator to gauge how much this will cost you before setting up your Stack.

Stack Setup

Prerequisites: You need to have an AWS account with permissions to deploy CloudFormation stacks.

  1. Click this link to get started.
  2. Go over the Stack Details
    • You have to agree to the terms and conditions.
    • You have to fill in your Twitch Application Credentials
    • It’s recommended to protect your proxy by enabling Api Keys
    • NOTE: Enabling Caching will come with extra costs as this is NOT covered by the Free-tier
    • NOTE: Enabling CORS will ‘break’ Protobuf responses, some libraries might not work.
  3. Click Next
  4. Configure Stack Options – Nothing is required here, you can click Next
  5. Verify Settings, click the checkbox at the bottom, then click “Create Stack”
  6. You will now see the “Stack Details” screen, hit the refresh arrow button on the right until your stack name on the left says “UPDATE_COMPLETE”
  7. Click on the “Outputs” tab to get the URL to your new proxy.
    • The “Resources” tab summarises all the services deployed on your account.
    • The “Template” tab displays the template used for deployment.
  8. You can now post requests to your URL and it will proxy to our API
    • If you enabled Api Keys you will need to specify the header  x-api-key  and the key can be found via a link through the “Resources” tab for “ApiDefaultKey”

Important Note: The url generated will end in  production , so you will want to post to
​​https://<your-api-gateway-unique-id>.execute-api.us-west-2.amazonaws.com/production/v4/games

Example Request to Api Proxy

What’s next?

You can do a lot of things via API Gateway.

  • You can improve the security of your proxy by creating another sort of Authentication, to prevent others from using up your RPS quota.
  • You can also setup your own Domain name and SSL with Route53
  • You can modify the path of the proxy to have it serve as the front-end to your own APIs
  • Enable request logging

Alternatives

Reference

Images

Note: Images that are removed or replaced from IGDB.com exist for 30 days before they are removed. Keep that in mind when designing cache logic.

Examples

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • fields screenshots.*;
      where id = 1942;

Here we retrieve the image properties of the game with the id “1942”

[{
"id": 1942,
"screenshots": [{
"id": 9742,
"game": 1942,
"height": 1080,
"image_id": "mnljdjtrh44x4snmierh",
"url": "//images.igdb.com/igdb/image/upload/t_thumb/mnljdjtrh44x4snmierh.jpg",
"width": 1920
},
{
"id": 9743,
"game": 1942,
"height": 1080,
"image_id": "em1y2ugcwy2myuhvb9db",
"url": "//images.igdb.com/igdb/image/upload/t_thumb/em1y2ugcwy2myuhvb9db.jpg",
"width": 1920
}
]
}]

Response example on the right –>

Image url structure:

https://images.igdb.com/igdb/image/upload/t_screenshot_med_2x/dfgkfivjrhcksyymh9vw.jpg

Break down:

https://images.igdb.com/igdb/image/upload/t_{size}/{hash}.jpg

size  is one of the interchangeable size types listed below.  hash  is the id of the image. The image sizes are all maximum size but by appending  _2x  to any size, you can get retina (DPR 2.0) sizes ( cover_small_2x ).

NameSizeExtra
cover_small90 x 128Fit
screenshot_med569 x 320Lfill, Center gravity
cover_big264 x 374Fit
logo_med284 x 160Fit
screenshot_big889 x 500Lfill, Center gravity
screenshot_huge1280 x 720Lfill, Center gravity
thumb90 x 90Thumb, Center gravity
micro35 x 35Thumb, Center gravity
720p1280 x 720Fit, Center gravity
1080p1920 x 1080Fit, Center gravity

Fields

What?

Fields are properties of an entity. For example, a Game field would be  genres  or  release_dates . Some fields have properties of their own, for example, the  genres  field has the property  name .

Where?

Fields can be used on any entity that has sub-properties such as Games, Companies, People etc.

How?

Fields are requested in a comma separated list. For example, to get some information for some Games, Genres, Themes or anything else, you could request it like this:

Apicalypse

where id = (4356,189,444);
fields name,release_dates,genres.name,rating

Legacy Parameters

/games/4356,189,444?fields=name,release_dates,genres.name,rating

Note in Apicalypse the  name  property of  genres  can be accessed directly with a dot (genres.name).

A full list of fields can be obtained by passing a  *  as a field. Alternatively you can use the  meta  postfix:  /games/meta  to get a list of all fields.

Shorthand

Another way of writing fields is to use the shorthand f which achieves the same result.

f name,release_dates,genres.name,rating;
w id = (4356,189,444);

Exclude

What?

Exclude is a complement to the regular fields which allows you to request all fields with the exception of any numbers of fields specified with exclude.

How?

Fields to be excluded are specified as a comma separated list. For example, to get all fields excpect for screenshots, you could request it like this:

Apicalypse

fields *;
exclude screenshots;

Shorthand

Another way of writing exclude is to use the shorthand x which achieves the same result.

f *;
x screenshots;

Expander

What?

Some fields are actually ids pointing to another endpoint. The expander feature is a convenient way to go into these other endpoints and access more information from them in the same query, instead of having to do multiple queries.

Where?

Expands are specificed among the regular fields in the body of the query.

How?

Fields can be expanded with a dot followed by the fields you want to access from a certain endpoint.

Examples

In the example below we request the fields name and genres for the game The Witcher 3 with id 1942.

fields name,genres;
where id = 1942;

But this query will only return ids for the genres, which can be seen in the first response to the right:

"First example response showing genre ids"
[
{
"id ": 1942,
"genres":[
12,
31
],
"name": "The Witcher 3: Wild Hunt"
}
]

For some use cases the id is all that is needed, but other times more data is needed, This is when the expander features comes in handy.

fields name,genres.name;
where id = 1942;

This example with expander retrieves the name of each genre which can be seen in the second response to the right.

"Second example response showing genre ids and name"
[
{
"id": 1942,
"genres": [
{
"id": 12,
"name": "Role-playing (RPG)"
},
{
"id": 31,
"name": "Adventure"
}
],
"name": "The Witcher 3: Wild Hunt"
}
]

And lastly lets take a look at how you can use a wildcard character * to retrieve all data from genres in the previous example.

fields name,genres.*;
where id = 1942;

See the third response to the right where all available data for each genre is included in the response.

"Third example response showing all available genre data"
[
{
"id": 1942,
"genres": [
{
"id": 12,
"created_at": 1297555200,
"name": "Role-playing (RPG)",
"slug": "role-playing-rpg",
"updated_at": 1323216000,
"url": "https://www.igdb.com/genres/role-playing-rpg"
},
{
"id": 31,
"created_at": 1323561600,
"name": "Adventure",
"slug": "adventure",
"updated_at": 1323561600,
"url": "https://www.igdb.com/genres/adventure"
}
],
"name": "The Witcher 3: Wild Hunt"
}
]

Filters

What?

Filters are used to sift through results to get what you want. You can exclude and include results based on their properties. For example you could remove all Games where the  rating  was below 80 ( where rating >= 80 ).

How?

Filters are parameter arrays so must be added using special keys like this:

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • search “zelda”;
      where rating >= 80 & release_dates.date > 631152000;

Where?

Filters can be used on any entity that has sub-properties such as Games, Companies, People etc.

Available Postfixes

  • =  Equal: Exact match equal.
  • !=  Not Equal: Exact match equal.
  • >  Greater than (works only on numbers).
  • >=  Greater than or equal to (works only on numbers).
  • <  Less than (works only on numbers).
  • <=  Less than or equal to (works only on numbers).
  • = "Your input string"*  Prefix: Exact match on the beginning of the string, can end with anything. (Case sensitive).
  • ~ "Your input string"*  Prefix: Exact match on the beginning of the string, can end with anything. (Case insensitive).
  • = *"Your input string"  Postfix: Exact match at the end of the string, can start with anything. (Case sensitive).
  • ~ *"Your input string"  Postfix: Exact match at the end of the string, can start with anything. (Case insensitive).
  • = *"Your input string"*  Infix Exact match in the middle of the string, can start and end with anything. (Case sensitive).
  • ~ *"Your input string"*  Infix Exact match in the middle of the string, can start and end with anything. (Case insensitive).
  • != null  The value is not null.
  • = null  The value is null.
  • [V1,V2,...Vn]  The value exists within the (comma separated) array (AND between values).
  • ![V1,V2,...Vn]  The values must not exist within the (comma separated) array (AND between values).
  • (V1,V2,...Vn)  The value has any within the (comma separated) array (OR between values).
  • !(V1,V2,...Vn)  The values must not exist within the (comma separated) array (OR between values).
  • {V1,V2,...V2}  Exact match on arrays. (Does not work on ids, strings, etc).

Examples

Filter by multiple platforms

To get games that are released on PS4 OR XBOX ONE OR PC

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • fields name;
      where release_dates.platform = (48,49,6);

Similarly if you want games released on PS4 AND XBOX ONE AND PC

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • fields name;
      where release_dates.platform = [48,49,6];

If you want games released only on PC

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • fields name;
      where release_dates.platform = 6;

And if you want games released for PC OR any other platform

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • fields name;
      where release_dates.platform = (6);

Combining Multiple Filters

It is possible to to use logical operators between filters, which could look something like this:

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • fields name,platforms,genres.name;
      where (platforms = [6,48] & genres = 13) | (platforms = [130,48] & genres = 12);

The response from this example query will be games that fulfil one or both of two sets or requirements:

  • Games released for for both PC (6), and PS4 (48) and also has the genre simulator (13).
  • Games released for for both Switch (130), and PS4 (48) and also has the genre Role-Playing (13).

Prefix, Postfix and Infix

Prefix

Filtering for game names beginning with “Super” (this will return games such as for example Super Mario World)

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • fields name;
      where name = "Super"*;

Postfix

Filtering for game names ending with with “World” (this will also return games such as for example Super Mario World)

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • fields name;
      where name = *"World";

Infix

Filtering for game names containing the string “Smash” anywhere (this will return games such as for example Super Smash Bros)

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • fields name;
      where name = *"Smash"*;

case insensitive version

Filtering for game names containing the string “Smash” (this will return games such as for example Super Smash Bros)

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • fields name;
      where name ~ *"Smash"*;

Removing erotic games from API responses

Some queries may return games with erotic themes. All erotic games in the database has the theme ’erotic’ (id = 42). So by adding a simple filter like the one below you can remove them from your responses.

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • fields name;
      where themes != (42);

Sorting

What?

Sorting is used to order results by a specific field.

How?

You can order results like this:

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • sort release_dates.date desc;
      where rating >= 80;

Notice the appended  :desc  (descending) which could also be  :asc  (ascending) if required.

Order by rating

Rating parameter for games. You can access it like this:

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • fields name,rating;
      sort rating desc;
      where rating != null;

Where?

Ordering can be used on any entity.

Search

What?

Search based on name, results are sorted by similarity to the given search string.

Where?

Searchable endpoints:

  • Characters
  • Collections
  • Games
  • People
  • Platforms
  • Themes

How?

You specify which endpoint to search through in the Address field of your request. The search string is then entered in the body of the request by typing  search , blank space followed by the string you wish to search for.

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • search “zelda”;

Pagination

Here is an example for how to use limit. The default limit is 10. The maximum value you can set for limit is 500.

  • Address:
    • https://api.igdb.com/v4/platforms/
  • Body:
    • limit 33;

There is also an offset. This will start the list at position 22 and give 33 results.

  • Address:
    • https://api.igdb.com/v4/platforms/
  • Body:
    • limit 33;
      offset 22;

Protocol Buffers

Google Protocol Buffers is a language neutral method for serializing structured data.
The IGDB API supports responses in this format so you do not have to write your own serialization libraries, but instead you could just generate one.
Since this is langage neutral it is supported by a variatey of languages.

How?

Generate the objects in your language of choise with our own Protobuf file, here
This file contains the mapping of the entire IGDB API and can be used to generate wrappers, code and tooling in any programming language.
The protobuf file is created in accordance with the proto3 specification

There are plenty of examples on how to do this Online and on the Protobuf Site.

Where?

To start recieving protobuf compatible responses from then api all you need to do is add  .pb  at the end of your request:
https://api.igdb.com/v4/games.pb
Then use your generated files to parse the response into the expected object.

Tag Numbers

Tag numbers are automatically generated numbers which provide a compact and fast way to do complex filtering on the IGDB API. The number calculation can be easily achieved with any programming language.

The basis of the calculation is a 32bit integer, where the first 4 bits contain the object type ID, and the remaining 28 bits represent the ID of the object we are generating the tag number for.

Using this method a flat index of custom object ‘hashes’ can be maintained in which index the search and filtering is faster than using conventional methods.

Currently the following object types use tags:

Type IDName
0Theme
1Genre
2Keyword
3Game
4Player Perspective

Let’s see two examples for tag number calculation.

// Javascript
const genreTypeID = 1; // The type ID from the table above
const shooterGenreID = 5; // The Shooter genre's ID, coming from the genres endpoint.
let tagNumber = genreTypeID << 28; // Bit-shifting the genre's type ID by 28 bits, ensuring that it will get into the first four bits. The result will be 268435456
tagNumber |= shooterGenreID; // Adding the Shooter genre ID to the tag number with a bitwise OR operation. The result will be 268435461.

We try to find all the games which relate to the Shooter genre. The tag number generation in Javascript would look something like the example on the right.

Javascript example query:

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • where tags = (268435461);
# Python
keywordTypeID: 2 # The keyword's type ID from the table above/
keywordID: 148 # The ID of the 'moba' keyword
tagNumber: keywordTypeID << 28 # Bit-shifting the keywords's type ID by 28 bits, ensuring that it will get into the first four bits. The result will be 536870912
tagNumber |= keywordID # Adding the keyword ID to the tag number with a bitwise OR operation. The result will be 536871060.

Python example query:

  • Address:
    • https://api.igdb.com/v4/games/
  • Body:
    • where tags = (536871060);

Multi-Query

Multi-Query is a new way to request a huge amount of information in one request! With Multi-Query you can request multiple endpoints at once, it also works with multiple requests to a single endpoint as well.

A Multi-Query is made by making a  POST  request to:  https://api.igdb.com/v4/multiquery .

Syntax Structure The Multi-Query syntax is made up of three pieces; “Endpoint name”, “Result Name (Given by you)”, and the APICalypse query inside the body {}.

important You can only run a maximum of 10 queries.

Example 1:

Get the count of platforms in the api.

query platforms/count "Count of Platforms" {
// here we can have additional filters
};

This above query will give us the following result:

[
{
"name": "Count of Platforms",
"count": 155
}
]

Example 2:

Get Playstation 4 Exclusives

query games "Playstation Games" {
fields name,platforms.name;
where platforms !=n & platforms = {48};
limit 1;
};

This above query will give us the following result:

[
{
"name": "Playstation Games",
"result": [
{
"id": 52826,
"name": "Skate 4",
"platforms": [
{
"id": 48,
"name": "PlayStation 4"
}
]
}
]
}
]

Example 3:

Combining the queries of example 1 and 2.

query platforms/count "Count of Platforms" {
// here we can ahve additional filters
};
query games "Playstation Games" {
fields name,platforms.name;
where platforms !=n & platforms = {48};
limit 1;
};
[
{
"name": "Count of Platforms",
"count": 155
},
{
"name": "Playstation Games",
"result": [
{
"id": 52826,
"name": "Skate 4",
"platforms": [
{
"id": 48,
"name": "PlayStation 4"
}
]
}
]
}
]

APICalypse

APICalypse cheatsheet

APICalypse is a new language used for this api which greatly simplifies how you can query your requests compared to the url parameters used in API V2.

Fields

Fields are used to select which fields you want back from your request to the api.

To select fields you need the APICalypse command  fields  or its shorthand  f .

Popular wildcard is to add  *  instead of a field, this will give you all of the fields.

fields name,release_dates,genres.name,rating;
f name,release_dates,genres.name,rating;

Exclude

Commonly used with selecting all fields with the wildcard  *  this command will exclude the fields that you select.

To exclude fields you don’t need the APICalypse command  exclude  or its shorthand  x .

fields *;
exclude tags,keywords;

f *;
x tags,keywords;

Where

Where is easiest described as a filter. With where you can filter on specific fields.

To filter your results use the APICalypse command  where  or its shorthand  w .

fields *;
where genres = 4;

f *;
w genres = 4;

Limit

Limit describes how many results you will get back from the api, the standard value is 10.

To set a new limit use the APICalypse command  limit  or it’s shorthand  l .

fields *;
limit 50;

f *;
l 50;

Offset

Offset describes how many results you will skip over, standard is 0.

To set a new offset use the APICalypse command  offset  or it’s shorthand  o .
Offset is often used together with Limit for pagination.

limit 50;
offset 50;

l 50;
o 50;

Sort

Use Sort to order the results to your liking.

To order the results use the APICalypse command  sort  or it’s shorthand  s .
Sort has two accompaning commands for “direction”;  asc  Ascending order and  desc  Decending order.

fields *;
sort rating asc;

f *;
s rating desc;

Search

To find a specific title you can use Search.

To use search use the APICalypse command  search , it has no shorthand :(. Search has it’s own endpoint where it is good to use a filter for specific kinds of results, example  where game != null;  for only games.

search "Halo";
fields name;

search "Halo";
f name;

Other shorts

Null can be written  null  or  n . Booleans can be written as  true  or  t  and  false  or  f

FAQ

1. I want to use the API for a commercial project, is it allowed?

Yes, we offer commercial partnerships for users looking to integrate the API in monetized products. From our side, as part of the partnership, we ask for user facing attribution to IGDB.com from products integrating the IGDB API.

For more details on that process, please reach out to partner@igdb.com

2. What is the price of the API?

The API is free for both non-commercial and commercial projects.

3. Am I allowed to store/cache the data locally?

Yes. In fact, we prefer if you store and serve the data to your end users. You remain in control over your user experience, while alleviating pressure on the API itself.

4. Regarding user facing attribution (relating to the commercial partnership), any specific guidelines?

Not really. We expect fair attribution, i.e. attribution that is visible to your users and located in a static location (e.g. not in a change log).

5. What happens with the data retrieved, in the case of partnership termination?

You are allowed to keep all data you retrieve from the API and we will not ask you to remove the data in case of partnership termination.

6. We don’t wish to attribute IGDB.com as part of the partnership. Are there any other way?

Yes. If you have data that we think will complete the overall IGDB data set and you are willing to share that data with us, we can opt for this approach instead. Please be aware, however, that we are only interested in publicly available data that we can re-distribute using this API.

1. Can I use Twitch User Credentials to access the API?

The IGDB API uses  Application Credentials  to authenticate, you cannot use user credentials to authenticate API requests

More information about authentication can be found in the documentation, here

2. The requested images are in the wrong format!

Requesting images using the API returns a default image url using the  t_thumb  format. To request larger image sizes you should manually create your own image url using the  image_id  and the appropriate image size. example:  https://images.igdb.com/igdb/image/upload/t_{size}/{image_id}.png

More information about images and image sizes can be found in our documentation, here

3. Why am I recieving a CORS error?

The IGDB API does not support browser requests, CORS, for security reasons. This is because the request would leak your access token! We suggest that you create a backend proxy which authenticates and queries the API directly, and can be set up as a trusted connection for your client application.

For more information see our documentation, here

4. My AccessToken stopped working, why?

Your Access Token is only active for 60 days and your application can only have 25 active Access Tokens at one time, going over this limit starts to inactivate older tokens.

5. Why am I only receiving IDs?

An empty request will only yield a list of IDs. To request more information in a single request you should expand your request.
Ex:  fields *, cover.*;

More information about expanding requests, here
More example requests, here

6. Why am I only receiving 10 items, how do I get more?

The default item limit is set to 10. To edit this limit simply specify the limit in your request.
Ex:  limit 50;
The maximum limit is set to 500 items/request.

Read more about query syntax, here

Currently there is no popularity endpoint or popularity field on the game. The main reason is because popularity is quite vague since they can be many different ways to order/define popularity.

It used to be in v3 however we were not confident enough on the data so it was not moved on the V4 version.

Furthermore, the popular games you can see in IGDB.com homepage is specifically within the context of the website. Popularity is different in different context.

Support

Have a question?

If you have any questions about the API we recommend that you join our Discord, there you can discuss the API with other people working with it as well as the developers of the API and ask questions.

Reporting a bug

If you would like to report a bug you can do so in Discord or use Uservoice

License

Any code examples or snippets found under api-docs.igdb.com are made available under the Twitch Developer Services Agreement as Program Materials.

发布评论

评论

标注 * 的为必填项。