Python library for the Fragment.com API — purchase Telegram Stars, Premium, and top up TON Ads balance.
Project description
Fragment API
Python library for the Fragment.com API — purchase Telegram Stars, Premium, and top up TON Ads balance.
Disclaimer: This project is not affiliated with, endorsed by, or in any way officially connected with Fragment or Telegram.
Installation
pip install pyfragment
To install the latest unreleased changes from the dev branch:
pip install git+https://github.com/bohd4nx/pyfragment.git@dev
Requires Python 3.12+.
Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
seed |
str |
— | 24-word TON wallet mnemonic |
api_key |
str |
— | Tonapi key from tonconsole.com |
cookies |
dict | str |
— | Fragment session cookies |
wallet_version |
str |
"V5R1" |
"V4R2" or "V5R1" |
timeout |
float |
30.0 |
HTTP request timeout in seconds |
Credentials
Fragment cookies — log in to fragment.com, install Cookie Editor, and export these four keys: stel_ssid, stel_dt, stel_token, stel_ton_token. Pass them as a dict or as a JSON string. Refresh when you get authentication errors.
Tonapi key — generate at tonconsole.com.
Seed phrase — 24-word mnemonic from your TON wallet (Tonkeeper → Settings → Backup). Never share it.
Usage
import asyncio
from pyfragment import (
FragmentClient,
FragmentError, # base — catches everything below
UserNotFoundError, # username doesn't exist on Fragment
WalletError, # insufficient balance or misconfiguration
CookieError, # cookies are missing or expired
TransactionError, # on-chain broadcast failed
ConfigurationError, # invalid argument (months, amount, etc.)
FragmentAPIError, # unexpected Fragment API response
)
async def main() -> None:
async with FragmentClient(
seed="word1 word2 ... word24", # 24-word TON wallet mnemonic
api_key="YOUR_TONAPI_KEY", # from tonconsole.com
cookies={
"stel_ssid": "...",
"stel_dt": "...",
"stel_token": "...",
"stel_ton_token": "...",
},
) as client:
try:
# Purchase 6 months of Telegram Premium
result = await client.purchase_premium("@username", months=6)
print(f"{result.months} months of Premium successfully sent to {result.username} | tx: {result.transaction_id}")
# Purchase 500 Stars
result = await client.purchase_stars("@username", amount=500)
print(f"{result.stars} Stars successfully sent to {result.username} | tx: {result.transaction_id}")
# Top up 10 TON to Telegram balance
# wallet must hold at least amount + ~0.056 TON for gas
result = await client.topup_ton("@username", amount=10)
print(f"{result.amount} TON successfully sent to {result.username} | tx: {result.transaction_id}")
except UserNotFoundError:
print(f"User was not found on fragment.com — check the username and try again.")
except WalletError as e:
print(f"Wallet error — insufficient balance or misconfiguration: {e}")
except CookieError:
print("Authentication failed — session cookies are missing or expired. Refresh them and retry.")
except TransactionError as e:
print(f"Transaction failed to broadcast on-chain: {e}")
except ConfigurationError as e:
print(f"Invalid argument: {e}")
except FragmentAPIError as e:
print(f"Unexpected response from Fragment API: {e}")
except FragmentError as e:
# catch-all for any other pyfragment error
print(f"Unexpected error: {e}")
asyncio.run(main())
Made with ❤️ by @bohd4nx
Star ⭐ this repo if you found it useful!
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
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 pyfragment-2026.0.2.tar.gz.
File metadata
- Download URL: pyfragment-2026.0.2.tar.gz
- Upload date:
- Size: 22.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebf5066d1d0d5da9d3bb04b8dc9316a49ff867c6ebe35fefc63730b99b5287e3
|
|
| MD5 |
98189828c5550d7cd05f940ce58680ff
|
|
| BLAKE2b-256 |
51ed04443271aa47b63bc06556e2bc8ad220c153baa01d9e226c0a43cbe1cec5
|
Provenance
The following attestation bundles were made for pyfragment-2026.0.2.tar.gz:
Publisher:
publish.yml on bohd4nx/pyfragment
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyfragment-2026.0.2.tar.gz -
Subject digest:
ebf5066d1d0d5da9d3bb04b8dc9316a49ff867c6ebe35fefc63730b99b5287e3 - Sigstore transparency entry: 1149529554
- Sigstore integration time:
-
Permalink:
bohd4nx/pyfragment@7cf5ab4500bfdff82d367f2e685ac21104e5444e -
Branch / Tag:
refs/heads/master - Owner: https://github.com/bohd4nx
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7cf5ab4500bfdff82d367f2e685ac21104e5444e -
Trigger Event:
workflow_run
-
Statement type:
File details
Details for the file pyfragment-2026.0.2-py3-none-any.whl.
File metadata
- Download URL: pyfragment-2026.0.2-py3-none-any.whl
- Upload date:
- Size: 20.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
02039e1674ed19f905735ec1131fd7b8ccf8b1a978caec943f3d4f826105d0a8
|
|
| MD5 |
ad22421be6de0506cb38e2c346d32121
|
|
| BLAKE2b-256 |
95fbcff0bdbbc502342de72f6bd8fad629ddcdf4bf07aaf3cacff480e33f82b9
|
Provenance
The following attestation bundles were made for pyfragment-2026.0.2-py3-none-any.whl:
Publisher:
publish.yml on bohd4nx/pyfragment
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyfragment-2026.0.2-py3-none-any.whl -
Subject digest:
02039e1674ed19f905735ec1131fd7b8ccf8b1a978caec943f3d4f826105d0a8 - Sigstore transparency entry: 1149529635
- Sigstore integration time:
-
Permalink:
bohd4nx/pyfragment@7cf5ab4500bfdff82d367f2e685ac21104e5444e -
Branch / Tag:
refs/heads/master - Owner: https://github.com/bohd4nx
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7cf5ab4500bfdff82d367f2e685ac21104e5444e -
Trigger Event:
workflow_run
-
Statement type: