NAV
Shell Javascript Java/Unirest Kotlin/Fuel Swift Ruby Python

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.

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
    • The OAuth Redirect URL field is not used by IGDB. Please add ’localhost’ to continue.
    • The Client Type must be set to Confidential to generate Client Secrets
  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.

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

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 *;"

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

Third Party Documentation

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;

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

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

curl 'https://api.igdb.com/v4/age_ratings' \
-d 'fields category,checksum,content_descriptions,organization,rating,rating_category,rating_content_descriptions,rating_cover_url,synopsis;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/age_ratings",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields category,checksum,content_descriptions,organization,rating,rating_category,rating_content_descriptions,rating_cover_url,synopsis;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/age_ratings")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields category,checksum,content_descriptions,organization,rating,rating_category,rating_content_descriptions,rating_cover_url,synopsis;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/age_ratings".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields category,checksum,content_descriptions,organization,rating,rating_category,rating_content_descriptions,rating_cover_url,synopsis;").responseString()
let url = URL(string: "https://api.igdb.com/v4/age_ratings")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields category,checksum,content_descriptions,organization,rating,rating_category,rating_content_descriptions,rating_cover_url,synopsis;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/age_ratings'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields category,checksum,content_descriptions,organization,rating,rating_category,rating_content_descriptions,rating_cover_url,synopsis;'
puts http.request(request).body
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,organization,rating,rating_category,rating_content_descriptions,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

field type description
category Category Enum DEPRECATED! Use organization instead
checksum uuid Hash of the object
content_descriptions Array of Age Rating Content Description IDs
organization Reference ID for Age Rating Organization The organization that has issued a specific rating
rating Rating Enum DEPRECATED! Use rating_category instead
rating_category Reference ID for Age Rating Category The category of a rating
rating_content_descriptions Array of Age Rating Content Description V2 IDs The rating content descriptions
rating_cover_url String The url for the image of a age rating
synopsis String A free text motivating a rating

Age Rating Enums

category

name value
ESRB 1
PEGI 2
CERO 3
USK 4
GRAC 5
CLASS_IND 6
ACB 7

rating

name value
Three 1
Seven 2
Twelve 3
Sixteen 4
Eighteen 5
RP 6
EC 7
E 8
E10 9
T 10
M 11
AO 12
CERO_A 13
CERO_B 14
CERO_C 15
CERO_D 16
CERO_Z 17
USK_0 18
USK_6 19
USK_12 20
USK_16 21
USK_18 22
GRAC_ALL 23
GRAC_Twelve 24
GRAC_Fifteen 25
GRAC_Eighteen 26
GRAC_TESTING 27
CLASS_IND_L 28
CLASS_IND_Ten 29
CLASS_IND_Twelve 30
CLASS_IND_Fourteen 31
CLASS_IND_Sixteen 32
CLASS_IND_Eighteen 33
ACB_G 34
ACB_PG 35
ACB_M 36
ACB_MA15 37
ACB_R18 38
ACB_RC 39

Age Rating Category

curl 'https://api.igdb.com/v4/age_rating_categories' \
-d 'fields checksum,created_at,organization,rating,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/age_rating_categories",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,organization,rating,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/age_rating_categories")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,organization,rating,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/age_rating_categories".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,organization,rating,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/age_rating_categories")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,organization,rating,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/age_rating_categories'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,organization,rating,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/age_rating_categories', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,organization,rating,updated_at;'})
print ("response: %s" % str(response.json()))

The rating category from the organization

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
organization Reference ID for Age Rating Organization The rating organization
rating String The rating name
updated_at datetime The last date this entry was updated in the IGDB database

Age Rating Content Description

curl 'https://api.igdb.com/v4/age_rating_content_descriptions' \
-d 'fields category,checksum,description;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/age_rating_content_descriptions",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields category,checksum,description;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/age_rating_content_descriptions")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields category,checksum,description;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/age_rating_content_descriptions".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields category,checksum,description;").responseString()
let url = URL(string: "https://api.igdb.com/v4/age_rating_content_descriptions")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields category,checksum,description;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/age_rating_content_descriptions'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields category,checksum,description;'
puts http.request(request).body
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()))

DEPRECATED! Use age_rating_content_descriptions_v2 instead

Request Path

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

field type description
category Category Enum DEPRECATED!
checksum uuid Hash of the object
description String

Age Rating Content Description Enums

category

name value
ESRB_alcohol_reference 1
ESRB_animated_blood 2
ESRB_blood 3
ESRB_blood_and gore 4
ESRB_cartoon_violence 5
ESRB_comic_mischief 6
ESRB_crude_humor 7
ESRB_drug_reference 8
ESRB_fantasy_violence 9
ESRB_intense_violence 10
ESRB_language 11
ESRB_lyrics 12
ESRB_mature_humor 13
ESRB_nudity 14
ESRB_partial_nudity 15
ESRB_real_gambling 16
ESRB_sexual_content 17
ESRB_sexual_themes 18
ESRB_sexual_violence 19
ESRB_simulated_gambling 20
ESRB_strong_language 21
ESRB_strong_lyrics 22
ESRB_strong_sexual content 23
ESRB_suggestive_themes 24
ESRB_tobacco_reference 25
ESRB_use_of alcohol 26
ESRB_use_of drugs 27
ESRB_use_of tobacco 28
ESRB_violence 29
ESRB_violent_references 30
ESRB_animated_violence 31
ESRB_mild_language 32
ESRB_mild_violence 33
ESRB_use_of drugs and alcohol 34
ESRB_drug_and alcohol reference 35
ESRB_mild_suggestive themes 36
ESRB_mild_cartoon violence 37
ESRB_mild_blood 38
ESRB_realistic_blood and gore 39
ESRB_realistic_violence 40
ESRB_alcohol_and tobacco reference 41
ESRB_mature_sexual themes 42
ESRB_mild_animated violence 43
ESRB_mild_sexual themes 44
ESRB_use_of alcohol and tobacco 45
ESRB_animated_blood and gore 46
ESRB_mild_fantasy violence 47
ESRB_mild_lyrics 48
ESRB_realistic_blood 49
PEGI_violence 50
PEGI_sex 51
PEGI_drugs 52
PEGI_fear 53
PEGI_discrimination 54
PEGI_bad_language 55
PEGI_gambling 56
PEGI_online_gameplay 57
PEGI_in_game_purchases 58
CERO_love 59
CERO_sexual_content 60
CERO_violence 61
CERO_horror 62
CERO_drinking_smoking 63
CERO_gambling 64
CERO_crime 65
CERO_controlled_substances 66
CERO_languages_and others 67
GRAC_sexuality 68
GRAC_violence 69
GRAC_fear_horror_threatening 70
GRAC_language 71
GRAC_alcohol_tobacco_drug 72
GRAC_crime_anti_social 73
GRAC_gambling 74
CLASS_IND_violencia 75
CLASS_IND_violencia_extrema 76
CLASS_IND_conteudo_sexual 77
CLASS_IND_nudez 78
CLASS_IND_sexo 79
CLASS_IND_sexo_explicito 80
CLASS_IND_drogas 81
CLASS_IND_drogas_licitas 82
CLASS_IND_drogas_ilicitas 83
CLASS_IND_linguagem_impropria 84
CLASS_IND_atos_criminosos 85

Age Rating Content Description V2

curl 'https://api.igdb.com/v4/age_rating_content_descriptions_v2' \
-d 'fields checksum,created_at,description,organization,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/age_rating_content_descriptions_v2",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,description,organization,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/age_rating_content_descriptions_v2")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,description,organization,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/age_rating_content_descriptions_v2".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,description,organization,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/age_rating_content_descriptions_v2")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,description,organization,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/age_rating_content_descriptions_v2'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,description,organization,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/age_rating_content_descriptions_v2', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,description,organization,updated_at;'})
print ("response: %s" % str(response.json()))

Age Rating Content Descriptors

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
description String
organization Reference ID for Age Rating Organization The rating organization
updated_at datetime The last date this entry was updated in the IGDB database

Age Rating Organization

curl 'https://api.igdb.com/v4/age_rating_organizations' \
-d 'fields checksum,created_at,name,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/age_rating_organizations",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,name,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/age_rating_organizations")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,name,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/age_rating_organizations".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,name,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/age_rating_organizations")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,name,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/age_rating_organizations'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,name,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/age_rating_organizations', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,name,updated_at;'})
print ("response: %s" % str(response.json()))

Age Rating according to various rating organisations

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
name String The title of an age rating organization
updated_at datetime The last date this entry was updated in the IGDB database

Alternative Name

curl 'https://api.igdb.com/v4/alternative_names' \
-d 'fields checksum,comment,game,name;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/alternative_names",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,comment,game,name;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/alternative_names")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,comment,game,name;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/alternative_names".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,comment,game,name;").responseString()
let url = URL(string: "https://api.igdb.com/v4/alternative_names")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,comment,game,name;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/alternative_names'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,comment,game,name;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
comment String A description of what kind of alternative name it is (Acronym, Working title, Japanese title etc)
game Reference ID for Game The game this alternative name is associated with
name String An alternative name

Artwork

curl 'https://api.igdb.com/v4/artworks' \
-d 'fields alpha_channel,animated,checksum,game,height,image_id,url,width;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/artworks",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields alpha_channel,animated,checksum,game,height,image_id,url,width;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/artworks")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields alpha_channel,animated,checksum,game,height,image_id,url,width;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/artworks".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields alpha_channel,animated,checksum,game,height,image_id,url,width;").responseString()
let url = URL(string: "https://api.igdb.com/v4/artworks")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields alpha_channel,animated,checksum,game,height,image_id,url,width;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/artworks'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields alpha_channel,animated,checksum,game,height,image_id,url,width;'
puts http.request(request).body
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

field type description
alpha_channel boolean
animated boolean
checksum uuid Hash of the object
game Reference ID for Game The game this artwork is associated with
height Integer The height of the image in pixels
image_id String The ID of the image used to construct an IGDB image link
url String The website address (URL) of the item
width Integer The width of the image in pixels

Character

curl 'https://api.igdb.com/v4/characters' \
-d 'fields akas,character_gender,character_species,checksum,country_name,created_at,description,games,gender,mug_shot,name,slug,species,updated_at,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/characters",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields akas,character_gender,character_species,checksum,country_name,created_at,description,games,gender,mug_shot,name,slug,species,updated_at,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/characters")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields akas,character_gender,character_species,checksum,country_name,created_at,description,games,gender,mug_shot,name,slug,species,updated_at,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/characters".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields akas,character_gender,character_species,checksum,country_name,created_at,description,games,gender,mug_shot,name,slug,species,updated_at,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/characters")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields akas,character_gender,character_species,checksum,country_name,created_at,description,games,gender,mug_shot,name,slug,species,updated_at,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/characters'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields akas,character_gender,character_species,checksum,country_name,created_at,description,games,gender,mug_shot,name,slug,species,updated_at,url;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/characters', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields akas,character_gender,character_species,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

field type description
akas Array of Strings Alternative names for a character
character_gender Reference ID for Character Gender
character_species Reference ID for Character Specie
checksum uuid Hash of the object
country_name String A characters country of origin
created_at datetime Date this was initially added to the IGDB database
description String A text describing a character
games Array of Game IDs
gender Gender Enum DEPRECATED! Use character_gender instead
mug_shot Reference ID for Character Mug Shot An image depicting a character
name String
slug String A url-safe, unique, lower-case version of the name
species Species Enum DEPRECATED! Use character_species instead
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item

Character Enums

gender

name value
Male 0
Female 1
Other 2

species

name value
Human 1
Alien 2
Animal 3
Android 4
Unknown 5

Character Gender

curl 'https://api.igdb.com/v4/character_genders' \
-d 'fields checksum,created_at,name,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/character_genders",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,name,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/character_genders")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,name,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/character_genders".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,name,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/character_genders")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,name,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/character_genders'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,name,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/character_genders', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,name,updated_at;'})
print ("response: %s" % str(response.json()))

Character Genders

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
name String
updated_at datetime The last date this entry was updated in the IGDB database

Character Mug Shot

curl 'https://api.igdb.com/v4/character_mug_shots' \
-d 'fields alpha_channel,animated,checksum,height,image_id,url,width;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/character_mug_shots",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields alpha_channel,animated,checksum,height,image_id,url,width;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/character_mug_shots")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields alpha_channel,animated,checksum,height,image_id,url,width;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/character_mug_shots".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields alpha_channel,animated,checksum,height,image_id,url,width;").responseString()
let url = URL(string: "https://api.igdb.com/v4/character_mug_shots")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields alpha_channel,animated,checksum,height,image_id,url,width;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/character_mug_shots'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields alpha_channel,animated,checksum,height,image_id,url,width;'
puts http.request(request).body
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

field type description
alpha_channel boolean
animated boolean
checksum uuid Hash of the object
height Integer The height of the image in pixels
image_id String The ID of the image used to construct an IGDB image link
url String The website address (URL) of the item
width Integer The width of the image in pixels

Character Specie

curl 'https://api.igdb.com/v4/character_species' \
-d 'fields checksum,created_at,name,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/character_species",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,name,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/character_species")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,name,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/character_species".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,name,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/character_species")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,name,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/character_species'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,name,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/character_species', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,name,updated_at;'})
print ("response: %s" % str(response.json()))

Character Species

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
name String
updated_at datetime The last date this entry was updated in the IGDB database

Collection

curl 'https://api.igdb.com/v4/collections' \
-d 'fields as_child_relations,as_parent_relations,checksum,created_at,games,name,slug,type,updated_at,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/collections",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields as_child_relations,as_parent_relations,checksum,created_at,games,name,slug,type,updated_at,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/collections")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields as_child_relations,as_parent_relations,checksum,created_at,games,name,slug,type,updated_at,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/collections".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields as_child_relations,as_parent_relations,checksum,created_at,games,name,slug,type,updated_at,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/collections")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields as_child_relations,as_parent_relations,checksum,created_at,games,name,slug,type,updated_at,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/collections'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields as_child_relations,as_parent_relations,checksum,created_at,games,name,slug,type,updated_at,url;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/collections', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields as_child_relations,as_parent_relations,checksum,created_at,games,name,slug,type,updated_at,url;'})
print ("response: %s" % str(response.json()))

Collection, AKA Series

Request Path

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

field type description
as_child_relations Array of Collection Relation IDs
as_parent_relations Array of Collection Relation IDs
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
games Array of Game IDs The games that are associated with this collection
name String Umbrella term for a collection of games
slug String A url-safe, unique, lower-case version of the name
type Reference ID for Collection Type The type of collection
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item

Collection Membership

curl 'https://api.igdb.com/v4/collection_memberships' \
-d 'fields checksum,collection,created_at,game,type,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/collection_memberships",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,collection,created_at,game,type,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/collection_memberships")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,collection,created_at,game,type,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/collection_memberships".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,collection,created_at,game,type,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/collection_memberships")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,collection,created_at,game,type,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/collection_memberships'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,collection,created_at,game,type,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/collection_memberships', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,collection,created_at,game,type,updated_at;'})
print ("response: %s" % str(response.json()))

The Collection Memberships.

Request Path

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

field type description
checksum uuid Hash of the object
collection Reference ID for Collection The collection that is associated with this membership
created_at datetime Date this was initially added to the IGDB database
game Reference ID for Game The game that is associated with this membership
type Reference ID for Collection Membership Type The Collection Membership Type
updated_at datetime The last date this entry was updated in the IGDB database

Collection Membership Type

curl 'https://api.igdb.com/v4/collection_membership_types' \
-d 'fields allowed_collection_type,checksum,created_at,description,name,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/collection_membership_types",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields allowed_collection_type,checksum,created_at,description,name,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/collection_membership_types")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields allowed_collection_type,checksum,created_at,description,name,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/collection_membership_types".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields allowed_collection_type,checksum,created_at,description,name,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/collection_membership_types")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields allowed_collection_type,checksum,created_at,description,name,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/collection_membership_types'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields allowed_collection_type,checksum,created_at,description,name,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/collection_membership_types', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields allowed_collection_type,checksum,created_at,description,name,updated_at;'})
print ("response: %s" % str(response.json()))

Enums for collection membership types.

Request Path

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

field type description
allowed_collection_type Reference ID for Collection Type The allowed collection type
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
description String Description of the membership type.
name String The membership type name
updated_at datetime The last date this entry was updated in the IGDB database

Collection Relation

curl 'https://api.igdb.com/v4/collection_relations' \
-d 'fields checksum,child_collection,created_at,parent_collection,type,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/collection_relations",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,child_collection,created_at,parent_collection,type,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/collection_relations")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,child_collection,created_at,parent_collection,type,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/collection_relations".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,child_collection,created_at,parent_collection,type,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/collection_relations")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,child_collection,created_at,parent_collection,type,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/collection_relations'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,child_collection,created_at,parent_collection,type,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/collection_relations', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,child_collection,created_at,parent_collection,type,updated_at;'})
print ("response: %s" % str(response.json()))

Describes Relationship between Collections.

Request Path

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

field type description
checksum uuid Hash of the object
child_collection Reference ID for Collection The child collection of this collection.
created_at datetime Date this was initially added to the IGDB database
parent_collection Reference ID for Collection The parent collection of this collection.
type Reference ID for Collection Relation Type The collection relationship type
updated_at datetime The last date this entry was updated in the IGDB database

Collection Relation Type

curl 'https://api.igdb.com/v4/collection_relation_types' \
-d 'fields allowed_child_type,allowed_parent_type,checksum,created_at,description,name,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/collection_relation_types",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields allowed_child_type,allowed_parent_type,checksum,created_at,description,name,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/collection_relation_types")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields allowed_child_type,allowed_parent_type,checksum,created_at,description,name,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/collection_relation_types".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields allowed_child_type,allowed_parent_type,checksum,created_at,description,name,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/collection_relation_types")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields allowed_child_type,allowed_parent_type,checksum,created_at,description,name,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/collection_relation_types'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields allowed_child_type,allowed_parent_type,checksum,created_at,description,name,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/collection_relation_types', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields allowed_child_type,allowed_parent_type,checksum,created_at,description,name,updated_at;'})
print ("response: %s" % str(response.json()))

Collection Relation Types

Request Path

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

field type description
allowed_child_type Reference ID for Collection Type The allowed child collection type
allowed_parent_type Reference ID for Collection Type The allowed child collection type
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
description String The relationship type description
name String The relationship type name
updated_at datetime The last date this entry was updated in the IGDB database

Collection Type

curl 'https://api.igdb.com/v4/collection_types' \
-d 'fields checksum,created_at,description,name,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/collection_types",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,description,name,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/collection_types")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,description,name,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/collection_types".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,description,name,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/collection_types")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,description,name,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/collection_types'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,description,name,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/collection_types', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,description,name,updated_at;'})
print ("response: %s" % str(response.json()))

Enums for collection types.

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
description String Description of the collection type.
name String The name of the collection type
updated_at datetime The last date this entry was updated in the IGDB database

Company

curl 'https://api.igdb.com/v4/companies' \
-d 'fields change_date,change_date_category,change_date_format,changed_company_id,checksum,country,created_at,description,developed,logo,name,parent,published,slug,start_date,start_date_category,start_date_format,status,updated_at,url,websites;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/companies",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields change_date,change_date_category,change_date_format,changed_company_id,checksum,country,created_at,description,developed,logo,name,parent,published,slug,start_date,start_date_category,start_date_format,status,updated_at,url,websites;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/companies")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields change_date,change_date_category,change_date_format,changed_company_id,checksum,country,created_at,description,developed,logo,name,parent,published,slug,start_date,start_date_category,start_date_format,status,updated_at,url,websites;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/companies".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields change_date,change_date_category,change_date_format,changed_company_id,checksum,country,created_at,description,developed,logo,name,parent,published,slug,start_date,start_date_category,start_date_format,status,updated_at,url,websites;").responseString()
let url = URL(string: "https://api.igdb.com/v4/companies")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields change_date,change_date_category,change_date_format,changed_company_id,checksum,country,created_at,description,developed,logo,name,parent,published,slug,start_date,start_date_category,start_date_format,status,updated_at,url,websites;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/companies'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields change_date,change_date_category,change_date_format,changed_company_id,checksum,country,created_at,description,developed,logo,name,parent,published,slug,start_date,start_date_category,start_date_format,status,updated_at,url,websites;'
puts http.request(request).body
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,change_date_format,changed_company_id,checksum,country,created_at,description,developed,logo,name,parent,published,slug,start_date,start_date_category,start_date_format,status,updated_at,url,websites;'})
print ("response: %s" % str(response.json()))

Video game companies. Both publishers & developers

Request Path

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

field type description
change_date Unix Time Stamp The data when a company got a new ID
change_date_category Change Date Category Enum DEPRECATED! Use change_date_format instead
change_date_format Reference ID for Date Format The format of the change date
changed_company_id Reference ID for Company The new ID for a company that has gone through a merger or restructuring
checksum uuid Hash of the object
country Integer ISO 3166-1 country code
created_at datetime Date this was initially added to the IGDB database
description String A free text description of a company
developed Array of Game IDs An array of games that a company has developed
logo Reference ID for Company Logo The company’s logo
name String
parent Reference ID for Company A company with a controlling interest in a specific company
published Array of Game IDs An array of games that a company has published
slug String A url-safe, unique, lower-case version of the name
start_date Unix Time Stamp The date a company was founded
start_date_category Start Date Category Enum DEPRECATED! Use start_date_format instead
start_date_format Reference ID for Date Format The format of the start date
status Reference ID for Company Status The status of the company
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item
websites Array of Company Website IDs The companies official websites

Company Enums

change_date_category

name value
YYYYMMMMDD 0
YYYYMMMM 1
YYYY 2
YYYYQ1 3
YYYYQ2 4
YYYYQ3 5
YYYYQ4 6
TBD 7

start_date_category

name value
YYYYMMMMDD 0
YYYYMMMM 1
YYYY 2
YYYYQ1 3
YYYYQ2 4
YYYYQ3 5
YYYYQ4 6
TBD 7
curl 'https://api.igdb.com/v4/company_logos' \
-d 'fields alpha_channel,animated,checksum,height,image_id,url,width;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/company_logos",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields alpha_channel,animated,checksum,height,image_id,url,width;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/company_logos")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields alpha_channel,animated,checksum,height,image_id,url,width;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/company_logos".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields alpha_channel,animated,checksum,height,image_id,url,width;").responseString()
let url = URL(string: "https://api.igdb.com/v4/company_logos")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields alpha_channel,animated,checksum,height,image_id,url,width;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/company_logos'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields alpha_channel,animated,checksum,height,image_id,url,width;'
puts http.request(request).body
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

field type description
alpha_channel boolean
animated boolean
checksum uuid Hash of the object
height Integer The height of the image in pixels
image_id String The ID of the image used to construct an IGDB image link
url String The website address (URL) of the item
width Integer The width of the image in pixels

Company Status

curl 'https://api.igdb.com/v4/company_statuses' \
-d 'fields checksum,created_at,name,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/company_statuses",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,name,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/company_statuses")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,name,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/company_statuses".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,name,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/company_statuses")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,name,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/company_statuses'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,name,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/company_statuses', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,name,updated_at;'})
print ("response: %s" % str(response.json()))

Company Status

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
name String
updated_at datetime The last date this entry was updated in the IGDB database

Company Website

curl 'https://api.igdb.com/v4/company_websites' \
-d 'fields category,checksum,trusted,type,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/company_websites",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields category,checksum,trusted,type,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/company_websites")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields category,checksum,trusted,type,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/company_websites".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields category,checksum,trusted,type,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/company_websites")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields category,checksum,trusted,type,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/company_websites'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields category,checksum,trusted,type,url;'
puts http.request(request).body
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,type,url;'})
print ("response: %s" % str(response.json()))

Company Website

Request Path

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

field type description
category Category Enum DEPRECATED! Use type instead
checksum uuid Hash of the object
trusted boolean
type Reference ID for Website Type The website type associated with the website
url String The website address (URL) of the item

Company Website Enums

category

name value
official 1
wikia 2
wikipedia 3
facebook 4
twitter 5
twitch 6
instagram 8
youtube 9
iphone 10
ipad 11
android 12
steam 13
reddit 14
itch 15
epicgames 16
gog 17
discord 18
bluesky 19

Cover

curl 'https://api.igdb.com/v4/covers' \
-d 'fields alpha_channel,animated,checksum,game,game_localization,height,image_id,url,width;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/covers",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields alpha_channel,animated,checksum,game,game_localization,height,image_id,url,width;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/covers")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields alpha_channel,animated,checksum,game,game_localization,height,image_id,url,width;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/covers".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields alpha_channel,animated,checksum,game,game_localization,height,image_id,url,width;").responseString()
let url = URL(string: "https://api.igdb.com/v4/covers")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields alpha_channel,animated,checksum,game,game_localization,height,image_id,url,width;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/covers'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields alpha_channel,animated,checksum,game,game_localization,height,image_id,url,width;'
puts http.request(request).body
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

field type description
alpha_channel boolean
animated boolean
checksum uuid Hash of the object
game Reference ID for Game The 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_localization Reference ID for Game Localization The game localization this cover might be associated with
height Integer The height of the image in pixels
image_id String The ID of the image used to construct an IGDB image link
url String The website address (URL) of the item
width Integer The width of the image in pixels

Date Format

curl 'https://api.igdb.com/v4/date_formats' \
-d 'fields checksum,created_at,format,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/date_formats",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,format,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/date_formats")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,format,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/date_formats".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,format,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/date_formats")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,format,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/date_formats'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,format,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/date_formats', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,format,updated_at;'})
print ("response: %s" % str(response.json()))

The Date Format

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
format String
updated_at datetime The last date this entry was updated in the IGDB database
curl 'https://api.igdb.com/v4/event_logos' \
-d 'fields alpha_channel,animated,checksum,created_at,event,height,image_id,updated_at,url,width;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/event_logos",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields alpha_channel,animated,checksum,created_at,event,height,image_id,updated_at,url,width;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/event_logos")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields alpha_channel,animated,checksum,created_at,event,height,image_id,updated_at,url,width;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/event_logos".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields alpha_channel,animated,checksum,created_at,event,height,image_id,updated_at,url,width;").responseString()
let url = URL(string: "https://api.igdb.com/v4/event_logos")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields alpha_channel,animated,checksum,created_at,event,height,image_id,updated_at,url,width;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/event_logos'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields alpha_channel,animated,checksum,created_at,event,height,image_id,updated_at,url,width;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/event_logos', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields alpha_channel,animated,checksum,created_at,event,height,image_id,updated_at,url,width;'})
print ("response: %s" % str(response.json()))

Logo for the event

Request Path

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

field type description
alpha_channel boolean
animated boolean
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
event Reference ID for Event The event associated with this logo.
height Integer The height of the image in pixels
image_id String The ID of the image used to construct an IGDB image link
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item
width Integer The width of the image in pixels

Event Network

curl 'https://api.igdb.com/v4/event_networks' \
-d 'fields checksum,created_at,event,network_type,updated_at,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/event_networks",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,event,network_type,updated_at,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/event_networks")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,event,network_type,updated_at,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/event_networks".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,event,network_type,updated_at,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/event_networks")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,event,network_type,updated_at,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/event_networks'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,event,network_type,updated_at,url;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/event_networks', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,event,network_type,updated_at,url;'})
print ("response: %s" % str(response.json()))

Urls related to the event like twitter, facebook and youtube

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
event Reference ID for Event The event associated with this URL.
network_type Reference ID for Network Type Network type
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item

Event

curl 'https://api.igdb.com/v4/events' \
-d 'fields checksum,created_at,description,end_time,event_logo,event_networks,games,live_stream_url,name,slug,start_time,time_zone,updated_at,videos;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/events",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,description,end_time,event_logo,event_networks,games,live_stream_url,name,slug,start_time,time_zone,updated_at,videos;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/events")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,description,end_time,event_logo,event_networks,games,live_stream_url,name,slug,start_time,time_zone,updated_at,videos;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/events".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,description,end_time,event_logo,event_networks,games,live_stream_url,name,slug,start_time,time_zone,updated_at,videos;").responseString()
let url = URL(string: "https://api.igdb.com/v4/events")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,description,end_time,event_logo,event_networks,games,live_stream_url,name,slug,start_time,time_zone,updated_at,videos;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/events'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,description,end_time,event_logo,event_networks,games,live_stream_url,name,slug,start_time,time_zone,updated_at,videos;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/events', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,description,end_time,event_logo,event_networks,games,live_stream_url,name,slug,start_time,time_zone,updated_at,videos;'})
print ("response: %s" % str(response.json()))

Gaming event like GamesCom, Tokyo Game Show, PAX or GSL

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
description String The description of the event
end_time datetime End time of the event in UTC
event_logo Reference ID for Event Logo Logo of the event.
event_networks Array of Event Network IDs Urls associated with the event
games Array of Game IDs Games featured in the event
live_stream_url String URL to the livestream of the event.
name String The name of the event
slug String A url-safe, unique, lower-case version of the name
start_time datetime Start time of the event in UTC
time_zone String Timezone the event is in.
updated_at datetime The last date this entry was updated in the IGDB database
videos Array of Game Video IDs Trailers featured in the event

External Game

curl 'https://api.igdb.com/v4/external_games' \
-d 'fields category,checksum,countries,created_at,external_game_source,game,game_release_format,media,name,platform,uid,updated_at,url,year;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/external_games",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields category,checksum,countries,created_at,external_game_source,game,game_release_format,media,name,platform,uid,updated_at,url,year;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/external_games")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields category,checksum,countries,created_at,external_game_source,game,game_release_format,media,name,platform,uid,updated_at,url,year;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/external_games".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields category,checksum,countries,created_at,external_game_source,game,game_release_format,media,name,platform,uid,updated_at,url,year;").responseString()
let url = URL(string: "https://api.igdb.com/v4/external_games")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields category,checksum,countries,created_at,external_game_source,game,game_release_format,media,name,platform,uid,updated_at,url,year;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/external_games'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields category,checksum,countries,created_at,external_game_source,game,game_release_format,media,name,platform,uid,updated_at,url,year;'
puts http.request(request).body
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,external_game_source,game,game_release_format,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

field type description
category Category Enum DEPRECATED! Use external_game_source instead
checksum uuid Hash of the object
countries Array of Integers The ISO country code of the external game product.
created_at datetime Date this was initially added to the IGDB database
external_game_source Reference ID for External Game Source The source of the external game.
game Reference ID for Game The IGDB ID of the game
game_release_format Reference ID for Game Release Format The release format of the external game.
media Media Enum DEPRECATED! Use game_release_format instead
name String The name of the game according to the other service
platform Reference ID for Platform The platform of the external game product.
uid String The other services ID for this game
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item
year Integer The year in full (2018)

External Game Enums

category

name value
steam 1
gog 5
youtube 10
microsoft 11
apple 13
twitch 14
android 15
amazon_asin 20
amazon_luna 22
amazon_adg 23
epic_game_store 26
oculus 28
utomik 29
itch_io 30
xbox_marketplace 31
kartridge 32
playstation_store_us 36
focus_entertainment 37
xbox_game_pass_ultimate_cloud 54
gamejolt 55

media

name value
digital 1
physical 2

External Game Source

curl 'https://api.igdb.com/v4/external_game_sources' \
-d 'fields checksum,created_at,name,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/external_game_sources",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,name,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/external_game_sources")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,name,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/external_game_sources".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,name,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/external_game_sources")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,name,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/external_game_sources'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,name,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/external_game_sources', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,name,updated_at;'})
print ("response: %s" % str(response.json()))

Sources for the external games

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
name String
updated_at datetime The last date this entry was updated in the IGDB database

Franchise

curl 'https://api.igdb.com/v4/franchises' \
-d 'fields checksum,created_at,games,name,slug,updated_at,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/franchises",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,games,name,slug,updated_at,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/franchises")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,games,name,slug,updated_at,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/franchises".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,games,name,slug,updated_at,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/franchises")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,games,name,slug,updated_at,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/franchises'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,games,name,slug,updated_at,url;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
games Array of Game IDs The games that are associated with this franchise
name String The name of the franchise
slug String A url-safe, unique, lower-case version of the name
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item

Game

curl 'https://api.igdb.com/v4/games' \
-d 'fields age_ratings,aggregated_rating,aggregated_rating_count,alternative_names,artworks,bundles,category,checksum,collection,collections,cover,created_at,dlcs,expanded_games,expansions,external_games,first_release_date,follows,forks,franchise,franchises,game_engines,game_localizations,game_modes,game_status,game_type,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;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/games",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields age_ratings,aggregated_rating,aggregated_rating_count,alternative_names,artworks,bundles,category,checksum,collection,collections,cover,created_at,dlcs,expanded_games,expansions,external_games,first_release_date,follows,forks,franchise,franchises,game_engines,game_localizations,game_modes,game_status,game_type,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;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/games")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields age_ratings,aggregated_rating,aggregated_rating_count,alternative_names,artworks,bundles,category,checksum,collection,collections,cover,created_at,dlcs,expanded_games,expansions,external_games,first_release_date,follows,forks,franchise,franchises,game_engines,game_localizations,game_modes,game_status,game_type,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;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/games".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields age_ratings,aggregated_rating,aggregated_rating_count,alternative_names,artworks,bundles,category,checksum,collection,collections,cover,created_at,dlcs,expanded_games,expansions,external_games,first_release_date,follows,forks,franchise,franchises,game_engines,game_localizations,game_modes,game_status,game_type,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;").responseString()
let url = URL(string: "https://api.igdb.com/v4/games")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields age_ratings,aggregated_rating,aggregated_rating_count,alternative_names,artworks,bundles,category,checksum,collection,collections,cover,created_at,dlcs,expanded_games,expansions,external_games,first_release_date,follows,forks,franchise,franchises,game_engines,game_localizations,game_modes,game_status,game_type,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;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/games'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields age_ratings,aggregated_rating,aggregated_rating_count,alternative_names,artworks,bundles,category,checksum,collection,collections,cover,created_at,dlcs,expanded_games,expansions,external_games,first_release_date,follows,forks,franchise,franchises,game_engines,game_localizations,game_modes,game_status,game_type,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;'
puts http.request(request).body
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,collections,cover,created_at,dlcs,expanded_games,expansions,external_games,first_release_date,follows,forks,franchise,franchises,game_engines,game_localizations,game_modes,game_status,game_type,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

field type description
age_ratings Array of Age Rating IDs The PEGI rating
aggregated_rating Double Rating based on external critic scores
aggregated_rating_count Integer Number of external critic scores
alternative_names Array of Alternative Name IDs Alternative names for this game
artworks Array of Artwork IDs Artworks of this game
bundles Array of Game IDs The bundles this game is a part of
category Category Enum DEPRECATED! Use game_type instead
checksum uuid Hash of the object
collection Reference ID for Collection DEPRECATED! Use collections instead
collections Array of Collection IDs The collections that this game is in.
cover Reference ID for Cover The cover of this game
created_at datetime Date this was initially added to the IGDB database
dlcs Array of Game IDs DLCs for this game
expanded_games Array of Game IDs Expanded games of this game
expansions Array of Game IDs Expansions of this game
external_games Array of External Game IDs External IDs this game has on other services
first_release_date Unix Time Stamp The first release date for this game
follows Integer DEPRECATED! - To be removed
forks Array of Game IDs Forks of this game
franchise Reference ID for Franchise The main franchise
franchises Array of Franchise IDs Other franchises the game belongs to
game_engines Array of Game Engine IDs The game engine used in this game
game_localizations Array of Game Localization IDs Supported game localizations for this game. A region can have at most one game localization for a given game
game_modes Array of Game Mode IDs Modes of gameplay
game_status Reference ID for Game Status The status of the games release
game_type Reference ID for Game Type The type of game
genres Array of Genre IDs Genres of the game
hypes Integer Number of follows a game gets before release
involved_companies Array of Involved Company IDs Companies who developed this game
keywords Array of Keyword IDs Associated keywords
language_supports Array of Language Support IDs Supported Languages for this game
multiplayer_modes Array of Multiplayer Mode IDs Multiplayer modes for this game
name String
parent_game Reference ID for Game If a DLC, expansion or part of a bundle, this is the main game or bundle
platforms Array of Platform IDs Platforms this game was released on
player_perspectives Array of Player Perspective IDs The main perspective of the player
ports Array of Game IDs Ports of this game
rating Double Average IGDB user rating
rating_count Integer Total number of IGDB user ratings
release_dates Array of Release Date IDs Release dates of this game
remakes Array of Game IDs Remakes of this game
remasters Array of Game IDs Remasters of this game
screenshots Array of Screenshot IDs Screenshots of this game
similar_games Array of Game IDs Similar games
slug String A url-safe, unique, lower-case version of the name
standalone_expansions Array of Game IDs Standalone expansions of this game
status Status Enum DEPRECATED! Use game_status instead
storyline String A short description of a games story
summary String A description of the game
tags Array of Tag Numbers Related entities in the IGDB API
themes Array of Theme IDs Themes of the game
total_rating Double Average rating based on both IGDB user and external critic scores
total_rating_count Integer Total number of user and external critic scores
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item
version_parent Reference ID for Game If a version, this is the main game
version_title String Title of this version (i.e Gold edition)
videos Array of Game Video IDs Videos of this game
websites Array of Website IDs Websites associated with this game

Game Enums

category

name value
main_game 0
dlc_addon 1
expansion 2
bundle 3
standalone_expansion 4
mod 5
episode 6
season 7
remake 8
remaster 9
expanded_game 10
port 11
fork 12
pack 13
update 14

status

name value
released 0
alpha 2
beta 3
early_access 4
offline 5
cancelled 6
rumored 7
delisted 8

Game Engine

curl 'https://api.igdb.com/v4/game_engines' \
-d 'fields checksum,companies,created_at,description,logo,name,platforms,slug,updated_at,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/game_engines",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,companies,created_at,description,logo,name,platforms,slug,updated_at,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/game_engines")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,companies,created_at,description,logo,name,platforms,slug,updated_at,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/game_engines".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,companies,created_at,description,logo,name,platforms,slug,updated_at,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/game_engines")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,companies,created_at,description,logo,name,platforms,slug,updated_at,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/game_engines'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,companies,created_at,description,logo,name,platforms,slug,updated_at,url;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
companies Array of Company IDs Companies who used this game engine
created_at datetime Date this was initially added to the IGDB database
description String Description of the game engine
logo Reference ID for Game Engine Logo Logo of the game engine
name String Name of the game engine
platforms Array of Platform IDs Platforms this game engine was deployed on
slug String A url-safe, unique, lower-case version of the name
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item
curl 'https://api.igdb.com/v4/game_engine_logos' \
-d 'fields alpha_channel,animated,checksum,height,image_id,url,width;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/game_engine_logos",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields alpha_channel,animated,checksum,height,image_id,url,width;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/game_engine_logos")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields alpha_channel,animated,checksum,height,image_id,url,width;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/game_engine_logos".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields alpha_channel,animated,checksum,height,image_id,url,width;").responseString()
let url = URL(string: "https://api.igdb.com/v4/game_engine_logos")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields alpha_channel,animated,checksum,height,image_id,url,width;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/game_engine_logos'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields alpha_channel,animated,checksum,height,image_id,url,width;'
puts http.request(request).body
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

field type description
alpha_channel boolean
animated boolean
checksum uuid Hash of the object
height Integer The height of the image in pixels
image_id String The ID of the image used to construct an IGDB image link
url String The website address (URL) of the item
width Integer The width of the image in pixels

Game Localization

curl 'https://api.igdb.com/v4/game_localizations' \
-d 'fields checksum,cover,created_at,game,name,region,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/game_localizations",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,cover,created_at,game,name,region,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/game_localizations")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,cover,created_at,game,name,region,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/game_localizations".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,cover,created_at,game,name,region,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/game_localizations")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,cover,created_at,game,name,region,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/game_localizations'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,cover,created_at,game,name,region,updated_at;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
cover Reference ID for Cover The cover of this game localization
created_at datetime Date this was initially added to the IGDB database
game Reference ID for Game The Game the localization belongs to
name String
region Reference ID for Region The Region of the localization
updated_at datetime The last date this entry was updated in the IGDB database

Game Mode

curl 'https://api.igdb.com/v4/game_modes' \
-d 'fields checksum,created_at,name,slug,updated_at,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/game_modes",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,name,slug,updated_at,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/game_modes")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,name,slug,updated_at,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/game_modes".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,name,slug,updated_at,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/game_modes")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,name,slug,updated_at,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/game_modes'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,name,slug,updated_at,url;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
name String The name of the game mode
slug String A url-safe, unique, lower-case version of the name
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item

Game Release Format

curl 'https://api.igdb.com/v4/game_release_formats' \
-d 'fields checksum,created_at,format,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/game_release_formats",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,format,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/game_release_formats")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,format,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/game_release_formats".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,format,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/game_release_formats")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,format,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/game_release_formats'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,format,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/game_release_formats', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,format,updated_at;'})
print ("response: %s" % str(response.json()))

The format of the game release

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
format String
updated_at datetime The last date this entry was updated in the IGDB database

Game Status

curl 'https://api.igdb.com/v4/game_statuses' \
-d 'fields checksum,created_at,status,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/game_statuses",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,status,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/game_statuses")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,status,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/game_statuses".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,status,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/game_statuses")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,status,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/game_statuses'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,status,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/game_statuses', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,status,updated_at;'})
print ("response: %s" % str(response.json()))

The release status of the game

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
status String
updated_at datetime The last date this entry was updated in the IGDB database

Game Time To Beat

curl 'https://api.igdb.com/v4/game_time_to_beats' \
-d 'fields checksum,completely,count,created_at,game_id,hastily,normally,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/game_time_to_beats",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,completely,count,created_at,game_id,hastily,normally,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/game_time_to_beats")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,completely,count,created_at,game_id,hastily,normally,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/game_time_to_beats".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,completely,count,created_at,game_id,hastily,normally,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/game_time_to_beats")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,completely,count,created_at,game_id,hastily,normally,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/game_time_to_beats'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,completely,count,created_at,game_id,hastily,normally,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/game_time_to_beats', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,completely,count,created_at,game_id,hastily,normally,updated_at;'})
print ("response: %s" % str(response.json()))

Average time to beat times for a game.

Request Path

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

field type description
checksum uuid Hash of the object
completely Integer Average time (in seconds) to finish the game to 100% completion.
count Integer Total number of time to beat submissions for this game
created_at datetime Date this was initially added to the IGDB database
game_id Integer The ID of the game associated with the time to beat data
hastily Integer Average time (in seconds) to finish the game to its credits without spending notable time on extras such as side quests.
normally Integer Average time (in seconds) to finish the game while mixing in some extras such as side quests without being overly thorough.
updated_at datetime The last date this entry was updated in the IGDB database

Game Type

curl 'https://api.igdb.com/v4/game_types' \
-d 'fields checksum,created_at,type,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/game_types",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,type,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/game_types")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,type,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/game_types".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,type,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/game_types")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,type,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/game_types'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,type,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/game_types', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,type,updated_at;'})
print ("response: %s" % str(response.json()))

The type that this game is

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
type String
updated_at datetime The last date this entry was updated in the IGDB database

Game Version

curl 'https://api.igdb.com/v4/game_versions' \
-d 'fields checksum,created_at,features,game,games,updated_at,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/game_versions",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,features,game,games,updated_at,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/game_versions")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,features,game,games,updated_at,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/game_versions".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,features,game,games,updated_at,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/game_versions")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,features,game,games,updated_at,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/game_versions'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,features,game,games,updated_at,url;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
features Array of Game Version Feature IDs Features and descriptions of what makes each version/edition different from the main game
game Reference ID for Game The game these versions/editions are of
games Array of Game IDs Game Versions and Editions
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item

Game Version Feature

curl 'https://api.igdb.com/v4/game_version_features' \
-d 'fields category,checksum,description,position,title,values;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/game_version_features",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields category,checksum,description,position,title,values;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/game_version_features")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields category,checksum,description,position,title,values;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/game_version_features".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields category,checksum,description,position,title,values;").responseString()
let url = URL(string: "https://api.igdb.com/v4/game_version_features")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields category,checksum,description,position,title,values;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/game_version_features'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields category,checksum,description,position,title,values;'
puts http.request(request).body
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

field type description
category Category Enum The category of the feature description
checksum uuid Hash of the object
description String The description of the feature
position Integer Position of this feature in the list of features
title String The title of the feature
values Array of Game Version Feature Value IDs The bool/text value of the feature

Game Version Feature Enums

category

name value
boolean 0
description 1

Game Version Feature Value

curl 'https://api.igdb.com/v4/game_version_feature_values' \
-d 'fields checksum,game,game_feature,included_feature,note;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/game_version_feature_values",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,game,game_feature,included_feature,note;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/game_version_feature_values")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,game,game_feature,included_feature,note;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/game_version_feature_values".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,game,game_feature,included_feature,note;").responseString()
let url = URL(string: "https://api.igdb.com/v4/game_version_feature_values")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,game,game_feature,included_feature,note;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/game_version_feature_values'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,game,game_feature,included_feature,note;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
game Reference ID for Game The version/edition this value refers to
game_feature Reference ID for Game Version Feature The id of the game feature
included_feature Included Feature Enum The boole value of this feature
note String The text value of this feature

Game Version Feature Value Enums

included_feature

name value
NOT_INCLUDED 0
INCLUDED 1
PRE_ORDER_ONLY 2

Game Video

curl 'https://api.igdb.com/v4/game_videos' \
-d 'fields checksum,game,name,video_id;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/game_videos",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,game,name,video_id;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/game_videos")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,game,name,video_id;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/game_videos".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,game,name,video_id;").responseString()
let url = URL(string: "https://api.igdb.com/v4/game_videos")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,game,name,video_id;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/game_videos'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,game,name,video_id;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
game Reference ID for Game The game this video is associated with
name String The name of the video
video_id String The external ID of the video (YouTube Links)

Genre

curl 'https://api.igdb.com/v4/genres' \
-d 'fields checksum,created_at,name,slug,updated_at,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/genres",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,name,slug,updated_at,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/genres")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,name,slug,updated_at,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/genres".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,name,slug,updated_at,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/genres")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,name,slug,updated_at,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/genres'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,name,slug,updated_at,url;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
name String
slug String A url-safe, unique, lower-case version of the name
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item

Keyword

curl 'https://api.igdb.com/v4/keywords' \
-d 'fields checksum,created_at,name,slug,updated_at,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/keywords",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,name,slug,updated_at,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/keywords")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,name,slug,updated_at,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/keywords".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,name,slug,updated_at,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/keywords")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,name,slug,updated_at,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/keywords'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,name,slug,updated_at,url;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
name String
slug String A url-safe, unique, lower-case version of the name
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item

Involved Company

curl 'https://api.igdb.com/v4/involved_companies' \
-d 'fields checksum,company,created_at,developer,game,porting,publisher,supporting,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/involved_companies",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,company,created_at,developer,game,porting,publisher,supporting,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/involved_companies")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,company,created_at,developer,game,porting,publisher,supporting,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/involved_companies".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,company,created_at,developer,game,porting,publisher,supporting,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/involved_companies")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,company,created_at,developer,game,porting,publisher,supporting,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/involved_companies'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,company,created_at,developer,game,porting,publisher,supporting,updated_at;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
company Reference ID for Company
created_at datetime Date this was initially added to the IGDB database
developer boolean
game Reference ID for Game
porting boolean
publisher boolean
supporting boolean
updated_at datetime The last date this entry was updated in the IGDB database

Language

curl 'https://api.igdb.com/v4/languages' \
-d 'fields checksum,created_at,locale,name,native_name,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/languages",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,locale,name,native_name,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/languages")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,locale,name,native_name,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/languages".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,locale,name,native_name,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/languages")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,locale,name,native_name,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/languages'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,locale,name,native_name,updated_at;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
locale String The combination of Language code and Country code
name String The English name of the Language
native_name String The Native Name of the Language
updated_at datetime The last date this entry was updated in the IGDB database

Language Support

curl 'https://api.igdb.com/v4/language_supports' \
-d 'fields checksum,created_at,game,language,language_support_type,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/language_supports",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,game,language,language_support_type,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/language_supports")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,game,language,language_support_type,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/language_supports".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,game,language,language_support_type,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/language_supports")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,game,language,language_support_type,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/language_supports'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,game,language,language_support_type,updated_at;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
game Reference ID for Game
language Reference ID for Language
language_support_type Reference ID for Language Support Type
updated_at datetime The last date this entry was updated in the IGDB database

Language Support Type

curl 'https://api.igdb.com/v4/language_support_types' \
-d 'fields checksum,created_at,name,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/language_support_types",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,name,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/language_support_types")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,name,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/language_support_types".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,name,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/language_support_types")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,name,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/language_support_types'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,name,updated_at;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
name String
updated_at datetime The last date this entry was updated in the IGDB database

Multiplayer Mode

curl 'https://api.igdb.com/v4/multiplayer_modes' \
-d 'fields campaigncoop,checksum,dropin,game,lancoop,offlinecoop,offlinecoopmax,offlinemax,onlinecoop,onlinecoopmax,onlinemax,platform,splitscreen,splitscreenonline;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/multiplayer_modes",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields campaigncoop,checksum,dropin,game,lancoop,offlinecoop,offlinecoopmax,offlinemax,onlinecoop,onlinecoopmax,onlinemax,platform,splitscreen,splitscreenonline;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/multiplayer_modes")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields campaigncoop,checksum,dropin,game,lancoop,offlinecoop,offlinecoopmax,offlinemax,onlinecoop,onlinecoopmax,onlinemax,platform,splitscreen,splitscreenonline;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/multiplayer_modes".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields campaigncoop,checksum,dropin,game,lancoop,offlinecoop,offlinecoopmax,offlinemax,onlinecoop,onlinecoopmax,onlinemax,platform,splitscreen,splitscreenonline;").responseString()
let url = URL(string: "https://api.igdb.com/v4/multiplayer_modes")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields campaigncoop,checksum,dropin,game,lancoop,offlinecoop,offlinecoopmax,offlinemax,onlinecoop,onlinecoopmax,onlinemax,platform,splitscreen,splitscreenonline;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/multiplayer_modes'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields campaigncoop,checksum,dropin,game,lancoop,offlinecoop,offlinecoopmax,offlinemax,onlinecoop,onlinecoopmax,onlinemax,platform,splitscreen,splitscreenonline;'
puts http.request(request).body
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

field type description
campaigncoop boolean True if the game supports campaign coop
checksum uuid Hash of the object
dropin boolean True if the game supports drop in/out multiplayer
game Reference ID for Game The game this multiplayer mode is associated with
lancoop boolean True if the game supports LAN coop
offlinecoop boolean True if the game supports offline coop
offlinecoopmax Integer Maximum number of offline players in offline coop
offlinemax Integer Maximum number of players in offline multiplayer
onlinecoop boolean True if the game supports online coop
onlinecoopmax Integer Maximum number of online players in online coop
onlinemax Integer Maximum number of players in online multiplayer
platform Reference ID for Platform The platform this multiplayer mode refers to
splitscreen boolean True if the game supports split screen, offline multiplayer
splitscreenonline boolean True if the game supports split screen, online multiplayer

Network Type

curl 'https://api.igdb.com/v4/network_types' \
-d 'fields checksum,created_at,event_networks,name,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/network_types",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,event_networks,name,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/network_types")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,event_networks,name,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/network_types".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,event_networks,name,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/network_types")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,event_networks,name,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/network_types'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,event_networks,name,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/network_types', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,event_networks,name,updated_at;'})
print ("response: %s" % str(response.json()))

Social networks related to the event like twitter, facebook and youtube

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
event_networks Array of Event Network IDs Urls associated with the event type
name String
updated_at datetime The last date this entry was updated in the IGDB database

Platform

curl 'https://api.igdb.com/v4/platforms' \
-d 'fields abbreviation,alternative_name,category,checksum,created_at,generation,name,platform_family,platform_logo,platform_type,slug,summary,updated_at,url,versions,websites;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/platforms",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields abbreviation,alternative_name,category,checksum,created_at,generation,name,platform_family,platform_logo,platform_type,slug,summary,updated_at,url,versions,websites;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/platforms")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields abbreviation,alternative_name,category,checksum,created_at,generation,name,platform_family,platform_logo,platform_type,slug,summary,updated_at,url,versions,websites;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/platforms".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields abbreviation,alternative_name,category,checksum,created_at,generation,name,platform_family,platform_logo,platform_type,slug,summary,updated_at,url,versions,websites;").responseString()
let url = URL(string: "https://api.igdb.com/v4/platforms")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields abbreviation,alternative_name,category,checksum,created_at,generation,name,platform_family,platform_logo,platform_type,slug,summary,updated_at,url,versions,websites;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/platforms'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields abbreviation,alternative_name,category,checksum,created_at,generation,name,platform_family,platform_logo,platform_type,slug,summary,updated_at,url,versions,websites;'
puts http.request(request).body
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,platform_type,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

field type description
abbreviation String An abbreviation of the platform name
alternative_name String An alternative name for the platform
category Category Enum DEPRECATED! Use platform_type instead
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
generation Integer The generation of the platform
name String The name of the platform
platform_family Reference ID for Platform Family The family of platforms this one belongs to
platform_logo Reference ID for Platform Logo The logo of the first Version of this platform
platform_type Reference ID for Platform Type The type of the platform
slug String A url-safe, unique, lower-case version of the name
summary String The summary of the first Version of this platform
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item
versions Array of Platform Version IDs Associated versions of this platform
websites Array of Platform Website IDs The main website

Platform Enums

category

name value
console 1
arcade 2
platform 3
operating_system 4
portable_console 5
computer 6

Platform Family

curl 'https://api.igdb.com/v4/platform_families' \
-d 'fields checksum,name,slug;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/platform_families",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,name,slug;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/platform_families")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,name,slug;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/platform_families".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,name,slug;").responseString()
let url = URL(string: "https://api.igdb.com/v4/platform_families")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,name,slug;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/platform_families'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,name,slug;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
name String The name of the platform family
slug String A url-safe, unique, lower-case version of the name
curl 'https://api.igdb.com/v4/platform_logos' \
-d 'fields alpha_channel,animated,checksum,height,image_id,url,width;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/platform_logos",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields alpha_channel,animated,checksum,height,image_id,url,width;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/platform_logos")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields alpha_channel,animated,checksum,height,image_id,url,width;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/platform_logos".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields alpha_channel,animated,checksum,height,image_id,url,width;").responseString()
let url = URL(string: "https://api.igdb.com/v4/platform_logos")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields alpha_channel,animated,checksum,height,image_id,url,width;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/platform_logos'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields alpha_channel,animated,checksum,height,image_id,url,width;'
puts http.request(request).body
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

field type description
alpha_channel boolean
animated boolean
checksum uuid Hash of the object
height Integer The height of the image in pixels
image_id String The ID of the image used to construct an IGDB image link
url String The website address (URL) of the item
width Integer The width of the image in pixels

Platform Type

curl 'https://api.igdb.com/v4/platform_types' \
-d 'fields checksum,created_at,name,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/platform_types",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,name,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/platform_types")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,name,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/platform_types".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,name,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/platform_types")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,name,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/platform_types'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,name,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/platform_types', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,name,updated_at;'})
print ("response: %s" % str(response.json()))

Types of platforms

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
name String
updated_at datetime The last date this entry was updated in the IGDB database

Platform Version

curl 'https://api.igdb.com/v4/platform_versions' \
-d 'fields checksum,companies,connectivity,cpu,graphics,main_manufacturer,media,memory,name,os,output,platform_logo,platform_version_release_dates,resolutions,slug,sound,storage,summary,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/platform_versions",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,companies,connectivity,cpu,graphics,main_manufacturer,media,memory,name,os,output,platform_logo,platform_version_release_dates,resolutions,slug,sound,storage,summary,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/platform_versions")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,companies,connectivity,cpu,graphics,main_manufacturer,media,memory,name,os,output,platform_logo,platform_version_release_dates,resolutions,slug,sound,storage,summary,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/platform_versions".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,companies,connectivity,cpu,graphics,main_manufacturer,media,memory,name,os,output,platform_logo,platform_version_release_dates,resolutions,slug,sound,storage,summary,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/platform_versions")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,companies,connectivity,cpu,graphics,main_manufacturer,media,memory,name,os,output,platform_logo,platform_version_release_dates,resolutions,slug,sound,storage,summary,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/platform_versions'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,companies,connectivity,cpu,graphics,main_manufacturer,media,memory,name,os,output,platform_logo,platform_version_release_dates,resolutions,slug,sound,storage,summary,url;'
puts http.request(request).body
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,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

field type description
checksum uuid Hash of the object
companies Array of Platform Version Company IDs Who developed this platform version
connectivity String The network capabilities
cpu String The integrated control processing unit
graphics String The graphics chipset
main_manufacturer Reference ID for Platform Version Company Who manufactured this version of the platform
media String The type of media this version accepted
memory String How much memory there is
name String The name of the platform version
os String The operating system installed on the platform version
output String The output video rate
platform_logo Reference ID for Platform Logo The logo of this platform version
platform_version_release_dates Array of Platform Version Release Date IDs When this platform was released
resolutions String The maximum resolution
slug String A url-safe, unique, lower-case version of the name
sound String The sound chipset
storage String How much storage there is
summary String A short summary
url String The website address (URL) of the item

Platform Version Company

curl 'https://api.igdb.com/v4/platform_version_companies' \
-d 'fields checksum,comment,company,developer,manufacturer;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/platform_version_companies",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,comment,company,developer,manufacturer;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/platform_version_companies")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,comment,company,developer,manufacturer;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/platform_version_companies".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,comment,company,developer,manufacturer;").responseString()
let url = URL(string: "https://api.igdb.com/v4/platform_version_companies")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,comment,company,developer,manufacturer;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/platform_version_companies'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,comment,company,developer,manufacturer;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
comment String Any notable comments about the developer
company Reference ID for Company The company responsible for developing this platform version
developer boolean
manufacturer boolean

Platform Version Release Date

curl 'https://api.igdb.com/v4/platform_version_release_dates' \
-d 'fields category,checksum,created_at,date,date_format,human,m,platform_version,region,release_region,updated_at,y;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/platform_version_release_dates",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields category,checksum,created_at,date,date_format,human,m,platform_version,region,release_region,updated_at,y;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/platform_version_release_dates")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields category,checksum,created_at,date,date_format,human,m,platform_version,region,release_region,updated_at,y;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/platform_version_release_dates".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields category,checksum,created_at,date,date_format,human,m,platform_version,region,release_region,updated_at,y;").responseString()
let url = URL(string: "https://api.igdb.com/v4/platform_version_release_dates")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields category,checksum,created_at,date,date_format,human,m,platform_version,region,release_region,updated_at,y;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/platform_version_release_dates'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields category,checksum,created_at,date,date_format,human,m,platform_version,region,release_region,updated_at,y;'
puts http.request(request).body
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,date_format,human,m,platform_version,region,release_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

field type description
category Category Enum DEPRECATED! Use date_format instead
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
date Unix Time Stamp The release date
date_format Reference ID for Date Format The format of the change date
human String A human readable version of the release date
m Integer The month as an integer starting at 1 (January)
platform_version Reference ID for Platform Version The platform this release date is for
region Region Enum DEPRECATED! Use release_region instead
release_region Reference ID for Release Date Region The region of the release
updated_at datetime The last date this entry was updated in the IGDB database
y Integer The year in full (2018)

Platform Version Release Date Enums

category

name value
YYYYMMMMDD 0
YYYYMMMM 1
YYYY 2
YYYYQ1 3
YYYYQ2 4
YYYYQ3 5
YYYYQ4 6
TBD 7

region

name value
europe 1
north_america 2
australia 3
new_zealand 4
japan 5
china 6
asia 7
worldwide 8
korea 9
brazil 10

Platform Website

curl 'https://api.igdb.com/v4/platform_websites' \
-d 'fields category,checksum,trusted,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/platform_websites",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields category,checksum,trusted,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/platform_websites")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields category,checksum,trusted,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/platform_websites".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields category,checksum,trusted,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/platform_websites")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields category,checksum,trusted,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/platform_websites'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields category,checksum,trusted,url;'
puts http.request(request).body
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

field type description
category Category Enum The service this website links to
checksum uuid Hash of the object
trusted boolean
url String The website address (URL) of the item

Platform Website Enums

category

name value
official 1
wikia 2
wikipedia 3
facebook 4
twitter 5
twitch 6
instagram 8
youtube 9
iphone 10
ipad 11
android 12
steam 13
reddit 14
discord 15
google_plus 16
tumblr 17
linkedin 18
pinterest 19
soundcloud 20

Player Perspective

curl 'https://api.igdb.com/v4/player_perspectives' \
-d 'fields checksum,created_at,name,slug,updated_at,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/player_perspectives",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,name,slug,updated_at,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/player_perspectives")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,name,slug,updated_at,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/player_perspectives".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,name,slug,updated_at,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/player_perspectives")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,name,slug,updated_at,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/player_perspectives'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,name,slug,updated_at,url;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
name String
slug String A url-safe, unique, lower-case version of the name
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item

Popularity Primitive

curl 'https://api.igdb.com/v4/popularity_primitives' \
-d 'fields calculated_at,checksum,created_at,external_popularity_source,game_id,popularity_source,popularity_type,updated_at,value;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/popularity_primitives",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields calculated_at,checksum,created_at,external_popularity_source,game_id,popularity_source,popularity_type,updated_at,value;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/popularity_primitives")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields calculated_at,checksum,created_at,external_popularity_source,game_id,popularity_source,popularity_type,updated_at,value;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/popularity_primitives".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields calculated_at,checksum,created_at,external_popularity_source,game_id,popularity_source,popularity_type,updated_at,value;").responseString()
let url = URL(string: "https://api.igdb.com/v4/popularity_primitives")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields calculated_at,checksum,created_at,external_popularity_source,game_id,popularity_source,popularity_type,updated_at,value;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/popularity_primitives'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields calculated_at,checksum,created_at,external_popularity_source,game_id,popularity_source,popularity_type,updated_at,value;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/popularity_primitives', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields calculated_at,checksum,created_at,external_popularity_source,game_id,popularity_source,popularity_type,updated_at,value;'})
print ("response: %s" % str(response.json()))

Popularity Primitives, this endpoint lists available primitives with their source and popularity type.

Request Path

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

field type description
calculated_at datetime
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
external_popularity_source Reference ID for External Game Source
game_id Integer
popularity_source Popularity Source Enum DEPRECATED! Use external_popularity_source instead
popularity_type Reference ID for Popularity Type
updated_at datetime The last date this entry was updated in the IGDB database
value bigdecimal

Popularity Primitive Enums

popularity_source

name value
igdb 121

Popularity Type

curl 'https://api.igdb.com/v4/popularity_types' \
-d 'fields checksum,created_at,external_popularity_source,name,popularity_source,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/popularity_types",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,external_popularity_source,name,popularity_source,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/popularity_types")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,external_popularity_source,name,popularity_source,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/popularity_types".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,external_popularity_source,name,popularity_source,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/popularity_types")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,external_popularity_source,name,popularity_source,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/popularity_types'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,external_popularity_source,name,popularity_source,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/popularity_types', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,external_popularity_source,name,popularity_source,updated_at;'})
print ("response: %s" % str(response.json()))

This describes what type of popularity primitive or popularity indicator the popularity value is.

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
external_popularity_source Reference ID for External Game Source
name String
popularity_source Popularity Source Enum DEPRECATED! Use external_popularity_source instead
updated_at datetime The last date this entry was updated in the IGDB database

Popularity Type Enums

popularity_source

name value
steam 1
igdb 121

Region

curl 'https://api.igdb.com/v4/regions' \
-d 'fields category,checksum,created_at,identifier,name,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/regions",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields category,checksum,created_at,identifier,name,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/regions")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields category,checksum,created_at,identifier,name,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/regions".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields category,checksum,created_at,identifier,name,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/regions")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields category,checksum,created_at,identifier,name,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/regions'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields category,checksum,created_at,identifier,name,updated_at;'
puts http.request(request).body
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

field type description
category String This can be either ’locale’ or ‘continent’
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
identifier String This is the identifier of each region
name String
updated_at datetime The last date this entry was updated in the IGDB database

Release Date

curl 'https://api.igdb.com/v4/release_dates' \
-d 'fields category,checksum,created_at,date,date_format,game,human,m,platform,region,release_region,status,updated_at,y;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/release_dates",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields category,checksum,created_at,date,date_format,game,human,m,platform,region,release_region,status,updated_at,y;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/release_dates")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields category,checksum,created_at,date,date_format,game,human,m,platform,region,release_region,status,updated_at,y;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/release_dates".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields category,checksum,created_at,date,date_format,game,human,m,platform,region,release_region,status,updated_at,y;").responseString()
let url = URL(string: "https://api.igdb.com/v4/release_dates")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields category,checksum,created_at,date,date_format,game,human,m,platform,region,release_region,status,updated_at,y;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/release_dates'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields category,checksum,created_at,date,date_format,game,human,m,platform,region,release_region,status,updated_at,y;'
puts http.request(request).body
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,date_format,game,human,m,platform,region,release_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

field type description
category Category Enum DEPRECATED! Use date_format instead
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
date datetime The date of the release
date_format Reference ID for Date Format The format of the change date
game Reference ID for Game
human String A human readable representation of the date
m Integer The month as an integer starting at 1 (January)
platform Reference ID for Platform The platform of the release
region Region Enum DEPRECATED! Use release_region instead
release_region Reference ID for Release Date Region The region of the release
status Reference ID for Release Date Status The status of the release.
updated_at datetime The last date this entry was updated in the IGDB database
y Integer The year in full (2018)

Release Date Enums

category

name value
YYYYMMMMDD 0
YYYYMMMM 1
YYYY 2
YYYYQ1 3
YYYYQ2 4
YYYYQ3 5
YYYYQ4 6
TBD 7

region

name value
europe 1
north_america 2
australia 3
new_zealand 4
japan 5
china 6
asia 7
worldwide 8
korea 9
brazil 10

Release Date Region

curl 'https://api.igdb.com/v4/release_date_regions' \
-d 'fields checksum,created_at,region,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/release_date_regions",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,region,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/release_date_regions")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,region,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/release_date_regions".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,region,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/release_date_regions")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,region,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/release_date_regions'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,region,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/release_date_regions', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,region,updated_at;'})
print ("response: %s" % str(response.json()))

Regions for release dates

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
region String
updated_at datetime The last date this entry was updated in the IGDB database

Release Date Status

curl 'https://api.igdb.com/v4/release_date_statuses' \
-d 'fields checksum,created_at,description,name,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/release_date_statuses",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,description,name,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/release_date_statuses")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,description,name,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/release_date_statuses".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,description,name,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/release_date_statuses")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,description,name,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/release_date_statuses'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,description,name,updated_at;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
description String The description of the release date status.
name String The name of the release date status.
updated_at datetime The last date this entry was updated in the IGDB database

Screenshot

curl 'https://api.igdb.com/v4/screenshots' \
-d 'fields alpha_channel,animated,checksum,game,height,image_id,url,width;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/screenshots",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields alpha_channel,animated,checksum,game,height,image_id,url,width;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/screenshots")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields alpha_channel,animated,checksum,game,height,image_id,url,width;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/screenshots".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields alpha_channel,animated,checksum,game,height,image_id,url,width;").responseString()
let url = URL(string: "https://api.igdb.com/v4/screenshots")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields alpha_channel,animated,checksum,game,height,image_id,url,width;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/screenshots'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields alpha_channel,animated,checksum,game,height,image_id,url,width;'
puts http.request(request).body
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

field type description
alpha_channel boolean
animated boolean
checksum uuid Hash of the object
game Reference ID for Game The game this video is associated with
height Integer The height of the image in pixels
image_id String The ID of the image used to construct an IGDB image link
url String The website address (URL) of the item
width Integer The width of the image in pixels
curl 'https://api.igdb.com/v4/search' \
-d 'fields alternative_name,character,checksum,collection,company,description,game,name,platform,published_at,test_dummy,theme;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/search",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields alternative_name,character,checksum,collection,company,description,game,name,platform,published_at,test_dummy,theme;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/search")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields alternative_name,character,checksum,collection,company,description,game,name,platform,published_at,test_dummy,theme;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/search".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields alternative_name,character,checksum,collection,company,description,game,name,platform,published_at,test_dummy,theme;").responseString()
let url = URL(string: "https://api.igdb.com/v4/search")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields alternative_name,character,checksum,collection,company,description,game,name,platform,published_at,test_dummy,theme;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/search'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields alternative_name,character,checksum,collection,company,description,game,name,platform,published_at,test_dummy,theme;'
puts http.request(request).body
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

field type description
alternative_name String
character Reference ID for Character
checksum uuid Hash of the object
collection Reference ID for Collection
company Reference ID for Company
description String
game Reference ID for Game
name String
platform Reference ID for Platform
published_at Unix Time Stamp The date this item was initially published by the third party
test_dummy Reference ID for Test Dummy
theme Reference ID for Theme

Theme

curl 'https://api.igdb.com/v4/themes' \
-d 'fields checksum,created_at,name,slug,updated_at,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/themes",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,name,slug,updated_at,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/themes")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,name,slug,updated_at,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/themes".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,name,slug,updated_at,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/themes")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,name,slug,updated_at,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/themes'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,name,slug,updated_at,url;'
puts http.request(request).body
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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
name String
slug String A url-safe, unique, lower-case version of the name
updated_at datetime The last date this entry was updated in the IGDB database
url String The website address (URL) of the item

Website

curl 'https://api.igdb.com/v4/websites' \
-d 'fields category,checksum,game,trusted,type,url;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/websites",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields category,checksum,game,trusted,type,url;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/websites")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields category,checksum,game,trusted,type,url;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/websites".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields category,checksum,game,trusted,type,url;").responseString()
let url = URL(string: "https://api.igdb.com/v4/websites")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields category,checksum,game,trusted,type,url;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/websites'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields category,checksum,game,trusted,type,url;'
puts http.request(request).body
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,type,url;'})
print ("response: %s" % str(response.json()))

A website url, usually associated with a game

Request Path

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

field type description
category Category Enum DEPRECATED! Use type instead
checksum uuid Hash of the object
game Reference ID for Game The game this website is associated with
trusted boolean
type Reference ID for Website Type The website type associated with the website
url String The website address (URL) of the item

Website Enums

category

name value
official 1
wikia 2
wikipedia 3
facebook 4
twitter 5
twitch 6
instagram 8
youtube 9
iphone 10
ipad 11
android 12
steam 13
reddit 14
itch 15
epicgames 16
gog 17
discord 18
bluesky 19

Website Type

curl 'https://api.igdb.com/v4/website_types' \
-d 'fields checksum,created_at,type,updated_at;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'
fetch(
  "https://api.igdb.com/v4/website_types",
  { method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: "fields checksum,created_at,type,updated_at;"
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/website_types")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Accept", "application/json")
  .body("fields checksum,created_at,type,updated_at;")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/website_types".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token", "Accept" to "application/json")
  .body("fields checksum,created_at,type,updated_at;").responseString()
let url = URL(string: "https://api.igdb.com/v4/website_types")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpBody = "fields checksum,created_at,type,updated_at;".data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/website_types'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
request.body = 'fields checksum,created_at,type,updated_at;'
puts http.request(request).body
from requests import post
response = post('https://api.igdb.com/v4/website_types', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'},'data': 'fields checksum,created_at,type,updated_at;'})
print ("response: %s" % str(response.json()))

A website type, usually the name of the website

Request Path

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

field type description
checksum uuid Hash of the object
created_at datetime Date this was initially added to the IGDB database
type String The website type
updated_at datetime The last date this entry was updated in the IGDB database

PopScore

Accessible through our API, IGDB PopScore offers “popularity primitives” from sources like IGDB page visits and list additions, with more sources and primitives coming in the future.

With IGDB PopScore, you can define and create your own trend and popularity indicators using individual primitives or by combining them to fit your needs. Updated every 24 hours, our data ensures you always have the latest insights into the gaming market covering all platforms. Stay ahead of the curve, uncover emerging trends, and improve your data-driven decisions by checking out IGDB PopScore today

Currently available PopScore primitives

  1. IGDB Visits: Game page visits on IGDB.com.

  2. “IGDB Want to Play”: Additions to IGDB.com users’ “Want to Play” lists.

  3. “IGDB Playing”: Additions to IGDB.com users’ “Playing” lists.

  4. “IGDB Played”: Additions to IGDB.com users’ “Played” lists.

  5. “Steam 24hr Peak Players”: Peak CCU over the past 24 hours.

  6. “Steam Postitive Reviews”: Total number of positive reviews

  7. “Steam Negative Reviews”: Total number of negative reviews.

  8. “Steam Total Reviews”: Total number of reviews (positive and negative).

We’re constantly refining and expanding IGDB PopScore to ensure you have access to the most up-to-date and relevant data as possible. Stay tuned for exciting new features and data points as we continue to push the boundaries of what’s possible in the realm of video game trend analysis.

You can check the current popularity types we support. to do so feel free to query the api /popularity-types. More details can be found under Popularity Types

How to use Popularity API

Start by discovering the available popularity types mentioned above

curl 'https://api.igdb.com/v4/popularity_types' \
-d 'fields name,popularity_source,updated_at; sort id asc;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'

Result:

[
	{
		"id": 1,
		"popularity_source": 121,
		"name": "Visits",
	},
	{
		"id": 2,
		"popularity_source": 121,
		"name": "Want to Play",
	},
	{
		"id": 3,
		"popularity_source": 121,
		"name": "Playing",
	},
	{
		"id": 4,
		"popularity_source": 121,
		"name": "Played",
	},
	{
		"id": 5,
		"popularity_source": 1,
		"name": "24hr Peak Players",
	},
	{
		"id": 6,
		"popularity_source": 1,
		"name": "Postitive Reviews",
	},
	{
		"id": 7,
		"popularity_source": 1,
		"name": "Negative Reviews",
	},
	{
		"id": 8,
		"popularity_source": 1,
		"name": "Total Reviews",
	}
]

Below you can find some example use case of how you can use popularity primitives

Use case 1:

As an API user I’d like to fetch the top 10 games based on IGDB visits.

Query:

curl 'https://api.igdb.com/v4/popularity_primitives' \
-d 'fields game_id,value,popularity_type; sort value desc; limit 10; where popularity_type = 1;' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Accept: application/json'

Result:

[
  {
    "id": 15456,
    "game_id": 121,
    "popularity_type": 1,
    "value": 0.006605335786569
  },
  {
    "id": 16211,
    "game_id": 1244,
    "popularity_type": 1,
    "value": 0.005482980680773
  },
...
  {
    "id": 33353,
    "game_id": 135400,
    "popularity_type": 1,
    "value": 0.002741490340386
  },
  {
    "id": 17317,
    "game_id": 3277,
    "popularity_type": 1,
    "value": 0.002695492180313
  }
]

In the preview of the result above you can see that the top game is the game with IGDB ID 121. https://www.igdb.com/games/minecraft # ID 121

Use case 2:

Define your own trend metrics. For example, by combining two or more primitives with equal or different weight ratios, you can create a unique popularity metric and ensure it fits your needs.

In our use case here we want to combine “Want to play” with a weight of 0.6 and “Playing” with a remaining weight of 0.4.

For each game we would need to calculate this in a matter of: 0.6 * (“Want to play” -> value) + 0.4 * (“Playing” -> value) = custom_popularity_value

To do that you would have to pull the values for each popularity type in your own system and then combine them accordingly.

To pull the date you’ll need locally a data structure similar to the existing popularity primitive where it will have the attributes.

game_id, popularity_type, value The Want to Play maps to the popularity_type = 2 while Playing = 3

An example SQL query that would give you the top 100 of your custom_popularity would be

SELECT igdb_game_id,
       SUM(CASE WHEN popularity_type_id = '2' THEN value ELSE 0 END) AS value1,
       SUM(CASE WHEN popularity_type_id = '3' THEN value ELSE 0 END) AS value2,
       (
           0.6 * SUM(CASE WHEN popularity_type_id = '2' THEN value ELSE 0 END) +
           0.4 * SUM(CASE WHEN popularity_type_id = '3' THEN value ELSE 0 END)
           )  AS weighted_score
FROM popularity_primitives
GROUP BY igdb_game_id
ORDER BY weighted_score DESC LIMIT 10;

You can find detailed API documentation under Popularity Types and Popularity Primitives

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!

curl -X POST 'https://api.igdb.com/v4/ENDPOINT/webhooks/' \
-d 'url=YOUR_WEBHOOK_URL&secret=YOUR_WEBHOOK_SECRET&method=create' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token' \
-H 'Content-Type: application/x-www-form-urlencoded'
fetch( "https://api.igdb.com/v4/ENDPOINT/webhooks/",
  { method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    },
    body: new URLSearchParams({
      'url': 'YOUR_WEBHOOK_URL',
      'secret': 'YOUR_WEBHOOK_SECRET',
      'method': 'create'
    })
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/ENDPOINT/webhooks/")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .header("Content-Type", "application/x-www-form-urlencoded")
  .field("url", "YOUR_WEBHOOK_URL")
  .field("secret", "YOUR_WEBHOOK_SECRET")
  .field("method", "create")
  .asJson();
val webhookURL = "https://api.igdb.com/v4/ENDPOINT/webhooks/"
val webhookParams = listOf("url" to "YOUR_WEBHOOK_URL", "secret" to "YOUR_WEBHOOK_SECRET", "method" to "create")
val (request, response, result) = webhookURL.httpPost(webhookParams).header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token").responseString()
when (response.statusCode) {
      200  -> Logger.info("New webhook registered!")
      409  -> Logger.warning("Webhook already exists, already connected.. ")
      else -> Logger.error("Received unknown error, code: ${response.statusCode}")
}
let url = URL(string: "https://api.igdb.com/v4/ENDPOINT/webhooks/")!
var requestHeader = URLRequest.init(url: url as! URL)
let parameters = "url=YOUR_WEBHOOK_URL&secret=YOUR_WEBHOOK_SECRET&method=create"
requestHeader.httpBody = parameters.data(using: .utf8, allowLossyConversion: false)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
requestHeader.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4', 443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/ENDPOINT/webhooks/'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token', 'Content-Type' => 'application/x-www-form-urlencoded'})
request.body = 'url=YOUR_WEBHOOK_URL&secret=YOUR_WEBHOOK_SECRET&method=create'
puts http.request(request).body
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:

// 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

// Delete Response from Webhook
{
  "id": "1234"
}

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.
Webhooks from DELETE do not send the entire object but only the ID.

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.

# Get ALL registered Webhooks
curl 'https://api.igdb.com/v4/webhooks/' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token'
// Get ALL registered Webhooks
fetch(
  "https://api.igdb.com/v4/webhooks/",
  {
    method: 'GET',
    headers: {
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    }
  }).then(response => {
    console.log(response.json());
  }).catch(err => {
    console.error(err);
  }
);
// Get ALL registered Webhooks
HttpResponse<JsonNode> jsonResponse = Unirest.get("https://api.igdb.com/v4/webhooks/")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .asJson();
// Get ALL registered Webhooks
val (request, response, result) = "https://api.igdb.com/v4/webhooks/".httpGet()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token")
  .responseString()
// Get ALL registered Webhooks
let url = URL(string: "https://api.igdb.com/v4/webhooks/")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpMethod = "GET"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
# Get ALL registered Webhooks
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Get.new(URI('https://api.igdb.com/v4/webhooks/'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
puts http.request(request).body
# 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.

curl -X DELETE 'https://api.igdb.com/v4/webhooks/WEBHOOK_ID' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token'
fetch(
  "https://api.igdb.com/v4/webhooks/WEBHOOK_ID",
  {
    method: 'DELETE',
    headers: {
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token',
    }
  }).then(response => {
    console.log(response.json());
  }).catch(err => {
    console.error(err);
  }
);
HttpResponse<JsonNode> jsonResponse = Unirest.delete("https://api.igdb.com/v4/webhooks/WEBHOOK_ID")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/webhooks/WEBHOOK_ID".httpDelete()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token")
  .responseString()
let url = URL(string: "https://api.igdb.com/v4/webhooks/WEBHOOK_ID")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpMethod = "DELETE"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4',443)
http.use_ssl = true
request = Net::HTTP::Delete.new(URI('https://api.igdb.com/v4/webhooks/WEBHOOK_ID'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
puts http.request(request).body
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.

curl -X POST 'https://api.igdb.com/v4/ENDPOINT/webhooks/test/WEBHOOK_ID?entityId=ENTITY_ID' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token'
fetch( "https://api.igdb.com/v4/ENDPOINT/webhooks/test/WEBHOOK_ID?entityId=ENTITY_ID",
  { method: 'POST',
    headers: {
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token'
    })
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.post("https://api.igdb.com/v4/ENDPOINT/webhooks/test/WEBHOOK_ID?entityId=ENTITY_ID")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/ENDPOINT/webhooks/test/WEBHOOK_ID?entityId=ENTITY_ID".httpPost()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token")
  .responseString()
let url = URL(string: "https://api.igdb.com/v4/ENDPOINT/webhooks/test/WEBHOOK_ID?entityId=ENTITY_ID")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpMethod = "POST"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4', 443)
http.use_ssl = true
request = Net::HTTP::Post.new(URI('https://api.igdb.com/v4/ENDPOINT/webhooks/test/WEBHOOK_ID?entityId=ENTITY_ID'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
puts http.request(request).body
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.

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 Gateway, Secrets Manager, Lambda). 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.

Alternatives

Reference

Images

Examples

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).

Name Size Extra
cover_small 90 x 128 Fit
screenshot_med 569 x 320 Lfill, Center gravity
cover_big 264 x 374 Fit
logo_med 284 x 160 Fit
screenshot_big 889 x 500 Lfill, Center gravity
screenshot_huge 1280 x 720 Lfill, Center gravity
thumb 90 x 90 Thumb, Center gravity
micro 35 x 35 Thumb, Center gravity
720p 1280 x 720 Fit, Center gravity
1080p 1920 x 1080 Fit, 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:

Where?

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

Available Postfixes

Examples

Filter by multiple platforms

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

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

If you want games released only on PC

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

Combining Multiple Filters

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

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

Prefix, Postfix and Infix

Prefix

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

Postfix

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

Infix

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

case insensitive version

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

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.

Sorting

What?

Sorting is used to order results by a specific field.

How?

You can order results like this:

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:

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:

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.

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.

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

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 ID Name
0 Theme
1 Genre
2 Keyword
3 Game
4 Player 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:

# 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:

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

Migration Enums to Tables

Important Changes Coming to the IGDB API

We’re announcing upcoming changes to the IGDB API that will affect how certain data fields are structured and accessed. These changes are designed to make our gaming database more dynamic and better suited to the evolving gaming industry.

Key Changes

We’re moving away from using static enum values in our API to using more flexible table-based structures. While this is primarily an internal change, it affects how certain fields are named in our API. To ensure a smooth transition:

What is Changing?

Several field names are being standardized across our endpoints for better clarity and consistency:

Endpoint Current Field New Field
age_rating category organization
age_rating rating rating_category
character gender character_gender
character species character_species
companies change_date_category change_date_format
companies start_date_category start_date_format
company_website category type
external_game category external_game_source
external_game media game_release_format
platform category platform_type
website category type

Additionally, we’re adding some new fields:

New Endpoints replacing enum values

Datadumps
All of these changes will be reflected in the daily data dumps.

Migration Timeline

How Does This Affect You?

If your application uses any of the fields listed above, you’ll need to update your code to use the new field names within the next 6 months. The current field names will be removed after the migration period ends.

Migration Recommendations

  1. Begin updating your applications to use the new field names as soon as possible
  2. Test your applications thoroughly with the new field names
  3. Complete all necessary changes before the end of the 6 month migration period
  4. Keep an eye on Discord for monthly deprecation reminders

Questions or Concerns?

If you have any questions about these changes or need assistance with migration, please:

We’re committed to making this transition as smooth as possible for all our API users.

Partnership

Interested about using the API for a commercial project? No problem, we allow commercial usage. Get in touch with us about our partner program!

How?

To register for a commertial agreement reach out to partner@igdb.com

Exclusive Features

Automatic data dumps every 24 hours.
More features coming soon.

Data Dumps

All endpoints are available as CSV Data Dumps!

Daily updated CSV Data Dumps which can be used to kick start your projects or keep your data up to date (within 24 hours).

curl -X GET 'https://api.igdb.com/v4/dumps' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token'
fetch( "https://api.igdb.com/v4/dumps",
  { method: 'GET',
    headers: {
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token'
    })
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.get("https://api.igdb.com/v4/dumps")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/dumps".httpGet()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token")
  .responseString()
let url = URL(string: "https://api.igdb.com/v4/dumps")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpMethod = "GET"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4', 443)
http.use_ssl = true
request = Net::HTTP::Get.new(URI('https://api.igdb.com/v4/dumps'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
puts http.request(request).body
from requests import post
response = get('https://api.igdb.com/v4/dumps', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'}})
print ("response: %s" % str(response.json()))

Listing dumps

To list the available data dumps make a GET request to /dumps.
This will return a list of available Data Dumps describing the endpoint, file name, and updated at.

# Example response from /dumps
[
    {
		"endpoint": "games",
		"file_name": "1234567890_games.csv",
		"updated_at": 1234567890
	}
]
curl -X GET 'https://api.igdb.com/v4/dumps/ENDPOINT' \
-H 'Client-ID: Client ID' \
-H 'Authorization: Bearer access_token'
fetch( "https://api.igdb.com/v4/dumps/ENDPOINT",
  { method: 'GET',
    headers: {
      'Client-ID': 'Client ID',
      'Authorization': 'Bearer access_token'
    })
})
  .then(response => {
      console.log(response.json());
  })
  .catch(err => {
      console.error(err);
  });
HttpResponse<JsonNode> jsonResponse = Unirest.get("https://api.igdb.com/v4/dumps/ENDPOINT")
  .header("Client-ID", "Client ID")
  .header("Authorization", "Bearer access_token")
  .asJson();
val (request, response, result) = "https://api.igdb.com/v4/dumps/ENDPOINT".httpGet()
  .header("Client-ID" to "Client ID", "Authorization" to "Bearer access_token")
  .responseString()
let url = URL(string: "https://api.igdb.com/v4/dumps/ENDPOINT")!
var requestHeader = URLRequest.init(url: url as! URL)
requestHeader.httpMethod = "GET"
requestHeader.setValue("Client ID", forHTTPHeaderField: "Client-ID")
requestHeader.setValue("Bearer access_token", forHTTPHeaderField: "Authorization")
URLSession.shared.dataTask(with: requestHeader) { data, response, error in }.resume()
require 'net/https'
http = Net::HTTP.new('api.igdb.com/v4', 443)
http.use_ssl = true
request = Net::HTTP::Get.new(URI('https://api.igdb.com/v4/dumps/ENDPOINT'), {'Client-ID' => 'Client ID', 'Authorization' => 'Bearer access_token'})
puts http.request(request).body
from requests import post
response = get('https://api.igdb.com/v4/dumps/ENDPOINT', **{'headers': {'Client-ID': 'Client ID', 'Authorization': 'Bearer access_token'}})
print ("response: %s" % str(response.json()))

Downloading CSV

To get the download link for the csv files make a GET request to /dumps/ENDPOINT The response object will contain the download link for the CSV and the schema version & schema JSON structure of the data.

S3 Download Url:
The download Url is a presigned S3 url that is valid for 5 minutes.

Schema
The schema_version and schema will reflect the current data structure and data type that the Dump is using.
The schema version number will change when the schema changes, so if you are planning on an automated setup for this you will need to keep this in mind.

# Example response from /dumps/games
{
	"s3_url": "S3_DOWNLOAD_URL",
	"endpoint": "games",
	"file_name": "1234567890_games.csv",
	"size_bytes": 123456789,
	"updated_at": 1234567890,
	"schema_version": "1234567890",
	"schema": {
		"id": "LONG",
		"name": "STRING",
		"url": "STRING",
        "franchises": "LONG[]",
        "rating": "DOUBLE",
        "created_at": "TIMESTAMP",
        "checksum": "UUID",
	}
}

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

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.