SoftAggregator API documentation
Integrate 4,000+ casino games through one seamless-wallet API. This reference covers everything you need to list games, create players, launch games, award free rounds and handle wallet callbacks.
Introduction
The SoftAggregator API uses a seamless wallet model: your platform keeps player balances, and our API calls your callback URL for every balance check, bet and win. All API methods are sent as POST requests with a JSON body to a single endpoint.
Base URL
https://api.softaggregator.com/api/v1
Authentication
Every request includes your api_login and api_password (issued in your operator backend after approval). The method field selects the operation.
{
"api_login": "YOUR_API_LOGIN",
"api_password": "YOUR_API_PASSWORD",
"method": "getGameList"
}
getGameListGet game list
Returns all games available to you. Use each game's id_hash when launching a game.
POST /api/v1
{ "api_login": "...", "api_password": "...", "method": "getGameList" }
→ {
"error": 0,
"response": [
{
"id": 483,
"name": "Game Name",
"type": "video-slots",
"category": "pragmaticplay",
"id_hash": "provider/GameName",
"freerounds_supported": true,
"play_for_fun_supported": true,
"image": "https://.../GameName.webp"
}
]
}
createPlayerCreate player
Creates (or ensures) a player on the system before launching a game.
{ "api_login":"...", "api_password":"...", "method":"createPlayer",
"user_username":"player123", "user_password":"secret", "currency":"USD" }
→ { "error": 0, "response": { ... } }
getGameLaunch game
Returns the URL to load the game in an iframe. Use the id_hash from getGameList as gameid.
| Field | Description |
|---|---|
user_username | Player username |
user_password | Player password |
gameid | Game id_hash |
lang | Language code, e.g. en |
homeurl | Return URL after the player exits |
play_for_fun | Optional — demo mode |
{ "api_login":"...", "api_password":"...", "method":"getGame",
"user_username":"player123", "user_password":"secret",
"gameid":"provider/GameName", "lang":"en", "currency":"USD",
"homeurl":"https://yourcasino.com" }
→ { "error": 0, "response": "https://game-launch-url..." }
method: "getGameDemo" with the same parameters.addFreeRoundsFree rounds
Award free spins on a supported game (freerounds_supported: true in the game list).
{ "api_login":"...", "api_password":"...", "method":"addFreeRounds",
"user_username":"player123", "user_password":"secret",
"gameid":"provider/GameName", "freespins":10, "bet_level":0,
"valid_days":7, "currency":"USD" }
Use getFreeRounds to list and deleteFreeRounds to remove them.
Wallet callbacks
We call your callback URL (set in your operator backend) for every player balance change. Callbacks are sent as GET requests. Your endpoint must always return HTTP 200; communicate errors only via the JSON body. Balances are always integers in cents (e.g. $2.50 → 250).
action: balance
Sent at the start of a session to read the player's balance.
GET {your_callback}?username=player123¤cy=USD&action=balance
&call_id=...×tamp=...&key=...
← { "error": 0, "balance": 250 }
action: debit / credit
debit subtracts a bet; credit adds a win. call_id is the unique transaction id — use it to de-duplicate. If funds are insufficient on a debit, return error: 1 with the current balance.
GET {your_callback}?username=player123¤cy=USD&action=debit
&amount=100&type=spin&round_id=...&game_id=provider/GameName
&call_id=...×tamp=...&rb=0&key=...
← { "error": 0, "balance": 150 }
| Field | Description |
|---|---|
amount | Amount in cents |
action | debit | credit | balance |
type | spin, or bonus_fs for free spins (do not deduct on debit) |
call_id | Unique transaction id (de-dup) |
round_id | Game round id |
game_id | Game id_hash |
rb | 1 = rollback (process like a normal debit/credit) |
Signature validation
Every callback carries timestamp and key. Validate that the timestamp is within 30 seconds and that the key matches:
key = md5(timestamp + your_salt_key)
Your salt_key is shown in your operator backend. If validation fails, return { "error": 2, "balance": 0 }.
Error codes
| Code | Meaning |
|---|---|
0 | Success |
1 | Insufficient balance (return current balance) |
2 | Processing error / invalid signature / player not found |
Need help integrating? Contact us on Telegram @mentionso or email [email protected].