Pular para o conteúdo

Produtos e vitrine

O parceiro cadastra produtos e planos no console, em Produtos, ou pela API. Cada SKU tem um public_id estável. O Mini App abre com startapp=mp_{public_id}.

A vitrine TonRamp só lista o que o parceiro pediu (listed=true), a TonRamp aprovou, está na janela e tem estoque.

GET/POST/PATCH /v1/partner/products e /v2/partner/products aceitam o JWT do console ou API key tonr_… no header Authorization: Bearer.

Cria o SKU. listed começa em false. Pedir vitrine não aprova sozinho.

Janela do terminal
curl -X POST https://api.tonramp.io/v2/partner/products \
-H "Authorization: Bearer tonr_SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Pacote 100",
"amount": 10,
"listed": true,
"category": "games",
"slug": "pacote-gold"
}'

A resposta traz telegram_link, deep_link (/p/{public_id}), store_url (usa o slug na loja se você enviou um) e startapp.

Campo Tipo Obrigatório Descrição
title string Sim Nome, até 120 caracteres
amount number Sim Preço em USDT (mínimo equivalente a R$ 20)
listed bool Não Pedir vitrine TonRamp. Default false
category string Não Filtro da vitrine, até 64 caracteres
slug string Não URL da loja (a-z, 0-9, hífen). 3–80 caracteres. Não pode ser um public_id
kind string Não product (único) ou plan (lembrete, sem débito)
stock number Não Inteiro. Vazio = ilimitado. 0 esgota

PATCH /v2/partner/products/{id} atualiza os mesmos campos. Mudar título, valor ou imagem com vitrine ligada volta a pending.

GET /v1/partner/products e GET /v2/partner/products listam os SKUs da conta.

Catálogo público da mall. Sem autenticação.

Query:

Param Descrição
q Busca no título e na descrição
category Categoria exata (sem diferenciar maiúsculas)
limit Até 50
offset Paginação

GET /v2/marketplace/categories devolve as categorias que estão na mall agora.

GET /v1/marketplace/products é o mesmo catálogo (v1). GET /v2/store/products/{public_id_ou_slug} é a página do SKU na loja, mesmo fora da vitrine, se o SKU estiver ativo.

O Mini App paga com POST /v1/marketplace/products/{public_id}/checkout (JWT do Telegram). O payload TRP leva o product_id na transação. Pedido com personagem/quantidade continua em POST /v1/wallet/trp/generate.