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.
- Sign Up with Twitch for a free account
- Ensure you have Two Factor Authentication enabled
- 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
- Manage your newly created application
- Generate a Client Secret by pressing [New Secret]
- 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
andAccess Token
in theHEADER
of your request so that your headers look like the following.- Take special care of the capitalisation.
Bearer
should be hard-coded infront of youraccess_token
- Take special care of the capitalisation.
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 |
Company Logo
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 |
4 | |
5 | |
twitch | 6 |
8 | |
youtube | 9 |
iphone | 10 |
ipad | 11 |
android | 12 |
steam | 13 |
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 |
Event Logo
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 |
Game Engine Logo
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 |
Platform Logo
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 |
4 | |
5 | |
twitch | 6 |
8 | |
youtube | 9 |
iphone | 10 |
ipad | 11 |
android | 12 |
steam | 13 |
14 | |
discord | 15 |
google_plus | 16 |
tumblr | 17 |
18 | |
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 |
Search
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 |
4 | |
5 | |
twitch | 6 |
8 | |
youtube | 9 |
iphone | 10 |
ipad | 11 |
android | 12 |
steam | 13 |
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
Introducing IGDB PopScore - Your key to tracking the latest trends in the video game market.
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
-
IGDB Visits: Game page visits on IGDB.com.
-
“IGDB Want to Play”: Additions to IGDB.com users’ “Want to Play” lists.
-
“IGDB Playing”: Additions to IGDB.com users’ “Playing” lists.
-
“IGDB Played”: Additions to IGDB.com users’ “Played” lists.
-
“Steam 24hr Peak Players”: Peak CCU over the past 24 hours.
-
“Steam Postitive Reviews”: Total number of positive reviews
-
“Steam Negative Reviews”: Total number of negative reviews.
-
“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:
url
this is your prepared url that is ready to accept data from us.method
this is the type of data you are expecting to your url, there are three types of methodscreate
, sends new items from the APIdelete
, sends deleted items from the APIupdate
, sends updated items from the API
secret
this is your “secret” password for your webhook. Every request from the webhook service will have your secret in the header calledX-Secret
.
// Example response upon registering your webhook
{
"id": WEBHOOK_ID, // A unique ID for the webhook
"url": "YOUR_WEBHOOK_URL", // Your chosen URL
"category": 1, // Based on the endpoint you chose
"sub_category": 0, // Based on your method (can be 0, 1, 2)
"active": true, // Is the webhook currently active
"api_key": "YOUR_CLIENT_ID", // Displays the api key the webhook is connected to
"secret": "YOUR_SECRET", // Your chosen secret
"created_at": "2018-11-25T23:00:00.000Z", // Created at date
"updated_at": "2018-11-25T23:00:00.000Z" // Updated at date
}
Registering your webhook in Postman
Once your webhook is registered you will receive a response with the new webhook object
// 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.
- To have a backend that keeps track of your Oauth Application Tokens
- Caching requests to the API for better performance
- Enable application logging to track/debug usage
- Enable CORS between the proxy and applications
How do I set up a proxy?
Proxies can be complex, but to get you started we have a simple guide to get you up and running quickly through AWS.
We have provided a single link that will let you deploy an AWS Api Gateway in your own AWS account that will serve as a proxy. This Stack will also handle your Access Token rotations automatically for you, so you don’t need to think about that.
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.
- Click this link to get started.
- 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.
- Click Next
- Configure Stack Options - Nothing is required here, you can click Next
- Verify Settings, click the checkbox at the bottom, then click “Create Stack”
- 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”
- 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.
- 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”
- If you enabled Api Keys you will need to specify the header
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
What’s next?
You can do a lot of things via API Gateway.
- You can improve the security of your proxy by creating another sort of Authentication, to prevent others from using up your RPS quota.
- You can also setup your own Domain name and SSL with Route53
- You can modify the path of the proxy to have it serve as the front-end to your own APIs
- Perform a calculation? Lambda Integration
- Just want to store some records? DynamoDB Integration
- Want users to be able to upload/download files? S3 Integration
- Enable request logging
Alternatives
- CORS: Setup a proxy using CORS Anywhere
Reference
Images
Examples
- Address:
https://api.igdb.com/v4/games/
- Body:
fields screenshots.*;
where id = 1942;
Here we retrieve the image properties of the game with the id “1942”
[{
"id": 1942,
"screenshots": [{
"id": 9742,
"game": 1942,
"height": 1080,
"image_id": "mnljdjtrh44x4snmierh",
"url": "//images.igdb.com/igdb/image/upload/t_thumb/mnljdjtrh44x4snmierh.jpg",
"width": 1920
},
{
"id": 9743,
"game": 1942,
"height": 1080,
"image_id": "em1y2ugcwy2myuhvb9db",
"url": "//images.igdb.com/igdb/image/upload/t_thumb/em1y2ugcwy2myuhvb9db.jpg",
"width": 1920
}
]
}]
Response example on the right –>
Image url structure:
https://images.igdb.com/igdb/image/upload/t_screenshot_med_2x/dfgkfivjrhcksyymh9vw.jpg
Break down:
https://images.igdb.com/igdb/image/upload/t_{size}/{hash}.jpg
size
is one of the interchangeable size types listed below.
hash
is the id of the image.
The image sizes are all maximum size but by appending _2x
to any size, you can get retina (DPR 2.0) sizes (cover_small_2x
).
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:
- Address:
https://api.igdb.com/v4/games/
- Body:
search “zelda”;
where rating >= 80 & release_dates.date > 631152000;
Where?
Filters can be used on any entity that has sub-properties such as Games, Companies, People etc.
Available Postfixes
=
Equal: Exact match equal.!=
Not Equal: Exact match equal.>
Greater than (works only on numbers).>=
Greater than or equal to (works only on numbers).<
Less than (works only on numbers).<=
Less than or equal to (works only on numbers).= "Your input string"*
Prefix: Exact match on the beginning of the string, can end with anything. (Case sensitive).~ "Your input string"*
Prefix: Exact match on the beginning of the string, can end with anything. (Case insensitive).= *"Your input string"
Postfix: Exact match at the end of the string, can start with anything. (Case sensitive).~ *"Your input string"
Postfix: Exact match at the end of the string, can start with anything. (Case insensitive).= *"Your input string"*
Infix Exact match in the middle of the string, can start and end with anything. (Case sensitive).~ *"Your input string"*
Infix Exact match in the middle of the string, can start and end with anything. (Case insensitive).!= null
The value is not null.= null
The value is null.[V1,V2,...Vn]
The value exists within the (comma separated) array (AND between values).![V1,V2,...Vn]
The values must not exist within the (comma separated) array (AND between values).(V1,V2,...Vn)
The value has any within the (comma separated) array (OR between values).!(V1,V2,...Vn)
The values must not exist within the (comma separated) array (OR between values).{V1,V2,...V2}
Exact match on arrays. (Does not work on ids, strings, etc).
Examples
Filter by multiple platforms
To get games that are released on PS4 OR XBOX ONE OR PC
- Address:
https://api.igdb.com/v4/games/
- Body:
fields name;
where release_dates.platform = (48,49,6);
Similarly if you want games released on PS4 AND XBOX ONE AND PC
- Address:
https://api.igdb.com/v4/games/
- Body:
fields name;
where release_dates.platform = [48,49,6];
If you want games released only on PC
- Address:
https://api.igdb.com/v4/games/
- Body:
fields name;
where release_dates.platform = 6;
And if you want games released for PC OR any other platform
- Address:
https://api.igdb.com/v4/games/
- Body:
fields name;
where release_dates.platform = (6);
Combining Multiple Filters
It is possible to to use logical operators between filters, which could look something like this:
- Address:
https://api.igdb.com/v4/games/
- Body:
fields name,platforms,genres.name;
where (platforms = [6,48] & genres = 13) | (platforms = [130,48] & genres = 12);
The response from this example query will be games that fulfil one or both of two sets or requirements:
- Games released for for both PC (6), and PS4 (48) and also has the genre simulator (13).
- Games released for for both Switch (130), and PS4 (48) and also has the genre Role-Playing (13).
Prefix, Postfix and Infix
Prefix
Filtering for game names beginning with “Super” (this will return games such as for example Super Mario World)
- Address:
https://api.igdb.com/v4/games/
- Body:
fields name;
where name = "Super"*;
Postfix
Filtering for game names ending with with “World” (this will also return games such as for example Super Mario World)
- Address:
https://api.igdb.com/v4/games/
- Body:
fields name;
where name = *"World";
Infix
Filtering for game names containing the string “Smash” anywhere (this will return games such as for example Super Smash Bros)
- Address:
https://api.igdb.com/v4/games/
- Body:
fields name;
where name = *"Smash"*;
case insensitive version
Filtering for game names containing the string “Smash” (this will return games such as for example Super Smash Bros)
- Address:
https://api.igdb.com/v4/games/
- Body:
fields name;
where name ~ *"Smash"*;
Removing erotic games from API responses
Some queries may return games with erotic themes. All erotic games in the database has the theme ’erotic’ (id = 42). So by adding a simple filter like the one below you can remove them from your responses.
- Address:
https://api.igdb.com/v4/games/
- Body:
fields name;
where themes != (42);
Sorting
What?
Sorting is used to order results by a specific field.
How?
You can order results like this:
- Address:
https://api.igdb.com/v4/games/
- Body:
sort release_dates.date desc;
where rating >= 80;
Notice the appended :desc
(descending) which could also be :asc
(ascending) if required.
Order by rating
Rating parameter for games. You can access it like this:
- Address:
https://api.igdb.com/v4/games/
- Body:
fields name,rating;
sort rating desc;
where rating != null;
Where?
Ordering can be used on any entity.
Search
What?
Search based on name, results are sorted by similarity to the given search string.
Where?
Searchable endpoints:
- Characters
- Collections
- Games
- People
- Platforms
- Themes
How?
You specify which endpoint to search through in the Address field of your request.
The search string is then entered in the body of the request by typing search
,
blank space followed by the string you wish to search for.
- Address:
https://api.igdb.com/v4/games/
- Body:
search “zelda”;
Pagination
Here is an example for how to use limit. The default limit is 10. The maximum value you can set for limit is 500.
-
Address:
https://api.igdb.com/v4/platforms/
-
Body:
limit 33;
There is also an offset. This will start the list at position 22 and give 33 results.
- Address:
https://api.igdb.com/v4/platforms/
- Body:
limit 33;
offset 22;
Protocol Buffers
Google Protocol Buffers is a language neutral method for serializing structured data.
The IGDB API supports responses in this format so you do not have to write your own serialization libraries, but instead you could just generate one.
Since this is langage neutral it is supported by a variatey of languages.
How?
Generate the objects in your language of choise with our own Protobuf file, here
This file contains the mapping of the entire IGDB API and can be used to generate wrappers, code and tooling in any programming language.
The protobuf file is created in accordance with the proto3 specification
There are plenty of examples on how to do this Online and on the Protobuf Site.
Where?
To start recieving protobuf compatible responses from then api all you need to do is add .pb
at the end of your request:
https://api.igdb.com/v4/games.pb
Then use your generated files to parse the response into the expected object.
Tag Numbers
Tag numbers are automatically generated numbers which provide a compact and fast way to do complex filtering on the IGDB API. The number calculation can be easily achieved with any programming language.
The basis of the calculation is a 32bit integer, where the first 4 bits contain the object type ID, and the remaining 28 bits represent the ID of the object we are generating the tag number for.
Using this method a flat index of custom object ‘hashes’ can be maintained in which index the search and filtering is faster than using conventional methods.
Currently the following object types use tags:
Type 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:
- Address:
https://api.igdb.com/v4/games/
- Body:
where tags = (268435461);
# Python
keywordTypeID: 2 # The keyword's type ID from the table above/
keywordID: 148 # The ID of the 'moba' keyword
tagNumber: keywordTypeID << 28 # Bit-shifting the keywords's type ID by 28 bits, ensuring that it will get into the first four bits. The result will be 536870912
tagNumber |= keywordID # Adding the keyword ID to the tag number with a bitwise OR operation. The result will be 536871060.
Python example query:
- Address:
https://api.igdb.com/v4/games/
- Body:
where tags = (536871060);
Multi-Query
Multi-Query is a new way to request a huge amount of information in one request! With Multi-Query you can request multiple endpoints at once, it also works with multiple requests to a single endpoint as well.
A Multi-Query is made by making a POST
request to: https://api.igdb.com/v4/multiquery
.
Syntax Structure The Multi-Query syntax is made up of three pieces; “Endpoint name”, “Result Name (Given by you)”, and the APICalypse query inside the body {}.
important You can only run a maximum of 10 queries.
Example 1:
Get the count of platforms in the api.
query platforms/count "Count of Platforms" {
// here we can have additional filters
};
This above query will give us the following result:
[
{
"name": "Count of Platforms",
"count": 155
}
]
Example 2:
Get Playstation 4 Exclusives
query games "Playstation Games" {
fields name,platforms.name;
where platforms !=n & platforms = {48};
limit 1;
};
This above query will give us the following result:
[
{
"name": "Playstation Games",
"result": [
{
"id": 52826,
"name": "Skate 4",
"platforms": [
{
"id": 48,
"name": "PlayStation 4"
}
]
}
]
}
]
Example 3:
Combining the queries of example 1 and 2.
query platforms/count "Count of Platforms" {
// here we can ahve additional filters
};
query games "Playstation Games" {
fields name,platforms.name;
where platforms !=n & platforms = {48};
limit 1;
};
[
{
"name": "Count of Platforms",
"count": 155
},
{
"name": "Playstation Games",
"result": [
{
"id": 52826,
"name": "Skate 4",
"platforms": [
{
"id": 48,
"name": "PlayStation 4"
}
]
}
]
}
]
APICalypse
APICalypse cheatsheet
APICalypse is a new language used for this api which greatly simplifies how you can query your requests compared to the url parameters used in API V2.
Fields
Fields are used to select which fields you want back from your request to the api.
To select fields you need the APICalypse command fields
or its shorthand f
.
Popular wildcard is to add *
instead of a field, this will give you all of the fields.
fields name,release_dates,genres.name,rating;
f name,release_dates,genres.name,rating;
Exclude
Commonly used with selecting all fields with the wildcard *
this command will exclude the fields that you select.
To exclude fields you don’t need the APICalypse command exclude
or its shorthand x
.
fields *;
exclude tags,keywords;
f *;
x tags,keywords;
Where
Where is easiest described as a filter. With where you can filter on specific fields.
To filter your results use the APICalypse command where
or its shorthand w
.
fields *;
where genres = 4;
f *;
w genres = 4;
Limit
Limit describes how many results you will get back from the api, the standard value is 10.
To set a new limit use the APICalypse command limit
or it’s shorthand l
.
fields *;
limit 50;
f *;
l 50;
Offset
Offset describes how many results you will skip over, standard is 0.
To set a new offset use the APICalypse command offset
or it’s shorthand o
.
Offset is often used together with Limit for pagination.
limit 50;
offset 50;
l 50;
o 50;
Sort
Use Sort to order the results to your liking.
To order the results use the APICalypse command sort
or it’s shorthand s
.
Sort has two accompaning commands for “direction”; asc
Ascending order and desc
Decending order.
fields *;
sort rating asc;
f *;
s rating desc;
Search
To find a specific title you can use Search.
To use search use the APICalypse command search
, it has no shorthand :(.
Search has it’s own endpoint where it is good to use a filter for specific kinds of results, example where game != null;
for only games.
search "Halo";
fields name;
search "Halo";
f name;
Other shorts
Null can be written null
or n
.
Booleans can be written as true
or t
and false
or f
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:
- All current enum values will remain the same in the new table structure
- Only the field names are changing, not the values they contain
- This change will allow us to evolve our data structure more efficiently in the future
- This change will allow you to expand these fields instead of keeping hardcoded enums
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:
- The
age_rating
endpoint will now userating_content_descriptions
instead ofcontent_descriptions
(replacing age_rating_content_descriptions with age_rating_content_descriptions_v2) - The
companies
endpoint will have astatus
field for active,defunct,merged, or renamed.
New Endpoints replacing enum values
- age_rating_organizations
- age_rating_categories
- age_rating_content_descriptions_v2
- character_genders
- character_species
- company_status
- company_websites
- date_formats
- external_game_sources
- game_release_formats
- game_status
- game_types
- platform_types
- release_date_regions
- website_types
Datadumps
All of these changes will be reflected in the daily data dumps.
Migration Timeline
- Migration Period: starting on February 18 to August 31 (6 months)
- During this period, both old and new field names will be available
- Monthly reminders will be sent to all API users about the upcoming deprecation
- After the migration period, the old field names will be removed
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
- Begin updating your applications to use the new field names as soon as possible
- Test your applications thoroughly with the new field names
- Complete all necessary changes before the end of the 6 month migration period
- 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:
- Review our updated API documentation
- Reach out to our support team
- Join our discord community for discussions
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
Business related 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.
Technical related FAQ
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.