Skip to main content

A Python Module for interacting with Tonnel Marketplace API

Project description

Tonnel Marketplace API

This is a simple module that will help you interacting with Tonnel Marketplace API. Tested almost every API myself so you dont have to blindly test it.

Installing

pip install tonnelmp

[IMPORTANT] Where to get Auth Data

Most of the functions require your tonnel authentication data, so please don't skip this section of documentation.

You can get it pretty easily. Go to market.tonnel.network, login to your account, then open browser console (ctrl + shift + c on windows)

Then navigate to Application tab -> Storage -> Local Storage -> https://market.tonnel.network/ -> web-initData -> copy the value next to it entirely

Change log

Version 1.0.3

  • Fixed wtf module not importing correctly

Version 1.0.4

  • Improved buyGift() function. Now you can pass receiver: int arg to send the gift to someone else by telegram user id. Also added anonymously: bool, showPrice: bool args. Defaults for both - False.
  • Added returnGift() function.
  • Added withdraw() function.
  • Added mintGift() function.
  • Added placeBid() function.
  • Added switchTransfer() function.
  • Updated documentation

Version 1.0.4.1

  • Minor change - replaces response.text with status code on exception due to too many lines in it (trashes out logging).

Some returns examples:

Gift example:

from tonnelmp import getGifts
print(getGifts(gift_name="toy bear", limit=1))

limit will be the maximum len of the list.

Output (list object with dicts):

[
	{
	'gift_num': 35531,
	'customEmojiId': '5289634279544876303',
	'gift_id': 4840785,
	'name': 'Toy Bear',
	'model': 'Zebra (1.5%)',
	'asset': 'TON',
	'symbol': 'Rabbit (0.2%)',
	'backdrop': 'Burgundy (2%)',
	'availabilityIssued': 0,
	'availabilityTotal': 0,
	'backdropData': {},
	'message_in_channel': 0,
	'price': 12.9,
	'status': 'forsale',
	'limited': False,
	'auction': None,
	'export_at': '2025-05-28T12:25:01.000Z'
	}
]

gift_num - telegram gift number

customEmojiId - telegram custom emoji id

gift_id - tonnel gift id

name - gift name

model - gift model

asset - asset name

symbol - symbol name

backdrop - backdrop name

price - price in TON without 10% fee.

status - status of the gift - forsale / auction (not sure about auction sorry)

auction - either None or auction data in dict

export_at - time of when the gift has been placed for sale / auction

Balances example:

from tonnelmp import info
print(info(authData="your_auth_data"))

Output:

{
	'status': 'success',
	'balance': 123.123123123, # your ton balance
	'memo': ' ... ', # your memo
	'transferGift': False, # false = internal purchase
	'usdtBalance': 123.123123123, # your usdt balance
	'tonnelBalance': 123.123123123, # your tonnel balance
	'referrer': 123123123, # your referrer telegram id
	'photo_url': ' ... ', # your telegram pfp url
	'name': ' ... ' # your telegram name
}

Gift Class

Can wrap gift dict

Attributes

  • .gift_num
  • .gift_id
  • .name
  • .model
  • .backdrop
  • .symbol
  • .price
  • .status
  • .asset
  • .auction

.. and more

Example

from tonnelmp import Gift, getGifts()
gift = Gift(getGifts(limit=1, sort="latest")[0])
print(gift.name, gift.gift_num, gift.gift_id, gift.price)

Output:

Winter Wreath 23548 4848019 9.8

Functions:

getGifts()

getGifts(gift_name: str, model: str, backdrop: str, symbol: str, gift_num: int, page: int, limit: int, sort: str, price_range: list | int, asset: str, user_auth: str) -> list
  • Returns a list with dict objects containing gifts details.
  • Available options: sort (Default="price_asc"): "price_asc", "price_desc", "latest", "mint_time", "rarity", "gift_id_asc", "gift_id_desc" asset (Default="TON"): "TON", "USDT", "TONNEL"
  • limit arg maximum = 30 (as far as i know)

getAuctions()

getAuctions(gift_name: str, model: str, backdrop: str, symbol: str, gift_num: int, page: int, limit: int, sort: str, price_range: list | int=0, asset: str, user_auth: str="") -> list
  • Get auctions with optional filters. Doesnt require anything at all.
  • Available options: sort: "ending_soon", "latest", "highest_bid", "latest_bid" limit maximum = 30 asset: "TON", "USDT", "TONNEL"

myGifts()

myGifts(listed: bool, page: int, limit: int, user_auth: str) -> list:
  • Returns a list with dict objects containing gifts details.
  • Required: user_auth
  • Available options: listed (Default=True): True / False. If False, will return unlisted gifts.

listForSale()

listForSale(gift_id: int, price: int | float, user_auth: str) -> dict
  • List for sale a gift with known gift_id (tonnel gift_id, not telegram gift_num; can be retrieved from myGifts()/getGifts())
  • Returns dict object with status. Either success or error.
  • Required: user_auth, gift_id, price

cancelSale()

cancelSale(gift_id: int,user_auth: str) -> dict
  • Cancel sale of the gift with known gift_id
  • Returns dict object with status. Either success or error.
  • Required: user_auth, gift_id

saleHistory()

idk why but this function requires auth :D you can try putting empty authData, maybe i've done something wrong

saleHistory(authData: str, page: int, limit: int, type: str, gift_name: str, model: str, backdrop: str, sort: str) -> list
  • Returns a list with dict objects containing gifts details.
  • Required: authData
  • Available options: sort (Default="latest"): "latest", "price_asc", "price_desc", "gift_id_asc", "gift_id_desc" type (Default="ALL"): "ALL", "SALE", "INTERNAL_SALE", "BID"
  • limit maximum = 50

withdraw()

withdraw(wallet: str, authData: str, amount: int | float, asset: str = "TON") -> dict:
  • Withdraw amount of asset to specified TON wallet address.
  • Requires: wallet, authData, amount
  • Options: asset - "TON", "USDT", "TONNEL"

returnGift()

returnGift(gift_id: int, authData: str) -> dict:

Not tested yet

  • Return gift from Tonnel Marketplace to your Telegram account.
  • Requires: gift_id, authData

mintGift()

mintGift(authData: str, wallet: str, gift_id: int) -> dict:

Not tested yet

  • Mints gift to specified TON wallet address.
  • Minting cost 0.3 TON
  • Requires: authData, wallet, gift_id

switchTransfer()

switchTransfer(authData: str, transferGift: bool) -> dict:
  • Switches internal transfer mode on your Tonnel Marketplace account.
  • Requires: authData

info()

info(authData: str) -> dict
  • Returns a dict object containing your balances, memo, referrer etc.
  • Requires: authData

buyGift()

buyGift(gift_id: int, price: int | float, authData: str, receiver: int, anonymously: bool = False, showPrice: bool = False) -> dict
  • Buy a gift with known gift_id and price in TON. // price - raw price (you dont have to multiply it by 1.1). both params can be retrieved from getGifts()
  • [Not tested yet] Optional: receiver - Telegram user id of the receiver (if you want to send the gift to someone else); anonymously - bool value, wether to show user who bought the gift or not; showPrice - bool value, wether to show user the price or not
  • Requires: gift_id, price, authData
  • Returns dict object with status. Either success or error.

createAuction()

createAuction(gift_id: int, starting_bid: int | float, authData: str, duration: int) -> dict
  • Create auction for the gift with known gift_id.
  • Requires: gift_id, starting_bid, authData, duration
  • Returns dict object with status. Either success or error.
  • Available options: duration (Default=1): Duration in hours. Can be one of these options - [1, 2, 3, 6, 12, 24]

cancelAuction()

cancelAuction(auction_id: str, authData: str) -> dict
  • Cancel auction with known auction_id (can be retrieved from getAuctions() or mygifts())
  • Requires: auction_id, authData
  • Returns dict object with status. Either success or error

placeBid()

placeBid(auction_id: str, amount: int|float, authData: str, asset: str="TON") -> dict:

Not tested yet

  • Place a bid on known auction_id
  • Not recommended to change asset value (i dont think its possible to bid in USDT/TONNEL)
  • Requires: auction_id, amount, authData

Examples

Getting gift floor for Toy Bear with model Wizard:

from tonnelmp import Gift, getGifts
gift = Gift(getGifts(gift_name="toy bear", model="wizard", limit=1, sort="price_asc")[0]) 
print(gift.price) # this will print raw price (without 10% fee), remember that

Buying gift

from tonnelmp import buyGift
myAuthData = " ... your auth data here ... "
print(buyGift(gift_id=123123, price=123.12, authData=myAuthData)) # will print status. This will buy gift NOT FOR 123.12 TON. Tonnel adds up 10%, so the final price will be 123.12 * 1.1, again, remember that.

Listing gift for sale

from tonnelmp import listForSale
myAuthData = " ....... "
print(listForSale(gift_id=123, price=123, user_auth=myAuthData)

TODO + info

will add functions for managing orders soon; also need unlockListing() function

if you use this module please send your feedback to my telegram

donations (will buy some tonnel whiskey thank you):

  • ton: UQC9f1mTuu2hKuBP_0soC5RVkq2mLp8uiPBBhn69vadU7h8W

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tonnelmp-1.0.4.1.tar.gz (13.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tonnelmp-1.0.4.1-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file tonnelmp-1.0.4.1.tar.gz.

File metadata

  • Download URL: tonnelmp-1.0.4.1.tar.gz
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.0

File hashes

Hashes for tonnelmp-1.0.4.1.tar.gz
Algorithm Hash digest
SHA256 42d0c812b18b24b85d6519b2809b1e255b344c217a08845e87299fc3670aab0b
MD5 b307c21a723d58c080f45c95b7c60fda
BLAKE2b-256 0927ef960935b602c8be9c50d4028829b09bef0e33a4f8cd46fec406ffadbe5d

See more details on using hashes here.

File details

Details for the file tonnelmp-1.0.4.1-py3-none-any.whl.

File metadata

  • Download URL: tonnelmp-1.0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.0

File hashes

Hashes for tonnelmp-1.0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 360657f7533424f997070b0935082e1a95e2d7e5f1b757608e5443777c69a6ed
MD5 50d964764c5765c87a74c534cc015807
BLAKE2b-256 8471835b801c1645ac51725d4f210259342f17f0c1ad1e3a99566472e62182e5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page