Products and mall
Partners create products and plans in the console under Products, or via the API. Each SKU has a stable public_id. The Mini App opens with startapp=mp_{public_id}.
The TonRamp mall only lists SKUs the partner opted in (listed=true), TonRamp approved, inside the listing window, with stock.
Authentication
Section titled “Authentication”GET/POST/PATCH /v1/partner/products and /v2/partner/products accept the console JWT or an API key tonr_… in Authorization: Bearer.
POST /v2/partner/products
Section titled “POST /v2/partner/products”Creates the SKU. listed defaults to false. Asking for the mall does not approve it.
curl -X POST https://api.tonramp.io/v2/partner/products \ -H "Authorization: Bearer tonr_YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "title": "Pack 100", "amount": 10, "listed": true, "category": "games", "slug": "gold-pack" }'The response includes telegram_link, deep_link (/p/{public_id}), store_url (uses slug in the store if you set one) and startapp.
| Field | Type | Required | Description |
|---|---|---|---|
title |
string | Yes | Name, up to 120 characters |
amount |
number | Yes | Price in USDT (minimum about BRL 20) |
listed |
bool | No | Ask for the TonRamp mall. Default false |
category |
string | No | Mall filter, up to 64 characters |
slug |
string | No | Store URL (a-z, 0-9, hyphen). 3–80 characters. Cannot be a public_id |
kind |
string | No | product (one-shot) or plan (reminder, no auto-debit) |
stock |
number | No | Integer. Empty = unlimited. 0 sells out |
PATCH /v2/partner/products/{id} updates the same fields. Changing title, amount or image while listed returns the SKU to pending.
GET /v1/partner/products and GET /v2/partner/products list the account SKUs.
GET /v2/marketplace/products
Section titled “GET /v2/marketplace/products”Public mall catalog. No auth.
Query:
| Param | Description |
|---|---|
q |
Search title and description |
category |
Exact category (case-insensitive) |
limit |
Up to 50 |
offset |
Pagination |
GET /v2/marketplace/categories returns categories currently in the mall.
GET /v1/marketplace/products is the same catalog (v1). GET /v2/store/products/{public_id_or_slug} is the store PDP, even off the mall, if the SKU is active.
Checkout
Section titled “Checkout”The Mini App pays with POST /v1/marketplace/products/{public_id}/checkout (Telegram JWT). The TRP payload stores product_id on the transaction. Orders with extra fields (character, qty) still go through POST /v1/wallet/trp/generate.