Yolo

Recharge, Redeem, Automatic account creation

Authentication
Not specified in source
Sections
21

Introduction#

G7S_Api_Merchant_Edition API Documentation

API Documentation#

Base URL: /api Authentication: Bearer Token (Sanctum) All requests/responses use Content-Type: application/json

  • Authentication
  • Login
  • Logout
  • Player Management
  • Create Player
  • Player Balance Change (Deposit/Withdrawal)
  • Order Records Query
  • Game Records Query
  • Get Player Balance
  • Reset Player Password
  • Games
  • Game List
  • Get Game URL
  • Kick Player from Game
  • Agent Management
  • Get Agent Balance
  • Reset Agent Password
  • Create Agent
  • Agent Balance Change (Deposit/Withdrawal)
  • Agent Order Records Query

Login#

GET / POST /api/login

No authentication required.

Request Parameters

ParameterTypeRequiredDescription
usernamestringYesAccount name
passwordstringYesLogin password

Response Example

Success (200)

{
  "code": 200,
  "userinfo": {
    "AgentID": 1001,
    "AgentAccount": "agent01",
    "Score": 9999.00
  },
  "token": "1|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

Failure (422)

{
  "code": 422,
  "message": "Password error"
}
HTTP Status CodecodemessageDescription
200200—Login successful
422422Account does not existAccount does not exist
422422Password errorIncorrect password
422422Account is frozenAccount is frozen

Logout#

GET/api/logout

Bearer Token authentication required

Request Headers

Authorization: Bearer {token}

Response Example

Success (200)

{
  "code": 200,
  "message": "success"
}

Create Player#

POST/api/create_player

Bearer Token authentication required Concurrent requests for the same account name will be rejected (3-second idempotency lock)

Request Headers

Authorization: Bearer {token}

Request Parameters

ParameterTypeRequiredDescription
accountstringYesPlayer account, 6–24 characters
passwordstringYesPlayer password, 6–24 characters
recharge_amountintegerNoInitial deposit amount at registration (CNY), default: 0

Response Example

Success (200)

{
  "code": 200,
  "message": "success",
  "userinfo": {
    "account": "player001",
    "password": "123456"
  }
}

Failure

HTTP Status CodecodemessageDescription
422422Player already exists for this account nameAccount already exists
422422Score input errorInvalid deposit amount
422422Insufficient scoreInsufficient agent balance
429429Duplicate requestDuplicate request (concurrency lock)
500500Internal Server Error. Something went wrongInternal server error

Player Balance Change (Deposit/Withdrawal)#

POST/api/change_score

Bearer Token authentication required Concurrent requests for the same user_id will be rejected (3-second Redis lock)

Request Headers

Authorization: Bearer {token}

Request Parameters

ParameterTypeRequiredDescription
user_idintegerYesPlayer UserID
typeintegerNoOperation type:1 deposit (default),2 withdrawal
recharge_amountintegerYesOperation amount (CNY), must be greater than 0
remarkstringNoRemark, maximum 512 characters

Response Example

Success (200)

{
  "code": 200,
  "message": "success"
}

Failure

HTTP Status CodecodemessageDescription
422422Exception operation, please try againConcurrency lock conflict; please try again later
422422Account does not existPlayer does not exist or you do not have permission to operate on this player
422422Score input errorInvalid amount
422422Insufficient scoreInsufficient agent balance for deposit / insufficient player balance for withdrawal
500500Internal Server Error. Something went wrongInternal server error

Order Records Query#

POST/api/order_records

Bearer Token authentication required

Request Headers

Authorization: Bearer {token}

Request Parameters

ParameterTypeRequiredDescription
user_idintegerYesPlayer UserID
start_datestringYesQuery start date, format Y-m-d, e.g. 2024-01-01
end_datestringYesQuery end date, format Y-m-d, must be >= start_date
typeintegerNoRecord type:1 deposit records (default),2 withdrawal records
per_pageintegerNoItems per page; allowed values:10、20、50、100、200

Response Example

Success (200)

{
  "code": 200,
  "message": "success",
  "data": {
    "total": 100,
    "lists": [
      {
        "UserID": 10001,
        "SourceScore": 100.00,
        "ChangeScore": 50.00,
        "TargetScore": 150.00,
        "InsertTime": "2024-01-15 12:30:00",
        "OpID": 1001
      }
    ]
  }
}

Field Descriptions

FieldTypeDescription
UserIDintPlayer ID
SourceScorefloatBalance before change (CNY)
ChangeScorefloatBalance change (CNY; positive for deposit / negative for withdrawal)
TargetScorefloatBalance after change (CNY)
InsertTimestringOperation time
OpIDintOperating agent ID

Game Records Query#

POST/api/game_records

Bearer Token authentication required

Request Headers

Authorization: Bearer {token}

Request Parameters

ParameterTypeRequiredDescription
user_idintegerYesPlayer UserID
start_datestringYesQuery start date, format Y-m-d, e.g. 2024-01-01
end_datestringYesQuery end date, format Y-m-d, must be >= start_date
per_pageintegerNoItems per page; allowed values:10、20、50、100、200

Response Example

Success (200)

{
  "code": 200,
  "message": "success",
  "data": {
    "total": 50,
    "lists": [
      {
        "UserID": 10001,
        "Accounts": "player001",
        "NickName": "player001",
        "Profit": 200,
        "Gain": 500,
        "Loss": 300,
        "StartTime": "2024-01-15 10:00:00",
        "EndTime": "2024-01-15 10:30:00",
        "scoreInfo": {
          "Score": 15000,
          "UserID": 10001
        }
      }
    ]
  }
}

Field Descriptions

FieldTypeDescription
UserIDintPlayer ID
AccountsstringPlayer account
NickNamestringPlayer nickname
ProfitintProfit (balance, in cents)
GainintGain (balance, in cents)
LossintLoss (balance, in cents)
StartTimestringGame start time
EndTimestringGame end time
scoreInfoobjectCurrent balance information

Game List#

GET/api/game_list

Bearer Token authentication required

Request Headers

Authorization: Bearer {token}

Response Example

Success (200)

{
  "code": 200,
  "message": "success",
  "data": {
    "ip_list": ["192.168.1.1"],
    "slot": [
      [101, 1, [[100, 8000, 0, 1001]], 0]
    ],
    "chess": [
      [201, 2, [[200, 8001, 0, 1002]], 0]
    ]
  }
}

data Field Descriptions

FieldDescription
ip_listServer IP list; game-room ServerAddr references entries by array index
Other category keysGroups by game type; each record uses the format:[KindID, TypeID, [room list], MaintainStatus]

Room List Fields(by array index):

IndexDescription
0MinEnterScore (minimum entry balance)
1ServerPort (server port)
2IP index (corresponding to the ip_list array index)
3ServerID (server ID)

Failure (500)

{
  "code": 500,
  "message": "Internal Server Error. Something went wrong",
  "data": []
}

Get Game URL#

POST/api/get_game_url

Bearer Token authentication required

Request Headers

Authorization: Bearer {token}

Request Parameters

ParameterTypeRequiredDescription
user_idintegerYesPlayer UserID
game_idintegerYesGame KindID
back_urlstringYesCallback URL
langstringNoLanguage; allowed values:en(default),cn、vn、pt

Response Example

Success (200)

{
  "code": 200,
  "message": "success",
  "game_url": "https://yoloh5.play8.cyou/play85/?UserID=10001&token=xxxx&ChannelID=10022&userGUID=xxxx&GameID=101&ServerID=1001&ServerAddr=192.168.1.1&serverPort=8000&lang=en&apiType=1"
}

Failure

HTTP Status CodecodemessageDescription
422422Account does not existPlayer does not exist
422422Game not availableGame room is unavailable
500500Internal Server Error. Something went wrongInternal server error

Kick Player from Game#

POST/api/kick_player

Bearer Token authentication required

Request Headers

Authorization: Bearer {token}

Request Parameters

ParameterTypeRequiredDescription
user_idintegerYesPlayer UserID
langstringNoLanguage; allowed values:en(default),cn、vn、pt

Response Example

Success (200)

{
  "code": 200,
  "message": "success"
}

Failure

HTTP Status CodecodemessageDescription
422422Account does not existPlayer does not exist
500500Internal Server Error. Something went wrongInternal server error

Get Player Balance#

POST/api/get_player_balance

Bearer Token authentication required

Request Headers

Authorization: Bearer {token}

Request Parameters

ParameterTypeRequiredDescription
user_idintegerYesPlayer UserID
langstringNoLanguage; allowed values:en(default),cn、vn、pt

Response Example

Success (200)

{
  "code": 200,
  "message": "success",
    "data": {
        "user_id": 1,
        "balance": 1,
        "query_time": "xxxx-xx-xx xx:xx:xx.xxxx"
    }
}

Reset Player Password#

POST/api/reset_player_password

Bearer Token authentication required

Request Headers

Authorization: Bearer {token}

Request Parameters

ParameterTypeRequiredDescription
user_idintegerYesPlayer UserID
new_passwordstringYesNew password (6–24 characters)
langstringNoLanguage; allowed values:en(default),cn、vn、pt

Response Example

Success (200)

{
  "code": 200,
  "message": "success"
}

Get Agent Balance#

POST/api/get_agent_balance

Bearer Token authentication required

Request Headers

Authorization: Bearer {token}

Request Parameters

ParameterTypeRequiredDescription
agent_idintegerYesPlayer UserID
langstringNoLanguage; allowed values:en(default),cn、vn、pt

Response Example

Success (200)

{
  "code": 200,
  "message": "success",
    "data": {
        "agent_id": 1,
        "balance": 1,
        "query_time": "xxxx-xx-xx xx:xx:xx.xxxx"
    }
}

Reset Agent Password#

POST/api/reset_agent_password

Bearer Token authentication required

Request Headers

Authorization: Bearer {token}

Request Parameters

ParameterTypeRequiredDescription
agent_idintegerYesAgent ID
new_passwordstringYesNew password (6–24 characters)
langstringNoLanguage; allowed values:en(default),cn、vn、pt

Response Example

Success (200)

{
  "code": 200,
  "message": "success"
}

Create Agent#

POST/api/create_agent

Bearer Token authentication required

Request Headers

Authorization: Bearer {token}

Request Parameters

ParameterTypeRequiredDescription
accountstringYesAccount (6–24 characters; must contain both letters and numbers)
passwordstringYesPassword (6–24 characters)
recharge_amountintegerNoDeposit amount
rolestringYesstore or distributor
langstringNoLanguage; allowed values:en(default),cn、vn、pt

Response Example

Success (200)

{
    "code": 200,
    "message": "success",
    "userinfo": {
        "score": "xxx",
        "account": "xxxxxx",
        "password": "xxxxxx"
    }
}

Agent Balance Change (Deposit/Withdrawal)#

POST/api/change_agent_score

Bearer Token authentication required

Request Headers

Authorization: Bearer {token}

Request Parameters

ParameterTypeRequiredDescription
agent_idintegerYesAgent ID
typeintegerYes1 - Deposit, 2 - Withdrawal
amountintegerNoAmount
langstringNoLanguage; allowed values:en(default),cn、vn、pt

Response Example

Success (200)

{
    "code": 200,
    "message": "success",
    "data": {
        "agent_id": 13654,
        "before_balance": 10,
        "change_amount": -10,
        "after_balance": 0
    }
}

Common Error Codes#

HTTP Status CodecodeDescription
200200Request successful
401—Unauthenticated; Token is invalid or expired
422422Parameter validation failed or business logic error
429—Too many requests (concurrency lock)
500500Internal server error

Agent Order Records Query#

POST/api/change_agent_score

Bearer Token authentication required

Request Headers

Authorization: Bearer {token}

Request Parameters

ParameterTypeRequiredDescription
agent_idintegerNoAgent ID
typeintegerNo1 - Deposit, 2 - Withdrawal
start_datedateYesStart date
end_datedateYesEnd date
per_pageintegerNoItems per page
langstringNoLanguage; allowed values:en(default),cn、vn、pt

Response Example

Success (200)

{
    "code": 200,
    "message": "success",
    "data": {
        "total": 2,
        "lists": [
            {
                "AgentID": 13654,
                "SourceScore": "10.00",
                "ChangeScore": "-10.00",
                "TargetScore": "0.00",
                "InsertTime": "2026-05-18 13:56:23",
                "OpID": 10102,
                "type": 2
            },
            {
                "AgentID": 13654,
                "SourceScore": "0.00",
                "ChangeScore": "10.00",
                "TargetScore": "10.00",
                "InsertTime": "2026-05-18 13:55:52",
                "OpID": 10102,
                "type": 1
            }
        ]
    }
}

Common Error Codes#

HTTP Status CodecodeDescription
200200Request successful
401—Unauthenticated; Token is invalid or expired
422422Parameter validation failed or business logic error
429—Too many requests (concurrency lock)
500500Internal server error

Authentication Notes#

Except for /api/login, all endpoints require a Token in the request header:

Authorization: Bearer {token returned by the login endpoint}

Tokens are implemented with Laravel Sanctum. Each login deletes the previous token and generates a new one; simultaneous multi-device login is not supported for the same account.