Catalog
Catalog purchase flow:
Client Server
│ │
│── [1195] CatalogMode ───>│ body: "normal" (string, not int)
│ │ server reads MODE.equalsIgnoreCase("normal")
│<─ [1032] Categories ─────│ full catalog tree
│ │ (server sends this in response to [1195])
│ │
│── [2529] BuildersClubQueryFurniCount ──>│ body: (empty)
│ (Nitro: BUILDERS_CLUB_QUERY_FURNI_COUNT) │ Arcturus handler reads nothing;
│ (ID collision - see §45.1) │ treated as a no-op catalog index
│ │ request in this server version
│ │
│── [412] RequestCategory >│ pageId:int, offerId:int(-1), mode:string("NORMAL")
│<─ [804] CatalogCategory ─│ page contents (items, images, text)
│ │
│── [3492] BuyItem ───────>│ pageId:int, itemId:int, extraData:string(""),
│ │ count:int(1)
│ │ → check cooldown (PURCHASE_COOLDOWN)
│ │ → validate credits ≥ price
│ │ → deduct credits / seasonal currency
│ │ → add item to inventory DB
│ │
│ ┌── [869] Purchased #1 ──────────────────────────│
│ │ (empty - closes the "purchasing..." spinner; │
│ │ sent immediately regardless of item type) │
│<─┘ │
│ │
│ ┌── [3151] InventoryRefresh ──────────────────────│
│ │ (empty - tells client to reload full │
│ │ inventory; sent for most item types as a │
│ │ fallback rather than per-item updates) │
│<─┘ │
│ │
│ NOTE: [3475] UserCredits is NOT sent here by │
│ default. The client must request credits with │
│ [273] RequestUserCredits to see updated balance. │
│ Currency deduction is reflected only via │
│ [2018] UserCurrency if seasonal currency was used.│
[869] Purchased vs [3151] InventoryRefresh: The server always sends
Purchasedfirst (to close the loading UI), thenInventoryRefresh(to force a full inventory reload). This is a legacy fallback - individual per-item[104] InventoryItemUpdatesends only happen in specific paths (e.g. pet purchase). The original diagram incorrectly showed[104] InvItemUpdateand[3475] UserCreditsas standard post-purchase sends; both are conditional on item type.
C→S 1195 - RequestCatalogIndex
Nitro:
GET_CATALOG_INDEX- Mode→INDEX. Nitro frames this as fetching the catalog index. Source:RequestCatalogModeEvent,GetCatalogIndexComposer
Body:
mode: string "normal" or "BUILDERS_CLUB"
Requests the catalog index (top-level page tree) for the given mode ('normal' or 'BUILDERS_CLUB').
C→S 2529 - RequestBuildersClubItemCount
Nitro:
BUILDERS_CLUB_QUERY_FURNI_COUNT- ⚠ COLLISION: Arcturus handles this as a catalog index request (body empty; handler reads nothing). Nitro sends it to query Builders Club furniture count. See §45. Source:RequestCatalogIndexEvent,BuildersClubQueryFurniCountMessageComposer
Body: (empty)
Requests the Builders Club furniture count, or (Arcturus) a catalog index; see §45 for the collision note.
C→S 412 - RequestCatalogCategory
Nitro:
GET_CATALOG_PAGE- Request→GET. Source:RequestCatalogPageEvent,GetCatalogPageComposer
Requests the content of a specific catalog category page by ID.
Body:
categoryId: int
offerId: int (-1 if none)
C→S 2594 - CatalogSearchedItem
Nitro:
GET_PRODUCT_OFFERSource:
CatalogSearchedItemEvent,GetProductOfferComposer
| Field | Type | Notes |
|---|---|---|
| offerId | int | ID of the catalog offer to look up |
Looks up a catalog offer by offer ID and returns its page and details. Used by item search.
C→S 3492 - CatalogPurchase
Nitro:
CATALOG_PURCHASE- Buy→PURCHASE; item dropped. Source:CatalogBuyItemEvent,PurchaseFromCatalogComposer
Purchases an item from the catalog by category and item ID, with optional extra data and quantity.
Body:
categoryId: int
itemId: int
extraData: string Pet name, figure data, etc.
C→S 1411 - CatalogPurchaseGift
Nitro:
CATALOG_PURCHASE_GIFT- Buy→PURCHASE. Source:CatalogBuyItemAsGiftEvent,PurchaseFromCatalogAsGiftComposer
Purchases a catalog item as a gift for another user, with gift-wrap customisation.
Body:
categoryId: int
itemId: int
extraData: string
receiverName: string
giftMessage: string
spriteId: int Gift wrap sprite
boxId: int
ribbonId: int
C→S 418 - RequestGiftWrappings
Nitro:
GET_GIFT_WRAPPING_CONFIGSource:
RequestGiftConfigurationEvent,GetGiftWrappingConfigurationComposer
| Field | Type | Notes |
|---|---|---|
| (empty) | - | No body fields read |
Notes: Requests gift wrapping configuration (wrapper types, bow types, ribbon types). Response is
GIFT_WRAPPER_CONFIG(S→C 2234).
Requests the gift wrapping configuration (wrapper styles, box types, ribbons) for the gift purchase UI.
C→S 339 - RedeemVoucher
Nitro:
CATALOG_REDEEM_VOUCHERSource:
RedeemVoucherEvent,RedeemVoucherMessageComposer
| Field | Type | Notes |
|---|---|---|
| voucherCode | string | The voucher code string to redeem |
Submits a voucher code for redemption. Server responds with VoucherRedeemed or RedeemVoucherError.
C→S 3115 - RedeemItem
Nitro:
ITEM_EXCHANGE_REDEEMSource:
RedeemItemEvent,FurnitureExchangeComposer
| Field | Type | Notes |
|---|---|---|
| itemId | int | ID of the exchangeable furni item to redeem for credits |
Redeems an exchangeable furniture item (e.g. a credit furniture) for credits.
C→S 3374 - RedeemClothing
Nitro:
ITEM_CLOTHING_REDEEMSource:
RedeemClothingEvent,RedeemItemClothingComposer
| Field | Type | Notes |
|---|---|---|
| itemId | int | ID of the clothing box furniture item to open |
Opens a clothing box furniture item to add its clothing to the user's wardrobe.
C→S 223 - RequestBundleDiscountInfo
Nitro:
GET_BUNDLE_DISCOUNT_RULESETSource:
RequestDiscountEvent,GetBundleDiscountRulesetComposer
| Field | Type | Notes |
|---|---|---|
| (empty) | - | No body fields read |
Notes: Requests the bundle discount configuration. Response is
BUNDLE_DISCOUNT_RULESET(S→C 2347).
Requests the bundle discount ruleset used to calculate multi-item purchase discounts.
C→S 3285 - RequestClubOffers
Nitro:
GET_CLUB_OFFERSSource:
RequestClubDataEvent,GetClubOffersMessageComposer
| Field | Type | Notes |
|---|---|---|
| windowId | int | Catalog window context ID |
Notes: Response is
CLUB_OFFERS(S→C 2405) viaClubOffers.
Requests the current Habbo Club subscription offers for the catalog.
C→S 3407 - CatalogPurchaseClub
Nitro:
PURCHASE_VIP_MEMBERSHIP_EXTENSIONSource:
CatalogBuyClubDiscountEvent,PurchaseVipMembershipExtensionComposer
| Field | Type | Notes |
|---|---|---|
| (empty) | - | No body fields read |
Purchases a VIP Club membership extension via the catalog.
C→S 2462 - RequestClubDiscount
Nitro:
GET_HABBO_CLUB_EXTEND_OFFERSource:
CatalogRequestClubDiscountEvent,GetHabboClubExtendOfferMessageComposer
| Field | Type | Notes |
|---|---|---|
| (empty) | - | No body fields read |
Requests the Habbo Club extend offer details (price and duration options).
C→S 487 - RequestClubGifts
Nitro:
GET_CLUB_GIFT_INFOSource:
RequestClubGiftsEvent,GetClubGiftInfo
| Field | Type | Notes |
|---|---|---|
| (empty) | - | No body fields read |
Notes: Requests info about available HC gifts. Response is
CLUB_GIFT_INFO(S→C 619).
Requests the available Habbo Club gift selection info.
C→S 2276 - CatalogSelectClubGift
Nitro:
CATALOG_SELECT_VIP_GIFTSource:
CatalogSelectClubGiftEvent,SelectClubGiftComposer
| Field | Type | Notes |
|---|---|---|
| itemName | string | Internal name of the selected HC gift item |
Selects a specific item as the user's Habbo Club gift reward.
C→S 869 - RequestClubCenter
Nitro:
SCR_GET_KICKBACK_INFOSource:
RequestClubCenterEvent,ScrGetKickbackInfoMessageComposer
| Field | Type | Notes |
|---|---|---|
| (empty) | - | No body fields read |
Notes: Requests the Habbo Club Kickback (Credits Centre) data. Response is
SCR_SEND_KICKBACK_INFO(S→C 3277).
Requests Habbo Club Kickback (Credits Centre) data for the Club Center page.
C→S 2487 - RequestTargetOffer (alias)
Nitro:
GET_TARGETED_OFFERSource:GetTargetedOfferComposer
Requests the current targeted/personalised offer from the server. No parameters.
Body: (empty)
Requests the current targeted offer from the server. No parameters.
C→S 1826 - PurchaseTargetedOffer
Nitro:
PURCHASE_TARGETED_OFFERSource:
PurchaseTargetOfferEvent,PurchaseTargetedOfferComposer
| Field | Type | Notes |
|---|---|---|
| targetedOfferId | int | ID of the targeted offer to purchase |
| amount | int | Quantity to purchase |
Purchases a targeted (personalised) offer from the shop.
C→S 2041 - SetTargetedOfferState
Nitro:
SET_TARGETTED_OFFER_STATESource:
TargetOfferStateEvent,SetTargetedOfferStateComposer
| Field | Type | Notes |
|---|---|---|
| targetedOfferId | int | ID of the targeted offer |
| state | int | New state to set |
Updates the state of a targeted offer (e.g. mark as viewed or dismissed).
C→S 596 - GetNextTargetedOffer
Nitro:
GET_NEXT_TARGETED_OFFERNote: No Arcturus handler - Nitro only. Source:GetNextTargetedOfferComposer
| Field | Type | Notes |
|---|---|---|
| k | int | Current offer ID (server advances to next from this point) |
Requests the next targeted offer after the current one. Nitro-only.
C→S 462 - BuildersClubPlaceWallItem
Nitro:
BUILDERS_CLUB_PLACE_WALL_ITEMNote: No Arcturus handler - Nitro only. Source:BuildersClubPlaceWallItemMessageComposer
| Field | Type | Notes |
|---|---|---|
| k | int | Furniture item ID (from inventory) |
| _arg_2 | int | Room object ID |
| _arg_3 | string | Wall position string (e.g. :w=1,2 l=3,4 r) |
| _arg_4 | string | Extra data / state string |
Places a wall furniture item using Builders Club mode (bypasses buy step). Nitro-only.
C→S 1051 - BuildersClubPlaceRoomItem
Nitro:
BUILDERS_CLUB_PLACE_ROOM_ITEMNote: No Arcturus handler - Nitro only. Source:BuildersClubPlaceRoomItemMessageComposer
| Field | Type | Notes |
|---|---|---|
| k | int | Furniture item ID (from inventory) |
| _arg_2 | int | Room object ID |
| _arg_3 | string | State / extra data string |
| _arg_4 | int | X tile position |
| _arg_5 | int | Y tile position |
| _arg_6 | int | Rotation (0–7) |
Places a floor furniture item using Builders Club mode. Nitro-only.
C→S 801 - GetDirectClubBuyAvailable
Nitro:
GET_DIRECT_CLUB_BUY_AVAILABLENote: No Arcturus handler - Nitro only. Source:GetDirectClubBuyAvailableComposer
| Field | Type | Notes |
|---|---|---|
| days | int | Number of days of Club membership to query availability for |
Queries whether a direct Club purchase is available for a given number of days. Nitro-only.
C→S 603 - GetHabboBasicMembershipExtendOffer
Nitro:
GET_HABBO_BASIC_MEMBERSHIP_EXTEND_OFFERNote: No Arcturus handler - Nitro only. Source:GetHabboBasicMembershipExtendOfferComposer
Requests the Habbo Basic Club membership extend offer. Nitro-only.
Body: (empty)
Requests the Habbo Basic Club membership extend offer. No parameters.
C→S 742 - GetCatalogPageExpiration
Nitro:
GET_CATALOG_PAGE_EXPIRATIONNote: No Arcturus handler - Nitro only. Source:GetCatalogPageExpirationComposer
| Field | Type | Notes |
|---|---|---|
| k | string | Catalog page identifier to query expiration for |
Requests the expiration date for a specific catalog page. Nitro-only.
C→S 1347 - GetIsOfferGiftable
Nitro:
GET_IS_OFFER_GIFTABLENote: No Arcturus handler - Nitro only. Source:GetIsOfferGiftableComposer
| Field | Type | Notes |
|---|---|---|
| k | int | Catalog offer ID to check giftability for |
Checks whether a specific catalog offer can be sent as a gift. Nitro-only.
C→S 2150 - MarkCatalogNewAdditionsPageOpened
Nitro:
MARK_CATALOG_NEW_ADDITIONS_PAGE_OPENEDNote: No Arcturus handler - Nitro only. Source:MarkCatalogNewAdditionsPageOpenedComposer
Notifies the server that the client opened the 'New Additions' catalog page. Nitro-only.
Body: (empty)
Notifies the server that the client has opened the "New Additions" catalog page. No parameters.
C→S 2638 - WelcomeOpenGift
Nitro:
WELCOME_OPEN_GIFTNote: No Arcturus handler - Nitro only. Source:OpenWelcomeGiftComposer
| Field | Type | Notes |
|---|---|---|
| furniId | int | Furniture item ID of the welcome gift to open |
Opens a welcome gift furniture item. Nitro-only.
C→S 2735 - PurchaseBasicMembershipExtension
Nitro:
PURCHASE_BASIC_MEMBERSHIP_EXTENSIONNote: No Arcturus handler - Nitro only. Source:PurchaseBasicMembershipExtensionComposer
| Field | Type | Notes |
|---|---|---|
| k | int | Basic Club membership extension offer ID to purchase |
Purchases a Basic Club membership extension. Nitro-only.
C→S 3135 - GetCatalogPageWithEarliestExp
Nitro:
GET_CATALOG_PAGE_WITH_EARLIEST_EXPNote: No Arcturus handler - Nitro only. Source:GetCatalogPageWithEarliestExpiryComposer
Requests the catalog page containing the earliest-expiring limited offer. Nitro-only.
Body: (empty)
Requests the catalog page with the earliest-expiring limited offer. No parameters.
C→S 3483 - ShopTargetedOfferViewed
Nitro:
SHOP_TARGETED_OFFER_VIEWEDNote: No Arcturus handler - Nitro only. Source:ShopTargetedOfferViewedComposer
| Field | Type | Notes |
|---|---|---|
| k | int | Targeted offer ID that was viewed |
| _arg_2 | int | Unknown int (view context / placement) |
Notifies the server that the user viewed a targeted offer in the shop. Nitro-only.
Reports that the user has viewed a targeted offer; carries the offer ID and view context. Nitro-only.
S→C 3828 - BuildersClubItemCount
Source:
CatalogModeComposer,BuildersClubFurniCountMessageEvent
Delivers the user's current Builders Club furniture quota.
Body: (empty)
S→C 1032 - CatalogCategories
Source:
CatalogPagesListComposer,CatalogPagesListEvent
Delivers the full catalog category tree, including page names, icons, and child page structure.
Body:
visible: boolean
icon: int
categoryId: int
name: string
description: string
countItems: int
[countItems]:
itemCatalogId: int
countChildPages: int
[countChildPages]:
(recursive same structure)
newAdditionsAvailable: boolean
S→C 804 - CatalogCategory
Source:
CatalogPageComposer,CatalogPageMessageEvent
Delivers the full content of a catalog page, including images, descriptions, and purchasable offer items.
Body:
categoryId: int
catalogType: string
templateName: string
imageCount: int
[imageCount]:
image: string
descriptionLinesCount: int
[descriptionLinesCount]:
description: string
itemCount: int
[itemCount CatalogItem]:
itemCatalogId: int
name: string
isRentable: boolean
price: int
altPrice: int
altCurrency: int
isGiftable: boolean
productsCount: int
[productsCount]:
productType: string "s"=floor, "i"=wall
*[if type == "b"]: # badge
extraParam: string
*[else]
itemClassId: int
extraParam: string
productCount: int
isLimited: boolean
*[if limited]:
limitedTotal: int
limitedLeft: int
clubLevel: boolean
bundlePurchaseAllowed: boolean
isPet: boolean
previewImage: string
offerId: int (-1 if none)
acceptSeasonCurrency: boolean
itemCount: int
[itemCount HighlightedItem]:
position: int
name: string
image: string
itemType: string "s"=single, "i"=item
itemsCount: int
[itemsCount]:
type: string
spriteId: int
count: int
isLimited: boolean
*[if limited]: limitedSells:int, limitedStack:int
creditsPrice: int
altPrice: int
altCurrency: int
isPackage: boolean
S→C 1866 - CatalogUpdated
Nitro:
CATALOG_PUBLISHEDSource:
CatalogUpdatedComposer,CatalogPublishedMessageEvent
| Field | Type | Notes |
|---|---|---|
| unknown | boolean | Always false |
Notes: Broadcast to all users when the catalog is reloaded server-side.
Broadcast when the catalog is reloaded server-side, prompting clients to refresh.
S→C 869 - Purchased
Nitro:
CATALOG_PURCHASE_OKSource:PurchaseOKComposer,PurchaseOKMessageEvent
Confirms a successful catalog purchase. Contains the full offer details.
| Field | Type | Notes |
|---|---|---|
| offerId | int | Catalog offer ID purchased |
| localizationId | string | Localization key for the offer |
| rent | boolean | Whether this was a rental |
| priceCredits | int | Price in credits |
| priceActivityPoints | int | Price in activity points |
| priceActivityPointsType | int | Activity point currency type |
| giftable | boolean | Whether this offer can be gifted |
| productCount | int | Number of products |
| [productCount × product] | CatalogProduct | Product data |
| clubLevel | int | HC level required |
| bundlePurchaseAllowed | boolean | Whether bundle purchase is allowed |
Confirms a successful catalog purchase, returning the full offer details.
S→C 1404 - PurchaseFailed
Source:
AlertPurchaseFailedComposer,PurchaseErrorMessageEvent
Notifies the client that a catalog purchase failed, with a reason code (insufficient credits, gift error, etc.).
Body: (empty)
S→C 3770 - PurchaseUnavailable
Nitro:
CATALOG_PURCHASE_NOT_ALLOWEDSource:
AlertPurchaseUnavailableComposer,PurchaseNotAllowedMessageEvent
| Field | Type | Notes |
|---|---|---|
| (empty) | - | No body fields |
Signals that the purchase is not allowed (e.g. feature disabled). Empty body.
S→C 3914 - PurchaseFailedBalance
Nitro:
NOT_ENOUGH_BALANCESource:
NotEnoughPointsTypeComposer,NotEnoughBalanceMessageEvent
| Field | Type | Notes |
|---|---|---|
| isCredits | boolean | True if the shortfall is in credits |
| isPixels | boolean | True if the shortfall is in pixels/duckets |
| pointsType | int | Currency type ID for other activity point currencies |
Signals that the purchase failed due to insufficient credits or activity points.
S→C 377 - LimitedSoldOut
Nitro:
LIMITED_SOLD_OUTSource:
AlertLimitedSoldOutComposer,LimitedEditionSoldOutEvent
| Field | Type | Notes |
|---|---|---|
| (empty) | - | No body fields |
Notes: Sent when a limited-edition item sells out. Empty body - the client already knows the context from the purchase attempt.
Signals that a limited-edition catalog item just sold out. Empty body.
S→C 56 - PresentItemOpened (gift variant)
Nitro:
GIFT_OPENEDSource:
PresentItemOpenedComposer,PresentOpenedMessageEvent
| Field | Type | Notes |
|---|---|---|
| itemType | string | Item type code ("s" for floor, "i" for wall) |
| spriteId | int | Item's sprite ID |
| itemName | string | Item's internal name |
| itemId | int | New item's inventory ID |
| itemType2 | string | Type code again (repeated) |
| unknown | boolean | Unknown flag |
| text | string | Gift message text |
Delivers the contents of an opened gift box, including item details and the sender's message.
S→C 2234 - GiftConfiguration
Nitro:
GIFT_WRAPPER_CONFIGSource:
GiftConfigurationComposer,GiftWrappingConfigurationEvent
| Field | Type | Notes |
|---|---|---|
| giftsEnabled | boolean | Always true in Arcturus |
| specialPrice | int | Credits cost for gift wrapping extras |
| wrapperCount | int | Number of wrapper style IDs |
| wrapperIds[] | int[] | Wrapper item IDs |
| boxCount | int | Number of box types |
| boxTypes[] | int[] | Box type IDs |
| ribbonCount | int | Number of ribbon types |
| ribbonTypes[] | int[] | Ribbon type IDs |
| giftFurniCount | int | Number of giftable furniture items |
| giftFurni[] | int[] | Furni item IDs |
Delivers gift wrapping configuration (wrapper styles, box types, ribbons, giftable furniture).
S→C 1517 - GiftRecipientNotFound
Nitro:
GIFT_RECEIVER_NOT_FOUNDSource:
GiftReceiverNotFoundComposer,GiftReceiverNotFoundEvent
| Field | Type | Notes |
|---|---|---|
| (empty) | - | No body fields |
Signals that the specified gift recipient username was not found. Empty body.
S→C 3336 - VoucherRedeemed
Nitro:
REDEEM_VOUCHER_OKSource:
RedeemVoucherOKComposer,VoucherRedeemOkMessageEvent
| Field | Type | Notes |
|---|---|---|
| unknown1 | string | Always empty |
| unknown2 | string | Always empty |
Confirms successful voucher redemption. Body contains two empty strings.
S→C 714 - RedeemVoucherError
Nitro:
REDEEM_VOUCHER_ERRORSource:
RedeemVoucherErrorComposer,VoucherRedeemErrorMessageEvent
| Field | Type | Notes |
|---|---|---|
| errorCode | string | Error code (sent as string, e.g. "INVALID_CODE") |
Notes: Error code is sent as a string - discrepancy from most error responses which use int.
Signals that voucher redemption failed, returning an error code string.
S→C 2347 - BundleDiscountInfo
Nitro:
BUNDLE_DISCOUNT_RULESETSource:
DiscountComposer,BundleDiscountRulesetMessageEvent
| Field | Type | Notes |
|---|---|---|
| maxAllowedItems | int | Maximum items before discount applies |
| discountBatchSize | int | Items per discount batch |
| discountAmountPerBatch | int | Discount amount per batch |
| minDiscountsForBonus | int | Minimum discount batches for bonus |
| thresholdCount | int | Number of additional discount thresholds |
| thresholds[] | int[] | Threshold values |
Delivers the bundle discount ruleset for multi-item purchase discount calculations.
S→C 2405 - ClubOffers
Nitro:
CLUB_OFFERSSource:
ClubDataComposer,HabboClubOffersMessageEvent
| Field | Type | Notes |
|---|---|---|
| offerCount | int | Number of HC subscription offers |
| windowId | int | Catalog window context ID |
Notes: The full offer data is written by iterating
ClubOfferobjects - the structure per offer is complex (type, duration, price, etc.). Nitro parses the full offer list.
Delivers the list of available Habbo Club subscription offers.
S→C 3277 - ClubCenterData
Nitro:
SCR_SEND_KICKBACK_INFOSource:
ClubCenterDataComposer,ScrSendKickbackInfoMessageEvent
| Field | Type | Notes |
|---|---|---|
| currentHcStreak | int | Current consecutive HC days |
| firstSubDate | string | First subscription date (dd-mm-yyyy) |
| totalCreditsMissed | int | Unused - always 0 |
| totalCreditsRewarded | int | Unused - always 0 |
| totalCreditsSpent | int | Total credits spent as HC member |
| creditRewardStreakBonus | int | Extra credits from streak bonus |
| creditRewardMonthlySpent | int | Credits from monthly spend reward |
| timeUntilPayday | int | Minutes until next kickback payday |
Delivers Habbo Club Kickback (Credits Centre) data for the current user.
S→C 619 - ClubGifts
Nitro:
CLUB_GIFT_INFOSource:
ClubGiftsComposer,ClubGiftInfoEvent
| Field | Type | Notes |
|---|---|---|
| daysTillNextGift | int | Days until next HC gift is available |
| availableGifts | int | Number of gifts currently selectable |
| itemCount | int | Total items in the gift catalogue |
| items[] | repeated | Per item: id:int, clubOnly:boolean, daysRequired:int, canSelect:boolean |
| unknown1 | int | Always 0 |
| unknown2 | int | Always 0 |
Delivers the list of available Habbo Club gift choices and how many gifts the user can still claim.
S→C 119 - TargetedOffer
Nitro:
TARGET_OFFERSource:TargetedOfferComposer,TargetedOfferEvent
Delivers a targeted (personalised) offer from the catalog. Body is parsed by
TargetedOfferData.
| Field | Type | Notes |
|---|---|---|
| id | int | Targeted offer ID |
| identifier | string | Offer identifier string |
| product | string | Product code |
| priceInCredits | int | Price in credits |
| priceInActivityPoints | int | Price in activity points |
| activityPointType | int | Activity point currency type |
| purchaseLimit | int | Maximum number of times it can be purchased |
| expirationTime | int | Unix timestamp when offer expires |
| title | string | Offer title |
| description | string | Offer description |
| imageUrl | string | Offer image URL |
| extraData | string | Extra data string |
Delivers a personalised targeted offer for display in the shop.
S→C 3331 - PetBreeds
Nitro:
CATALOG_RECEIVE_PET_BREEDSSource:
PetBreedsComposer,SellablePetPalettesMessageEvent
| Field | Type | Notes |
|---|---|---|
| petName | string | Pet type name |
| breedCount | int | Number of available breeds |
| breeds[] | repeated | Per breed: race:int, colorOne:int, colorTwo:int, hasColorOne:boolean, hasColorTwo:boolean |
Delivers the list of available pet breeds and palette colours for a given pet type.
S→C 1503 - PetNameError
Nitro:
CATALOG_APPROVE_NAME_RESULTSource:
PetNameErrorComposer,ApproveNameMessageEvent
| Field | Type | Notes |
|---|---|---|
| type | int | Result type (0 = ok, other = error code) |
| value | string | The validated name or error description |
Delivers the result of a pet name validation check. Error code 0 = valid.
S→C 195 - DirectSmsClubBuy
Nitro:
DIRECT_SMS_CLUB_BUYNote: No Arcturus composer - Nitro only. Source:DirectSMSClubBuyAvailableMessageEvent
(no Arcturus composer)
| Field | Type | Notes |
|---|---|---|
| pricePointUrl | string | SMS payment URL; empty string = not available |
| market | string | Market/carrier identifier |
| lengthInDays | int | Club subscription length in days |
Delivers direct SMS Club purchase options. Nitro-only; no Arcturus composer.
S→C 659 - ClubGiftSelected
Nitro:
CLUB_GIFT_SELECTEDNote: No Arcturus composer - Nitro only. Source:ClubGiftReceivedComposer,ClubGiftSelectedEvent
(no Arcturus composer)
Confirms which club gift the user selected and what products it contains.
| Field | Type | Notes |
|---|---|---|
| productCode | string | Product code of the selected gift |
| count | int | Number of product entries |
| [count × product] | CatalogProduct | Product data (same structure as catalog page products) |
Confirms that the user's Habbo Club gift selection was accepted.
S→C 761 - IsOfferGiftable
Nitro:
IS_OFFER_GIFTABLENote: No Arcturus composer - Nitro only. Source:IsOfferGiftableMessageEvent
(no Arcturus composer)
| Field | Type | Notes |
|---|---|---|
| offerId | int | Catalog offer ID being checked |
| isGiftable | boolean | Whether the offer can be sent as a gift |
Delivers whether a specific catalog offer can be gifted to another user.
S→C 1237 - TargetOfferNotFound
Nitro:
TARGET_OFFER_NOT_FOUNDNote: No Arcturus composer - Nitro only. Source:HabboMallComposer,TargetedOfferNotFoundEvent
(no Arcturus composer)
Sent when a targeted offer cannot be found.
Notifies the client that a requested targeted offer could not be found. Nitro-only.
Body: (empty)
S→C 1452 - BuildersClubExpired
Nitro:
BUILDERS_CLUB_EXPIREDNote: No Arcturus composer - Nitro only. Source:BuildersClubExpiredComposer,BuildersClubSubscriptionStatusMessageEvent
(no Arcturus composer)
Sent when the user's Builders Club subscription has expired.
Notifies the client that the user's Builders Club subscription has expired. Nitro-only.
Body: (empty)
S→C 1533 - BonusRareInfo
Nitro:
BONUS_RARE_INFONote: No Arcturus composer - Nitro only. Source:BonusRareComposer,BonusRareInfoMessageEvent
(no Arcturus composer)
| Field | Type | Notes |
|---|---|---|
| productType | string | Product type string |
| productClassId | int | Furniture class ID |
| totalCoinsForBonus | int | Total coins needed to unlock the bonus rare |
| coinsStillRequiredToBuy | int | Coins the player still needs to spend |
Delivers info about the current Bonus Rare (a random rare item awarded for purchases during a period).
S→C 2293 - WelcomeGiftChangeEmailResult
Nitro:
WELCOME_GIFT_CHANGE_EMAIL_RESULTNote: No Arcturus composer - Nitro only. Source:WelcomeGiftErrorComposer,WelcomeGiftChangeEmailResultEvent
(no Arcturus composer)
| Field | Type | Notes |
|---|---|---|
| result | int | Result code (0 = success) |
Delivers the result of the welcome gift email change request.
S→C 2515 - CatalogEarliestExpiry
Nitro:
CATALOG_EARLIEST_EXPIRYNote: No Arcturus composer - Nitro only. Source:HotelViewExpiringCatalogPageCommposer,CatalogPageWithEarliestExpiryMessageEvent
(no Arcturus composer)
Delivers the catalog page with the earliest expiration date.
| Field | Type | Notes |
|---|---|---|
| pageId | int | Catalog page ID |
| offerId | int | Offer ID |
| expirationDate | string | Expiration date string |
Delivers the catalog page that contains the next expiring limited offer.
S→C 2668 - CatalogPageExpiration
Nitro:
CATALOG_PAGE_EXPIRATIONNote: No Arcturus composer - Nitro only. Source:CatalogPageExpirationEvent
| Field | Type | Notes |
|---|---|---|
| pageId | int | Catalog page ID |
| pageName | string | Catalog page name |
| secondsToExpiry | int | Seconds until the page/offer expires |
| image | string | Expiry image URL |
Delivers the expiration date/time for a specific catalog page.
S→C 2707 - WelcomeGiftStatus
Nitro:
WELCOME_GIFT_STATUSNote: No Arcturus composer - Nitro only. Source:WelcomeGiftComposer,WelcomeGiftStatusEvent
| Field | Type | Notes |
|---|---|---|
| string | Account email address | |
| isVerified | boolean | Whether the email is verified |
| allowChange | boolean | Whether the user may change their email |
| furniId | int | Welcome gift furniture item ID (-1 if none) |
| requestedByUser | boolean | Whether the status was requested by the user |
Delivers whether the user has a pending welcome gift to claim.
S→C 3388 - ProductOffer
Nitro:
PRODUCT_OFFERNote: No Arcturus composer - Nitro only. Source:CatalogSearchResultComposer,ProductOfferEvent
(no Arcturus composer)
Delivers a product offer from the catalog. Body is parsed by
ProductOfferEvent- same structure as a catalog page offer.
Delivers a single product offer from the catalog, typically in response to a deep-link or search. Nitro-only.
Body: (empty)
S→C 3964 - ClubExtendedOffer
Nitro:
CLUB_EXTENDED_OFFERNote: No Arcturus composer - Nitro only. Source:ExtendClubMessageComposer,HabboClubExtendOfferMessageEvent
(no Arcturus composer)
Delivers a Habbo Club extended offer. Body is parsed by
HabboClubExtendOfferMessageParser.
Delivers a Habbo Club extended offer for the extend-membership flow. Nitro-only; no Arcturus composer - body is parsed by HabboClubExtendOfferMessageParser.
Body: (empty)