# Games API

Games API is the core API for using Hub88. It allows Operators to request and receive the list of available games, one singular game URL as well as a game round. All the games provided via the API are provided and implemented by Hub88.

***

## Games API Reference

***

### Get a Game URL

***

{% hint style="info" %}
This endpoint can be used in **DEMO** mode when building or testing Hub88 integration. \
For **DEMO** mode, Operator has to pass `"currency":"XXX"`. Parameters `token`, `user` can be omitted.

See more in [Demo Mode Gameplay](https://docs.hub88.io/developer-docs/operator-api-overview#demo-gameplay).
{% endhint %}

## POST /operator/generic/v2/game/url

> Returns the landing URL of the chosen game. Operator has to forward the user to the returned URL. There are several ways to forward the User:\
> &#x20;         1\. Embed URL into iframe on your site;\
> &#x20;         2\. Redirect User to the URL;\
> &#x20;         3\. Open the URL in a new window/tab of browser.

```json
{"openapi":"3.1.1","info":{"title":"Hub88","version":"2.0"},"tags":[{"name":"Games API","description":"Hub88 provides several methods for the Operator to display games on the Operator’s website."}],"paths":{"/operator/generic/v2/game/url":{"post":{"tags":["Games API"],"summary":"","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"The landing URL of the chosen game."}}}}}},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The reason why the request failed."}}}}}}},"parameters":[{"schema":{"type":"string"},"required":true,"name":"X-Hub88-Signature","in":"header","description":"RSA-SHA256 is used to sign the request body using the private key. The signature is validated using the public key associated with the provided `operator_id`."}],"operationId":"/operator/generic/v1/game/url","description":"Returns the landing URL of the chosen game. Operator has to forward the user to the returned URL. There are several ways to forward the User:\n          1. Embed URL into iframe on your site;\n          2. Redirect User to the URL;\n          3. Open the URL in a new window/tab of browser.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["user","game_code","platform","lobby_url","lang","operator_id","game_currency","currency","country"],"properties":{"user":{"description":"","$ref":"#/components/schemas/user"},"token":{"description":"","$ref":"#/components/schemas/token"},"sub_partner_id":{"description":"","$ref":"#/components/schemas/sub_partner_id"},"platform":{"description":"","$ref":"#/components/schemas/platform"},"operator_id":{"description":"","$ref":"#/components/schemas/operator_id"},"meta":{"type":"object","description":"Additional parameters which can be used for certain game Suppliers. It depends on the Operator's choice of Game Providers/Suppliers."},"lobby_url":{"type":"string","description":"`lobby_url` specifies the URL to which the game redirects to when the user clicks **the Home button** in the UI. Maximum length 255 characters. ","maxLength":255},"lang":{"type":"string","enum":["aa","ab","ae","af","ak","am","an","ar","as","av","ay","az","ba","be","bg","bh","bi","bm","bn","bo","br","bs","ca","ce","ch","co","cr","cs","cu","cv","cy","da","de","dv","dz","ee","el","en","eo","es","et","eu","fa","ff","fi","fj","fo","fr","fy","ga","gd","gl","gn","gu","gv","ha","he","hi","ho","hr","ht","hu","hy","hz","ia","id","ie","ig","ii","ik","io","is","it","iu","ja","jv","ka","kg","ki","kj","kk","kl","km","kn","ko","kr","ks","ku","kv","kw","ky","la","lb","lg","li","ln","lo","lt","lu","lv","mg","mh","mi","mk","ml","mn","mr","ms","mt","my","na","nb","nd","ne","ng","nl","nn","no","nr","nv","ny","oc","oj","om","or","os","pa","pi","pl","ps","pt","pt-br","qu","rm","rn","ro","ru","rw","sa","sc","sd","se","sg","si","sk","sl","sm","sn","so","sq","sr","ss","st","su","sv","sw","ta","te","tg","th","ti","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","wo","xh","yi","yo","za","zh","zu"],"description":"The ISO 639-1 language code, applicable to the User in the current session. "},"game_code":{"description":"","$ref":"#/components/schemas/game_code"},"deposit_url":{"type":"string","description":"The page URL where a player/user can make a monetary deposit. "},"currency":{"description":"","$ref":"#/components/schemas/currency"},"game_currency":{"description":"The ISO 4217 currency code used for in-game display. While the operator handles all transactions in a fixed currency (e.g., “EUR”), the game may display values to the player in a different currency (e.g., “USD”). Note that in-game amounts displayed to the player may differ if the `game_currency` is not supported by the supplier.","$ref":"#/components/schemas/currency"},"country":{"description":"","$ref":"#/components/schemas/country"}}}}},"required":true,"description":""}}}},"components":{"schemas":{"user":{"type":"string","minLength":3,"description":"The unique user ID in the Operator’s system. In case of DEMO gameplay, this parameter may be omitted."},"token":{"type":"string","maxLength":255,"description":"Operator's back end generates a token associated with the User, Game, player's current currency and maybe other parameters depending on the Operator's preferences. The token acts as an ID parameter for the game session. It is important that the currency is not changed during the current game session. If the User changes the currency or display unit, the Operator's backend needs to generate a new token and re-open the game with new token. In case of DEMO gameplay, this parameter may be omitted. Minimum length 10 characters, maximum length 255 characters."},"sub_partner_id":{"type":"string","description":"ID of Operator's sub-partner (brand, whitelabel, site, etc.) which uses same integration and credentials as an Operator. Used for detailed reporting and integration type switching. Sites under the same Operator can use different integration types: TransferWallet or SeamlessWallet. A single site (sub_partner_id) can NOT have both kinds of integration at the same time."},"platform":{"type":"string","enum":["GPL_DESKTOP","GPL_MOBILE"],"description":"The platform layout, either mobile or desktop, the User has. This property can be ignored, if the mode is chosen based on User's browser attributes (user-agent, resolution, ratio, orientation)."},"operator_id":{"type":"integer","description":"Unique identifier for the Operator in Hub88 system. Used to authorize incoming requests. You can obtain your `operator_id` from the Hub88 BackOffice after your Operator entity is registered and set up in the Hub88 system by the internal teams."},"game_code":{"type":"string","description":"The unique game identifier in Hub88 system in the form of a string. `game_code` can be obtained from the `/game/list` endpoint."},"currency":{"type":"string","enum":["BSD","TTD","ZMW","BMD","USD","BYR","UGX","HKD","MGA","GIP","UZS","MKD","PTS","mLTC","EGP","AWG","CZK","ILS","MZN","TND","XPF","SOS","DOP","RUB","KRW","BTN","KGS","BAM","AOA","SOC","AMS","BND","RSD","FKP","PEN","EOS","GHS","JPY","TRY","SBD","UAH","LTL","FJD","GNF","MDL","AFN","ZAR","MOP","TJS","BOB","JMD","QAR","IRR","SYP","XXX","NAD","MYR","CUP","NOK","BGN","KPW","MNT","NZD","uETH","SGD","PYG","OMR","DZD","EUR","TMT","MMK","PTQ","ANG","TZS","CRC","VES","ETB","THB","ZWD","LYD","CHF","MVR","KES","CVE","LSL","KMF","SZL","KYD","BRL","AED","WST","YER","ALL","TRX","HUF","GTQ","uBTC","IDR","MWK","CUC","DKK","TWD","XCD","BBD","LRD","KZT","JOD","BYN","BIF","PLN","SDG","VUV","SEK","BDT","HNL","BWP","VND","ISK","SLL","BHD","HTG","USDT","ADA","MUR","ERN","uLTC","LKR","COP","GEL","AUD","GBP","CAD","PHP","PAB","DJF","GMD","PKR","NIO","AMD","RWF","RON","NGN","TOP","UYU","AZN","SRD","KWD","PGK","CDF","SAR","IQD","XRP","SCR","mETH","MAD","GYD","INR","LBP","ARS","MXN","CLP","BNB","CNY","KHR","LAK","HRK","BZD","SSP","XOF","X5T","MRO","NPR","mBTC"],"description":"The [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code. The following list contains all currencies supported by our system. Note that native gameplay support for these currencies may vary per Provider. Please contact us to know which Provider supports which currencies."},"country":{"type":"string","enum":["XX","AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"],"description":"The [ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) country code, applicable to the User in the current session. "}}}}
```

***

### Get a Game round

***

## POST /operator/generic/v2/game/round

> The endpoint allows to retrieve details of a game round. \`round\` or \`transaction\_uuid\` must be passed for the request to pass.

```json
{"openapi":"3.1.1","info":{"title":"Hub88","version":"2.0"},"tags":[{"name":"Games API","description":"Hub88 provides several methods for the Operator to display games on the Operator’s website."}],"paths":{"/operator/generic/v2/game/round":{"post":{"tags":["Games API"],"summary":"","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"The URL to the round details page, which you can embed. `round` or `transaction_uuid` must be passed for the request to pass."}},"description":"The URL to the round details page, which you can embed. "}}}},"400":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"The URL to round details page, which you can embed. "}},"description":"The URL to the round details page, which you can embed.  "}}}}},"parameters":[{"schema":{"type":"string"},"required":true,"name":"X-Hub88-Signature","in":"header","description":"RSA-SHA256 is used to sign the request body using the private key. The signature is validated using the public key associated with the provided `operator_id`."}],"operationId":"/operator/generic/v2/game/round","description":"The endpoint allows to retrieve details of a game round. `round` or `transaction_uuid` must be passed for the request to pass.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["operator_id","round"],"properties":{"user":{"description":"","$ref":"#/components/schemas/user"},"transaction_uuid":{"type":"string","description":"The transaction identifier, which you recive from us through the API during a gameplay."},"round":{"type":"string","description":"The round identifier, which you recive from us through the API during a gameplay."},"operator_id":{"description":"","$ref":"#/components/schemas/operator_id"}}}}},"required":true,"description":"You can use `transaction_uuid` or a combination of the `round` and the `user` to retreive the round details."}}}},"components":{"schemas":{"user":{"type":"string","minLength":3,"description":"The unique user ID in the Operator’s system. In case of DEMO gameplay, this parameter may be omitted."},"operator_id":{"type":"integer","description":"Unique identifier for the Operator in Hub88 system. Used to authorize incoming requests. You can obtain your `operator_id` from the Hub88 BackOffice after your Operator entity is registered and set up in the Hub88 system by the internal teams."}}}}
```

***

### Get the Game List

***

## POST /operator/generic/v2/game/list

> Provides a list of games that are available for the Operator.

```json
{"openapi":"3.1.1","info":{"title":"Hub88","version":"2.0"},"tags":[{"name":"Games API","description":"Hub88 provides several methods for the Operator to display games on the Operator’s website."}],"paths":{"/operator/generic/v2/game/list":{"post":{"tags":["Games API"],"summary":"","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Games"}}}}},"parameters":[{"schema":{"type":"string"},"required":true,"name":"X-Hub88-Signature","in":"header","description":"RSA-SHA256 is used to sign the request body using the private key. The signature is validated using the public key associated with the provided `operator_id`."}],"operationId":"/operator/generic/v2/game/list","description":"Provides a list of games that are available for the Operator.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["operator_id"],"properties":{"operator_id":{"description":"","$ref":"#/components/schemas/operator_id"},"product_code":{"type":"string","description":"Used to filter the game list by a specific product. When provided, only games associated with the given product code will be returned. If the `product_code` isn't provided, the full list of games is returned. "},"release_date":{"type":"string","description":"Returns *only the games* with an effective *release date on* or *after* the specified date value (`YYYY-MM-DD`); if omitted, the full game list is returned. If no game matches, `200` success is returned with an empty list."},"latest":{"type":"boolean","description":"When `true`, returns only games whose game entity was updated on today's UTC date (00:00:00–23:59:59 UTC). Cannot be combined with `release_date`. If omitted, the full game list is returned."}}}}},"required":true,"description":""}}}},"components":{"schemas":{"Games":{"type":"array","items":{"$ref":"#/components/schemas/Game"}},"Game":{"type":"object","title":"Game","required":["url_background","url_thumb","platforms","blocked_countries","restricted_countries","enabled","category","product","name","game_code","supplier_identifier","release_date","freebet_support","demo_game_support","rtp","volatility","paylines","hit_ratio","certifications","languages","theme","technology","features"],"properties":{"url_thumb":{"type":"string","description":"The Game preview image URL."},"url_background":{"type":"string","description":"The Game background image URL."},"product":{"type":"string","description":"The Game Supplier (Provider)."},"platforms":{"type":"array","items":{"$ref":"#/components/schemas/platform"},"description":"The list of supported platforms, either desktop or mobile is supported."},"name":{"type":"string","description":"The full name of a Game."},"game_code":{"description":"","$ref":"#/components/schemas/game_code"},"supplier_identifier":{"type":"object","title":"supplier_identifier","properties":{"game_id":{"type":"string","description":"Supplier's internal game ID."},"game_code":{"type":"string","description":"Supplier's game code (typically referencing desktop)."},"game_code_mobile":{"type":"string","description":" Supplier's mobile-specific game code, if any."}}},"freebet_support":{"type":"boolean","description":"Shows if a Game supports creation of freebets."},"demo_game_support":{"type":"boolean","description":"Shows if the Game supports DEMO plays."},"enabled":{"type":"boolean","description":"Shows if a Game is enabled or not"},"category":{"description":"","$ref":"#/components/schemas/category"},"blocked_countries":{"description":"","$ref":"#/components/schemas/blocked_countries"},"restricted_countries":{"description":"","$ref":"#/components/schemas/restricted_countries"},"release_date":{"type":"string","format":"date","description":"A date when a Game is due to go live, displayed in RFC3339 / ISO8601 format."},"volatility":{"type":"integer","enum":[1,2,3,4,5,6],"description":"Shows how volatile a Game is on scale of 1-6.\n\n1 - Low\n\n2 - Medium-Low\n\n3 - Medium\n\n4 - Medium-High\n\n5 - High\n\n6 - Very High"},"rtp":{"type":"string","description":"Return To Players (rtp) percentage of the Game, shows how much of the total bet amount will be redistributed between players as winnings. Stored as decimal in a form of a string. "},"paylines":{"type":"integer","description":"Shows the maximum number of paylines available in a Game."},"hit_ratio":{"type":"string","description":"The hit ratio indicates the ratio between winning and losing bets in the span of 100 bets. The Ratio is stored as decimal in the form of a string. Can be sent as null, when the game is live or supplier hasn't forwarded the data."},"certifications":{"type":"array","items":{"enum":["CURACAO","MGA","IOM"],"type":"string"},"description":"A list of authorized license certifications given out to the game."},"languages":{"type":"array","items":{"type":"string","description":"The language code in ISO 639-2 alpha-3 format."},"description":"List of languages supported by the game client."},"theme":{"type":"array","items":{"type":"string"},"description":"List of themes assigned to the Game."},"technology":{"type":"array","items":{"type":"string"},"description":"Technologies used within the Game."},"features":{"type":"array","items":{"type":"string"},"description":"The features available in this Game."}},"description":"Full Game item on Hub88."},"platform":{"type":"string","enum":["GPL_DESKTOP","GPL_MOBILE"],"description":"The platform layout, either mobile or desktop, the User has. This property can be ignored, if the mode is chosen based on User's browser attributes (user-agent, resolution, ratio, orientation)."},"game_code":{"type":"string","description":"The unique game identifier in Hub88 system in the form of a string. `game_code` can be obtained from the `/game/list` endpoint."},"category":{"type":"string","enum":["Video Keno","Video Bingo","Live Poker","Live Wheel of Fortune","Live Sicbo","Live Crash","Baccarat","Bet On Poker","Blackjack","Casual Games","Jackpot Slots","Live Baccarat","Live Blackjack","Live Dealer","Live Dice","Live Games","Live Keno","Live Lottery","Live Roulette","Lottery","Minigame","Multiplayer","Player Props","Poker","Roulette","Scratch Cards","Sportsbook","Table Games","Video Poker","Virtual Sports","Wheel of Fortune","Instant Win Games","Keno","Bingo","Sic Bo","Video Slots","Unknown","Crash","Scratch","Dragon Tiger","Live Game Shows","Live Dragon Tiger","Crash Games","Arcade Games","Other Table Games","Other Live Games","Dice","Plinko","Hi Lo"],"description":"The game type as a category. The following enum contains all possible values."},"blocked_countries":{"type":"array","items":{"$ref":"#/components/schemas/country"},"description":"List of blocked countries. A Game must not be shown and launched for the users in the specified countries. Supplier's content is blocked in the listed country regardless of the local license.  "},"country":{"type":"string","enum":["XX","AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"],"description":"The [ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) country code, applicable to the User in the current session. "},"restricted_countries":{"type":"array","items":{"$ref":"#/components/schemas/country"},"description":"List of restricted countries. A Game must not be shown and/or launched for the users in the specified countries. Supplier's content is blocked in the listed country, with the exemption of a sub-licensee (operator) having the local gaming license."},"operator_id":{"type":"integer","description":"Unique identifier for the Operator in Hub88 system. Used to authorize incoming requests. You can obtain your `operator_id` from the Hub88 BackOffice after your Operator entity is registered and set up in the Hub88 system by the internal teams."}}}}
```

***

### Get a List of Products

## POST /operator/generic/v2/products/list

> Provides a list of Products that are available for the Operator.

```json
{"openapi":"3.1.1","info":{"title":"Hub88","version":"2.0"},"tags":[{"name":"Games API","description":"Hub88 provides several methods for the Operator to display games on the Operator’s website."}],"paths":{"/operator/generic/v2/products/list":{"post":{"tags":["Games API"],"summary":"","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Products"}}}}},"parameters":[{"schema":{"type":"string"},"required":true,"name":"X-Hub88-Signature","in":"header","description":"RSA-SHA256 is used to sign the request body using the private key. The signature is validated using the public key associated with the provided `operator_id`."}],"operationId":"/operator/generic/v2/products/list","description":"Provides a list of Products that are available for the Operator.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["operator_id"],"properties":{"operator_id":{"description":"","$ref":"#/components/schemas/operator_id"}}}}},"required":true,"description":""}}}},"components":{"schemas":{"Products":{"type":"array","items":{"$ref":"#/components/schemas/Product"}},"Product":{"type":"object","title":"Product","required":["product_name","product_code","product_logo_url"],"properties":{"product_name":{"description":"Unique name of the Product.","type":"string"},"product_code":{"description":"Unique code assigned to the Product.","type":"string"},"product_logo_url":{"description":"The logo url for a Product's logo.","type":"string"}}},"operator_id":{"type":"integer","description":"Unique identifier for the Operator in Hub88 system. Used to authorize incoming requests. You can obtain your `operator_id` from the Hub88 BackOffice after your Operator entity is registered and set up in the Hub88 system by the internal teams."}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hub88.io/developer-docs/operator-api-reference/games-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
