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
| Parameter | Type | Required | Description |
|---|---|---|---|
| username | string | Yes | Account name |
| password | string | Yes | Login 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 Code | code | message | Description |
|---|---|---|---|
| 200 | 200 | — | Login successful |
| 422 | 422 | Account does not exist | Account does not exist |
| 422 | 422 | Password error | Incorrect password |
| 422 | 422 | Account is frozen | Account 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| account | string | Yes | Player account, 6–24 characters |
| password | string | Yes | Player password, 6–24 characters |
| recharge_amount | integer | No | Initial deposit amount at registration (CNY), default: 0 |
Response Example
Success (200)
{
"code": 200,
"message": "success",
"userinfo": {
"account": "player001",
"password": "123456"
}
}Failure
| HTTP Status Code | code | message | Description |
|---|---|---|---|
| 422 | 422 | Player already exists for this account name | Account already exists |
| 422 | 422 | Score input error | Invalid deposit amount |
| 422 | 422 | Insufficient score | Insufficient agent balance |
| 429 | 429 | Duplicate request | Duplicate request (concurrency lock) |
| 500 | 500 | Internal Server Error. Something went wrong | Internal 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_id | integer | Yes | Player UserID |
| type | integer | No | Operation type:1 deposit (default),2 withdrawal |
| recharge_amount | integer | Yes | Operation amount (CNY), must be greater than 0 |
| remark | string | No | Remark, maximum 512 characters |
Response Example
Success (200)
{
"code": 200,
"message": "success"
}Failure
| HTTP Status Code | code | message | Description |
|---|---|---|---|
| 422 | 422 | Exception operation, please try again | Concurrency lock conflict; please try again later |
| 422 | 422 | Account does not exist | Player does not exist or you do not have permission to operate on this player |
| 422 | 422 | Score input error | Invalid amount |
| 422 | 422 | Insufficient score | Insufficient agent balance for deposit / insufficient player balance for withdrawal |
| 500 | 500 | Internal Server Error. Something went wrong | Internal server error |
Order Records Query#
POST/api/order_records
Bearer Token authentication required
Request Headers
Authorization: Bearer {token}Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_id | integer | Yes | Player UserID |
| start_date | string | Yes | Query start date, format Y-m-d, e.g. 2024-01-01 |
| end_date | string | Yes | Query end date, format Y-m-d, must be >= start_date |
| type | integer | No | Record type:1 deposit records (default),2 withdrawal records |
| per_page | integer | No | Items 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
| Field | Type | Description |
|---|---|---|
| UserID | int | Player ID |
| SourceScore | float | Balance before change (CNY) |
| ChangeScore | float | Balance change (CNY; positive for deposit / negative for withdrawal) |
| TargetScore | float | Balance after change (CNY) |
| InsertTime | string | Operation time |
| OpID | int | Operating agent ID |
Game Records Query#
POST/api/game_records
Bearer Token authentication required
Request Headers
Authorization: Bearer {token}Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_id | integer | Yes | Player UserID |
| start_date | string | Yes | Query start date, format Y-m-d, e.g. 2024-01-01 |
| end_date | string | Yes | Query end date, format Y-m-d, must be >= start_date |
| per_page | integer | No | Items 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
| Field | Type | Description |
|---|---|---|
| UserID | int | Player ID |
| Accounts | string | Player account |
| NickName | string | Player nickname |
| Profit | int | Profit (balance, in cents) |
| Gain | int | Gain (balance, in cents) |
| Loss | int | Loss (balance, in cents) |
| StartTime | string | Game start time |
| EndTime | string | Game end time |
| scoreInfo | object | Current 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
| Field | Description |
|---|---|
| ip_list | Server IP list; game-room ServerAddr references entries by array index |
| Other category keys | Groups by game type; each record uses the format:[KindID, TypeID, [room list], MaintainStatus] |
Room List Fields(by array index):
| Index | Description |
|---|---|
| 0 | MinEnterScore (minimum entry balance) |
| 1 | ServerPort (server port) |
| 2 | IP index (corresponding to the ip_list array index) |
| 3 | ServerID (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
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_id | integer | Yes | Player UserID |
| game_id | integer | Yes | Game KindID |
| back_url | string | Yes | Callback URL |
| lang | string | No | Language; 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 Code | code | message | Description |
|---|---|---|---|
| 422 | 422 | Account does not exist | Player does not exist |
| 422 | 422 | Game not available | Game room is unavailable |
| 500 | 500 | Internal Server Error. Something went wrong | Internal server error |
Kick Player from Game#
POST/api/kick_player
Bearer Token authentication required
Request Headers
Authorization: Bearer {token}Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_id | integer | Yes | Player UserID |
| lang | string | No | Language; allowed values:en(default),cn、vn、pt |
Response Example
Success (200)
{
"code": 200,
"message": "success"
}Failure
| HTTP Status Code | code | message | Description |
|---|---|---|---|
| 422 | 422 | Account does not exist | Player does not exist |
| 500 | 500 | Internal Server Error. Something went wrong | Internal server error |
Get Player Balance#
POST/api/get_player_balance
Bearer Token authentication required
Request Headers
Authorization: Bearer {token}Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_id | integer | Yes | Player UserID |
| lang | string | No | Language; 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_id | integer | Yes | Player UserID |
| new_password | string | Yes | New password (6–24 characters) |
| lang | string | No | Language; 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| agent_id | integer | Yes | Player UserID |
| lang | string | No | Language; 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| agent_id | integer | Yes | Agent ID |
| new_password | string | Yes | New password (6–24 characters) |
| lang | string | No | Language; 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| account | string | Yes | Account (6–24 characters; must contain both letters and numbers) |
| password | string | Yes | Password (6–24 characters) |
| recharge_amount | integer | No | Deposit amount |
| role | string | Yes | store or distributor |
| lang | string | No | Language; 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| agent_id | integer | Yes | Agent ID |
| type | integer | Yes | 1 - Deposit, 2 - Withdrawal |
| amount | integer | No | Amount |
| lang | string | No | Language; 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 Code | code | Description |
|---|---|---|
| 200 | 200 | Request successful |
| 401 | — | Unauthenticated; Token is invalid or expired |
| 422 | 422 | Parameter validation failed or business logic error |
| 429 | — | Too many requests (concurrency lock) |
| 500 | 500 | Internal server error |
Agent Order Records Query#
POST/api/change_agent_score
Bearer Token authentication required
Request Headers
Authorization: Bearer {token}Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| agent_id | integer | No | Agent ID |
| type | integer | No | 1 - Deposit, 2 - Withdrawal |
| start_date | date | Yes | Start date |
| end_date | date | Yes | End date |
| per_page | integer | No | Items per page |
| lang | string | No | Language; 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 Code | code | Description |
|---|---|---|
| 200 | 200 | Request successful |
| 401 | — | Unauthenticated; Token is invalid or expired |
| 422 | 422 | Parameter validation failed or business logic error |
| 429 | — | Too many requests (concurrency lock) |
| 500 | 500 | Internal 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.
