Member User Profile API Documentation

Complete API reference for Member User Profile endpoints

GET /v2/user/profile Requires: JwtAccessGuardMemberV2
Get the authenticated member's profile information including user details, balances, promotions, and partner settings.
Request

Headers:

Header Type Required Description
Authorization string Yes Bearer {accessToken}

Body: Empty

Response

200 OK Success

{
  "isSuccess": true,
  "statusCode": 200,
  "data": {
    "id": 1712,
    "uid": "user-uid-123",
    "username": "member123",
    "alternateUsername": null,
    "mobileNumber": "0912345678",
    "partnerId": 123,
    "isEnable": true,
    "memberGroupV2Id": null,
    "baseCurrency": "THB",
    "convertRate": 1,
    "email": null,
    "currentCredit": 1000.50,
    "coinCurrentCoin": 500,
    "coinTotalCoin": 1000,
    "totalDepositCredit": 5000.00,
    "totalWithdrawCredit": 2000.00,
    "totalDirectCredit": 0,
    "isDeposited": true,
    "cashbackCurrentCredit": 50.00,
    "cashbackTotalCredit": 100.00,
    "turnoverCurrentCredit": 3000.00,
    "turnoverTotalCredit": 5000.00,
    "turncreditCurrentCredit": 0,
    "todayDepositCount": 2,
    "todayDepositCredit": 500.00,
    "todayWithdrawCount": 1,
    "todayWithdrawCredit": 200.00,
    "affiliateCurrentCredit": 0,
    "affiliateTotalCredit": 0,
    "affiliateTotalMemberCount": 0,
    "affiliateTotalClickCount": 0,
    "isUplineOwner": false,
    "paymentBankCodeName": "KBANK",
    "paymentBankAccountName": "John Doe",
    "paymentBankAccountNumber": "1234567890",
    "favoriteGame": [],
    "disabledGame": [],
    "isAutoReceivePromotion": true,
    "preferredPromotionId": null,
    "isLinkLine": false,
    "promotion": {
      "activePromotion": null,
      "currentTurnover": 0,
      "neededTurn": 0,
      "canAddFund": true
    },
    "providerCurrencyKeys": [],
    "partner": {
      "isEnableAffiliate": true,
      "isEnableCashback": true,
      "isEnableCoupon": true,
      "agentMaxDeposit": 10000,
      "agentMinDeposit": 100,
      "agentMaxWithdraw": 5000,
      "agentMinWithdraw": 100,
      "agentMaxWithdrawPerDay": 10000,
      "isEnableForceFullWithdraw": false,
      "isEnablePaymentGateway": true,
      "isEnableMemberAffiliateDetail": true,
      "PartnerLanguageSettingV2": [
        {
          "language": "th"
        }
      ]
    }
  }
}

404 Not Found Member not found

{
  "isSuccess": false,
  "statusCode": 404,
  "message": {
    "errorCode": "MEMBER_NOT_FOUND",
    "errorMessage": "Member not found"
  }
}

401 Unauthorized Member is disabled

{
  "isSuccess": false,
  "statusCode": 401,
  "message": {
    "errorCode": "MEMBER_DISABLED",
    "errorMessage": "Member is disabled"
  }
}

429 Too Many Requests Duplicate request detected

{
  "isSuccess": false,
  "statusCode": 429,
  "message": {
    "errorCode": "DUPLICATE_REQUEST",
    "errorMessage": "Duplicate request. Please try again after a short wait."
  }
}
GET /v2/user/profile/balance Requires: JwtAccessGuardMemberV2
Get the current credit balance and coin balance for the authenticated member.
Request

Headers:

Header Type Required Description
Authorization string Yes Bearer {accessToken}

Body: Empty

Response

200 OK Success

{
  "isSuccess": true,
  "statusCode": 200,
  "data": {
    "currentCredit": 1000.50,
    "coinCurrentCoin": 500,
    "baseCurrency": "THB",
    "convertRate": 1,
    "showLastPromotionMessage": false
  }
}

404 Not Found Member not found

{
  "isSuccess": false,
  "statusCode": 404,
  "message": {
    "errorCode": "MEMBER_NOT_FOUND",
    "errorMessage": "Member not found"
  }
}

429 Too Many Requests Duplicate request detected

{
  "isSuccess": false,
  "statusCode": 429,
  "message": {
    "errorCode": "DUPLICATE_REQUEST",
    "errorMessage": "Duplicate request. Please try again after a short wait."
  }
}
GET /v2/user/profile/changePassword/otp Requires: JwtAccessGuardMemberV2
Request an OTP (One-Time Password) to be sent to the member's mobile number for changing password. This OTP is required when changing password.
Request

Headers:

Header Type Required Description
Authorization string Yes Bearer {accessToken}

Body: Empty

Response

200 OK Success

Note: The otp field is only returned in development/staging environments. In production, the OTP is sent via SMS and not included in the response.

Development/Staging Response:

{
  "isSuccess": true,
  "statusCode": 200,
  "data": {
    "otp": "4496",
    "referCode": "7fp25p"
  }
}

Production Response:

{
  "isSuccess": true,
  "statusCode": 200,
  "data": {
    "referCode": "7fp25p"
  }
}

404 Not Found Member or Partner not found

{
  "isSuccess": false,
  "statusCode": 404,
  "message": {
    "errorCode": "MEMBER_NOT_FOUND",
    "errorMessage": "Member not found"
  }
}

403 Forbidden Partner disabled

{
  "isSuccess": false,
  "statusCode": 403,
  "message": {
    "errorCode": "UNABLE_TO_SEND_OTP",
    "errorMessage": "Unable to send OTP message [DX]"
  }
}

429 Too Many Requests Duplicate request detected

{
  "isSuccess": false,
  "statusCode": 429,
  "message": {
    "errorCode": "DUPLICATE_REQUEST",
    "errorMessage": "Duplicate request. Please try again after a short wait."
  }
}

500 Internal Server Error Unable to send OTP

{
  "isSuccess": false,
  "statusCode": 500,
  "message": {
    "errorCode": "UNABLE_TO_SEND_OTP",
    "errorMessage": "Unable to send OTP message"
  }
}
POST /v2/user/profile/changePassword Requires: JwtAccessGuardMemberV2
Change the authenticated member's password. Requires current password, new password, confirmation, and OTP code from the change password OTP request.
Request

Headers:

Header Type Required Description
Content-Type string Yes application/json
Authorization string Yes Bearer {accessToken}

Body:

Field Type Required Description
oldPassword string Yes Current password of the member
newPassword string Yes New password for the member account
confirmNewPassword string Yes Confirmation of the new password (must match newPassword)
otp string Yes OTP code received via SMS from change password OTP request
Example Request:
{
  "oldPassword": "oldPassword123",
  "newPassword": "newPassword123",
  "confirmNewPassword": "newPassword123",
  "otp": "123456"
}
Response

200 OK Success

{
  "isSuccess": true,
  "statusCode": 200,
  "data": {
    "message": "Password changed successfully"
  }
}

400 Bad Request Current password required

{
  "isSuccess": false,
  "statusCode": 400,
  "message": {
    "errorCode": "CURRENT_PASSWORD_REQUIRED",
    "errorMessage": "Please provide current password"
  }
}

400 Bad Request Current password incorrect

{
  "isSuccess": false,
  "statusCode": 400,
  "message": {
    "errorCode": "CURRENT_PASSWORD_INCORRECT",
    "errorMessage": "Please enter the current password correctly"
  }
}

400 Bad Request Password confirmation mismatch

{
  "isSuccess": false,
  "statusCode": 400,
  "message": {
    "errorCode": "PASSWORD_CONFIRMATION_MISMATCH",
    "errorMessage": "Please enter the new password confirmation correctly"
  }
}

400 Bad Request Invalid OTP

{
  "isSuccess": false,
  "statusCode": 400,
  "message": {
    "errorCode": "OTP_INVALID",
    "errorMessage": "Invalid OTP"
  }
}

410 Gone OTP expired

{
  "isSuccess": false,
  "statusCode": 410,
  "message": {
    "errorCode": "OTP_EXPIRED",
    "errorMessage": "OTP expired"
  }
}

429 Too Many Requests Duplicate request detected

{
  "isSuccess": false,
  "statusCode": 429,
  "message": {
    "errorCode": "DUPLICATE_REQUEST",
    "errorMessage": "Duplicate request. Please try again after a short wait."
  }
}

500 Internal Server Error Unable to change password

{
  "isSuccess": false,
  "statusCode": 500,
  "message": {
    "errorCode": "UNABLE_TO_CHANGE_PASSWORD",
    "errorMessage": "Unable to change password"
  }
}
POST /v2/user/profile/payment Requires: JwtAccessGuardMemberV2
Set or update the payment details (bank account information) for the authenticated member. This can only be done once - if payment details already exist, the request will fail.
Request

Headers:

Header Type Required Description
Content-Type string Yes application/json
Authorization string Yes Bearer {accessToken}

Body:

Field Type Required Description
paymentCode string Yes Bank code name (e.g., "KBANK", "SCB", "BBL")
paymentNumber string Yes Bank account number
paymentName string Yes Account holder name
Example Request:
{
  "paymentCode": "KBANK",
  "paymentNumber": "1234567890",
  "paymentName": "John Doe"
}
Response

200 OK Success

{
  "isSuccess": true,
  "statusCode": 200,
  "data": {
    "message": "Bank account registration successful"
  }
}

400 Bad Request Bank account already exists

{
  "isSuccess": false,
  "statusCode": 400,
  "message": {
    "errorCode": "BANK_ACCOUNT_ALREADY_EXISTS",
    "errorMessage": "Bank account already exists"
  }
}

404 Not Found User not found

{
  "isSuccess": false,
  "statusCode": 404,
  "message": {
    "errorCode": "USER_NOT_FOUND",
    "errorMessage": "User not found"
  }
}

429 Too Many Requests Duplicate request detected

{
  "isSuccess": false,
  "statusCode": 429,
  "message": {
    "errorCode": "DUPLICATE_REQUEST",
    "errorMessage": "Duplicate request. Please try again after a short wait."
  }
}

Member User Profile API Documentation © 2024