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
Where to get Auth Data
You can do it pretty simply. Go to market.tonnel.network, login to your account, then open browser console (ctrl + shift + c on windows) navigate to Application tab -> Storage -> Local Storage -> https://market.tonnel.network/ -> web-initData -> copy the value next to it
Some returns examples:
Gift example:
from tonnelmp import getGifts
print(getGifts(gift_name="toy bear", limit=1))
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() - requires auth
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() - requires auth
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() - requires auth
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() - requires auth
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
info() - requires auth
info(authData: str) -> dict
- Returns a dict object containing your balances, memo, referrer etc.
- Requires:
authData
buyGift() - requires auth
buyGift(gift_id: int, price: int | float, authData: str) -> 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()
- Requires:
gift_id, price, authData - Returns dict object with status. Either success or error.
createAuction() - requires auth
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() - requires auth
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
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
currently there are at least 5 functions missing - mintGift(), returnGift(), giftGift(), payFee(), placeBid() also willing to add multiple gift buys, creating buy orders etc.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tonnelmp-1.0.2.tar.gz.
File metadata
- Download URL: tonnelmp-1.0.2.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f2ca896bebc1ab283eac4ea78a2d3d890ec75212df14e377569c69eadab326f
|
|
| MD5 |
834c8eba6f2585a47a9cc4f71959501b
|
|
| BLAKE2b-256 |
e125275881d2a6eda8b5dcd4c14f0434596ccbb79a403fcc0c276df127c49893
|
File details
Details for the file tonnelmp-1.0.2-py3-none-any.whl.
File metadata
- Download URL: tonnelmp-1.0.2-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f10d9fa8513aaf8228731b739dafb9fc5d2f9933a40780a82142142d415de24e
|
|
| MD5 |
6cb44d717b3d3e015e7edc7c0998ad0f
|
|
| BLAKE2b-256 |
aa9ccb6586a2cbd7079f0d407c2b1f0b2a9c800e507c36c31c4b02bdaf42ceb2
|