TronBid · Developer API

API MarketPlace — TRON Energy and Bandwidth

Buy resources from Marketplace participants, place bids and manage seller offers through a dedicated TronBid API.

  • Energy and Bandwidth
  • 3 purchase modes
  • Seller Offers and signing
Version
v2 · REST / JSON
Updated
06.10.2026
Base URL
https://tronbid.com/api/v2/marketplace
On this page

Integration

From API key to TXID

  1. 1

    Request a separate Marketplace key from support. Check GET /account and GET /capabilities.

  2. 2

    Choose a purchase mode, request POST /quotes, then POST /orders. Use payment_mode: balance to pay from the shared balance.

  3. 3

    Read GET /orders/{id} or webhook events. Delegation is complete when delivery_complete=true; txids_delegate contains the hashes. Order creation alone does not confirm delivery.

Integration example
javascript
const base = "https://tronbid.com/api/v2/marketplace";
const headers = { Authorization: "Bearer " + process.env.TRONBID_MARKETPLACE_KEY };
async function write(path, body, key = crypto.randomUUID()) {
  const response = await fetch(base + path, {
    method: "POST",
    headers: { ...headers, "Content-Type": "application/json", "Idempotency-Key": key },
    body: JSON.stringify(body)
  });
  const result = await response.json();
  if (!response.ok) throw new Error(JSON.stringify(result.error));
  return result.data;
}
const quote = await write("/quotes", {
  mode: "best", resource_type: "energy", resource_amount: 131000,
  duration: { type: "minutes", value: 15 },
  recipient_address: "YOUR_TRON_RECEIVER_ADDRESS",
  max_price_sun: 50, max_total_trx: "6.550000",
  allow_partial: true, wait_seconds: 900
});
const order = await write("/orders", {
  quote_id: quote.quote_id, payment_mode: "balance",
  external_id: "invoice-2026-0001"
});
const response = await fetch(base + "/orders/" + order.id, { headers });
const { data: state } = await response.json();
console.log(state.status, state.delivery_complete, state.txids_delegate);

Access and independent keys

Request a key from @tronbid on Telegram or support@tronbid.com after signing in with your account wallet. An administrator issues a dedicated tbm_ key with read, buy, sell, offers, wallets and webhooks scopes. Quick Rent and Seller Delegate API keys do not grant access.

Base URL: https://tronbid.com/api/v2/marketplace. Use Authorization: Bearer tbm_… over HTTPS. Your account balance is shared with the website and Quick Rent; Marketplace API operations have separate records. There are no spending limits. Administrators configure request rate and allowed IPs.

Request a separate key · @tronbid

Responses and retries

Success: {data: …, request_id: UUID}. Error: {error: {code, details?}, request_id: UUID}. TRX values in quotes, orders and statistics are decimal strings; manual trade fields retain their numeric format. OpenAPI defines each field type. Calculations use SUN, with 1 TRX = 1,000,000 SUN.

Every POST, PATCH, PUT and DELETE requires an Idempotency-Key of 8–128 letters, digits or . _ : -. Repeating the same request with the same key returns its original result. Use a new key for a new operation. Idempotency is scoped to your API key identity.

After a timeout, repeat the original request with the same key. 409 REQUEST_IN_PROGRESS means it is still running; IDEMPOTENCY_CONFLICT means the body or path differs. For 429 RATE_LIMITED, honor Retry-After. An accepted order is not delivery confirmation; check delivery_complete.

For buyers

Market data and pricing

GET /capabilities returns current minimums and durations: energy and bandwidth; 15 minutes, 1 hour, or 1–30 days. GET /market?side=offers lists seller offers; side=bids lists buyer orders. Use resource_type, limit (1–100) and offset to page results.

price_sun is the price per resource unit for the entire minutes/hours rental, or per day for days. Total = amount × price_sun × days (multiplier 1 for 15 minutes or 1 hour). Marketplace commission comes from seller proceeds; there is no additional buyer fee.

Availability uses recent verified seller resource snapshots, timestamped by resources_checked_at. A quote does not reserve resources. Reading the market does not trigger a blockchain poll per request. Only Marketplace participants fulfill these orders; there is no own-pool or Chinese provider fallback.

Availability, price and transfer estimates

GET /resources sums available seller resources without counting the same wallet twice. Filter by resource, term and price. This is a snapshot, not a reservation.

GET /price previews price and availability without persisting a quote. Purchase with POST /quotes or POST /orders/instant and an explicit budget limit. Each fulfillment payment follows Marketplace rounding; use the returned quote amount.

GET /estimate-energy simulates the token transfer(address,uint256) for the specific from_address and to_address. amount uses token base units. fee_trx is the network burn cost, not a rental price. Results are cached for 15 seconds per parameter combination. A failed simulation returns 422, not an assumed estimate.

Three purchase modes

POST /quotes with mode, resource_type, resource_amount, duration:{type,value}, recipient_address. bid posts your price_sun; offer selects offer_id; best selects the cheapest matching offers within max_price_sun and/or max_total_trx. An offer purchase can also set a unit-price cap.

Quotes expire in 60 seconds. POST /orders accepts quote_id, payment_mode (balance or onchain) and optional external_id. Each quote creates one order; external_id is unique within your account. The maximum budget is fixed and never increased automatically.

allow_partial=true permits multiple sellers and partial delivery. With false, offer/best reserves the full amount atomically before fulfillment starts; a bid must be accepted in full by one seller. wait_seconds is 30 seconds–30 days, default 900 seconds. Accepted parts retain their agreed terms.

Payments, cancellation and batches

balance reserves the budget atomically when creating the order; allocating seller parts does not debit you again. onchain creates a payment-pending order: call POST /orders/{id}/payment and transfer the specified TRX amount from payer_address. Invoices last 15 minutes. Excess payment is credited to your account balance.

POST /orders/{id}/cancel stops new matching and returns unallocated funds to your shared balance. Accepted or signed delegations must first be reconciled. A matching deadline follows the same rules. Refunds of failed prepaid parts use Marketplace rules.

POST /orders/batch accepts {orders:[{quote_id,payment_mode,external_id},…]}, up to 20 entries. Creation is atomic: one invalid entry rolls back the entire batch. Use one Idempotency-Key for the batch.

For sellers

Wallets and automatic offers

Register multiple wallets. POST /wallet-challenges with address returns message and challenge_id. Sign the message with TronWeb.trx.signMessageV2, then POST /wallets with challenge_id, signatures and automatic. Challenges expire in 5 minutes; multisig requires the owner threshold. Never send private keys.

Register with automatic=false, call POST /wallets/{id}/prepare-permission, then sign and broadcast the returned transaction using your wallet. After confirmation, obtain a fresh challenge and register again with automatic=true so the API verifies the on-chain permission. Preparation does not broadcast; the wallet owner pays the network fee. GET /wallets exposes permission status and resource snapshots. PATCH /wallets/{id} with enabled:false disables new wallet operations.

POST /offers accepts wallet_id, resource_type, resource_amount, duration, price_sun, auto_repeat, paused. The seller sets every price. PATCH /offers/{id} changes price_sun, free_amount, duration, paused, auto_repeat, or cancel:true. Used terms are replaced under a new ID: the response includes replaces_offer_id and the old offer exposes replaced_by. Existing reservations keep their terms. Follow repeat_source_offer_id for automatic repeats.

Integration example
javascript
// write() uses the same authenticated POST helper as the buyer example.
// tronWeb is connected to the seller's wallet; keys stay on the client.
async function register(automatic) {
  const challenge = await write("/wallet-challenges", {
    address: tronWeb.defaultAddress.base58
  });
  const signature = await tronWeb.trx.signMessageV2(challenge.message);
  return write("/wallets", {
    challenge_id: challenge.challenge_id,
    signatures: [signature], automatic
  });
}
const wallet = await register(false);
const permission = await write(
  "/wallets/" + wallet.id + "/prepare-permission", {}
);
const signed = await tronWeb.trx.sign(permission.transaction);
const sent = await tronWeb.trx.sendRawTransaction(signed);
if (!sent.result) throw new Error("Permission transaction rejected");
// Wait for a confirmed successful transaction before enabling automatic mode.
let confirmed = false;
for (let attempt = 0; attempt < 40; attempt++) {
  await new Promise(resolve => setTimeout(resolve, 3000));
  const receipt = await tronWeb.trx.getTransactionInfo(sent.txid);
  const confirmedTransaction = await tronWeb.trx.getTransaction(sent.txid);
  if (receipt.id && confirmedTransaction.ret?.[0]?.contractRet === "SUCCESS") {
    confirmed = true;
    break;
  }
}
if (!confirmed) throw new Error("Check permission transaction before proceeding");
const ready = await register(true);
const offer = await write("/offers", {
  wallet_id: ready.id, resource_type: "energy", resource_amount: 1000000,
  duration: { type: "minutes", value: 15 },
  price_sun: 20, auto_repeat: true, paused: false
});
console.log(offer.id, offer.wallet_id, offer.status);

Fulfill bids with your own signature

Find a bid through GET /market?side=bids. POST /trades with order_id, wallet_id and resource_amount claims it for 3 minutes. The response includes source/recipient, delegate_balance_sun and lock_period_blocks.

Build and locally sign a matching DelegateResourceContract, then POST /trades/{id}/delegate with {signed_transaction:{…}}. The signed transaction is persisted before broadcast and recovered after interruptions. POST /trades/{id}/cancel only releases an unsubmitted claim. Unsigned expired claims are released automatically.

GET /trades/{id} shows status, commission, expected payout, delegate_txid and payout_txid. Payouts follow the account's TRX/USDT settings and website rules. Automatic Seller Offers use the granted permission; local signing is needed only for this separate manual flow.

Integration example
javascript
// Claim an eligible buyer bid, then use the exact returned amounts.
const claim = await write("/trades", {
  order_id: "BUYER_ORDER_UUID", wallet_id: "YOUR_REGISTERED_WALLET_UUID",
  resource_amount: 131000
});
const transaction = await tronWeb.transactionBuilder.delegateResource(
  Number(claim.delegate_balance_sun), claim.recipient_address,
  claim.resource_type.toUpperCase(), claim.source_address,
  true, Number(claim.lock_period_blocks)
);
const signed = await tronWeb.trx.sign(transaction);
// Persist signed and the Idempotency-Key before this call.
// On timeout, resend the SAME signed transaction and key, not a new delegation.
const result = await write("/trades/" + claim.trade_id + "/delegate", {
  signed_transaction: signed
}, "UNIQUE_PERSISTED_DELEGATION_KEY");
console.log(result.status, result.delegate_txid, result.payout_txid);

Events and accounting

Balance, deposits and statistics

GET /account returns the shared balance, key permissions and today/yesterday/lifetime usage. GET /statistics breaks down Energy/Bandwidth, purchases, seller gross revenue, commission and earnings.

Today and yesterday are calendar days in Europe/Moscow by default; UTC is supported. week covers the last 7 days, month 30, rolling the last days days. Only confirmed Marketplace API fills are counted, not unrelated Quick Rent activity.

GET /account/recharge returns the address and can_recharge. Send TRX only from payer_address, without paying other invoices concurrently from that wallet. This checks current state; it does not lock the wallet. Confirmed credits appear in GET /account/deposits.

Statuses, TXIDs and history

Poll GET /orders/{id}: awaiting_payment → waiting → partially_delegated → delegated. Other states include cancelling, cancelled and expired. After partial delivery inspect delivered_amount and remaining_amount. delivery_complete=true means the entire requested amount was delivered.

txid_delegate is the first confirmed hash; txids_delegate contains all hashes. fulfillments and trades contain parts, refunds and payout details. Explorer URL: https://tronscan.org/#/transaction/{txid}. An order ID alone is not proof of delivery.

GET /orders?external_id=… finds your reference. GET /events?after=0 returns ascending events and next_cursor. GET /statistics?days=30 separates purchases from sales. Seller proceeds and commission are based on confirmed operations.

Signed notifications

PUT /webhook with {url:"https://…"} configures the current key; url:null disables delivery. Your administrator supplies the signing secret with the API key. Only public HTTPS URLs are accepted; redirects are not followed.

Verify X-TronBid-Signature: v1=HMAC_SHA256(secret, timestamp + "." + rawBody), using X-TronBid-Timestamp. Compare in constant time, reject old timestamps and deduplicate X-TronBid-Event-Id. Verify before parsing JSON.

Return HTTP 2xx after durably recording the event. Delivery is at least once; duplicates and reordering are possible. Up to 12 attempts use delays from 30 seconds to 1 hour. Events are snapshots; fetch the entity for current status. Recover missed events through GET /events.

Integration example
javascript
import { createHmac, timingSafeEqual } from "node:crypto";
function verifyWebhook(rawBody, timestamp, signature, secret) {
  if (!/^\d+$/.test(timestamp) || Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) return false;
  if (!/^v1=[a-f0-9]{64}$/.test(signature)) return false;
  const expected = createHmac("sha256", secret).update(timestamp + "." + rawBody).digest();
  return timingSafeEqual(expected, Buffer.from(signature.slice(3), "hex"));
}

API reference

Replace the key, addresses and UUIDs with your values. Example prices are illustrative; use the returned quote.

GET
/resources
Available seller resources

Key scope: read

Parameters

FieldTypeDescription
resource_type
Optional
enumResource: energy or bandwidth.
energy · bandwidth
duration_type
Optional
enumRental unit: minutes, hours, days.
minutes · hours · days
duration_value
Optional
integer15 for minutes; 1 for hours; 1–30 for days.
min_price_sun
Optional
integerMinimum unit price in SUN.
max_price_sun
Optional
integerMaximum unit price. Never raised automatically.
min_amount
Optional
integerMinimum available volume per entry.
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/resources' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
GET
/price
Read-only price preview

Key scope: read

Parameters

FieldTypeDescription
resource_amount
Required
integerNumber of resource units. Minimums: GET /capabilities.
resource_type
Optional
enumResource: energy or bandwidth.
energy · bandwidth
duration_type
Optional
enumRental unit: minutes, hours, days.
minutes · hours · days
duration_value
Optional
integer15 for minutes; 1 for hours; 1–30 for days.
default: 15
recipient_address
Optional
stringTRON wallet that receives the resource.
offer_id
Optional
stringOffer ID from GET /market?side=offers.
max_price_sun
Optional
integerMaximum unit price. Never raised automatically.
max_total_trx
Optional
stringMaximum TRX budget, decimal string with up to 6 decimals.
allow_partial
Optional
booleanAllow partial fills across multiple sellers.
default: true
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/price?resource_amount=131000&max_price_sun=50' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
GET
/estimate-energy
Estimate a token transfer

Key scope: read

Parameters

FieldTypeDescription
from_address
Required
stringToken sender; used in the simulation.
to_address
Required
stringToken receiver; account state affects Energy.
contract_address
Optional
stringTRC20 contract; defaults to TRON USDT.
default: TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t
amount
Optional
stringToken amount in base units. USDT: 1,000,000 = 1 USDT.
default: 1000000
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/estimate-energy?from_address=YOUR_TRON_WALLET_ADDRESS&to_address=RECIPIENT_TRON_ADDRESS&amount=1000000' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
GET
/account/recharge
Balance recharge instructions

Key scope: read

bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/account/recharge' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
GET
/account/deposits
Deposit history

Key scope: read

Parameters

FieldTypeDescription
limit
Optional
integerPage size: 1–100; default 50.
≥ 1 · ≤ 100 · default: 50
offset
Optional
integerNumber of records to skip.
≥ 0 · ≤ 100000 · default: 0
since
Optional
stringInclusive start, ISO 8601 with timezone.
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/account/deposits' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
GET
/orders/queue
Active order queue

Key scope: read

Parameters

FieldTypeDescription
limit
Optional
integerPage size: 1–100; default 50.
≥ 1 · ≤ 100 · default: 50
offset
Optional
integerNumber of records to skip.
≥ 0 · ≤ 100000 · default: 0
resource_type
Optional
enumResource: energy or bandwidth.
energy · bandwidth
mode
Optional
enumbid: your price; offer: a selected offer; best: cheapest eligible offers.
bid · offer · best
status
Optional
enumStatus filter; allowed values are listed below.
awaiting_payment · waiting · partially_delegated · delegated · cancelling · cancelled · expired · filled
since
Optional
stringInclusive start, ISO 8601 with timezone.
until
Optional
stringExclusive end, ISO 8601 with timezone.
sort
Optional
enumSort order. price: unit price; income: gross value; amount: available volume.
newest · oldest
external_id
Optional
stringYour order identifier, unique within the account.
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/orders/queue' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
POST
/orders/instant
Create an order in one request

Key scope: buy

Parameters

FieldTypeDescription
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
purchase
Required
objectSame purchase parameters as POST /quotes.
purchase.mode
Required
enumbid: your price; offer: a selected offer; best: cheapest eligible offers.
bid · offer · best
purchase.resource_type
Required
enumResource: energy or bandwidth.
energy · bandwidth
purchase.resource_amount
Required
integerNumber of resource units. Minimums: GET /capabilities.
≥ 1 · ≤ 500000000
purchase.duration
Required
object15 minutes, 1 hour or 1–30 days.
purchase.duration.type
Required
enumRental unit: minutes, hours, days.
minutes · hours · days
purchase.duration.value
Required
integer15 for minutes; 1 for hours; 1–30 for days.
≥ 1 · ≤ 30
purchase.recipient_address
Required
stringTRON wallet that receives the resource.
purchase.offer_id
Optional
stringOffer ID from GET /market?side=offers.
purchase.price_sun
Optional
integerSUN per resource unit; per day for days rentals.
≥ 1 · ≤ 1000000
purchase.max_price_sun
Optional
integerMaximum unit price. Never raised automatically.
≥ 1 · ≤ 1000000
purchase.max_total_trx
Optional
stringMaximum TRX budget, decimal string with up to 6 decimals.
purchase.allow_partial
Optional
booleanAllow partial fills across multiple sellers.
default: true
purchase.wait_seconds
Optional
integerMatching deadline: 30–2,592,000 seconds; default 900.
≥ 30 · ≤ 2592000 · default: 900
payment_mode
Optional
enumbalance: shared balance; onchain: a TRX transfer invoice.
balance · onchain
external_id
Optional
stringYour order identifier, unique within the account.
bash
curl --request POST \
  'https://tronbid.com/api/v2/marketplace/orders/instant' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{
  "purchase": {
    "mode": "best",
    "resource_type": "energy",
    "resource_amount": 131000,
    "duration": {
      "type": "minutes",
      "value": 15
    },
    "recipient_address": "YOUR_TRON_WALLET_ADDRESS",
    "max_price_sun": 50,
    "max_total_trx": "6.550000",
    "allow_partial": true,
    "wait_seconds": 900
  },
  "payment_mode": "balance",
  "external_id": "invoice-001"
}'
GET
/wallets/{id}
Wallet and resource snapshot

Key scope: read

Parameters

FieldTypeDescription
id
Required
stringObject UUID returned by the API.
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/wallets/00000000-0000-4000-8000-000000000001' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
PATCH
/wallets/{id}
Enable or disable a wallet

Key scope: wallets

Parameters

FieldTypeDescription
id
Required
stringObject UUID returned by the API.
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
enabled
Required
booleanfalse disables new wallet operations and pauses its offers.
bash
curl --request PATCH \
  'https://tronbid.com/api/v2/marketplace/wallets/00000000-0000-4000-8000-000000000001' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{
  "enabled": false
}'
POST
/wallets/{id}/prepare-permission
Prepare seller permission

Key scope: wallets

Parameters

FieldTypeDescription
id
Required
stringObject UUID returned by the API.
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
bash
curl --request POST \
  'https://tronbid.com/api/v2/marketplace/wallets/00000000-0000-4000-8000-000000000001/prepare-permission' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{}'
GET
/offers/{id}/reservations
Fulfillments, payouts and resource return

Key scope: read

Parameters

FieldTypeDescription
id
Required
stringObject UUID returned by the API.
limit
Optional
integerPage size: 1–100; default 50.
≥ 1 · ≤ 100 · default: 50
offset
Optional
integerNumber of records to skip.
≥ 0 · ≤ 100000 · default: 0
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/offers/00000000-0000-4000-8000-000000000001/reservations' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
GET
/capabilities
Marketplace capabilities

Key scope: read

bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/capabilities' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
GET
/account
Account, balance and usage

Key scope: read

bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/account' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
GET
/market
Market bids and offers

Key scope: read

Parameters

FieldTypeDescription
limit
Optional
integerPage size: 1–100; default 50.
≥ 1 · ≤ 100 · default: 50
offset
Optional
integerNumber of records to skip.
≥ 0 · ≤ 100000 · default: 0
side
Optional
enumoffers: seller offers; bids: buyer requests.
offers · bids
resource_type
Optional
enumResource: energy or bandwidth.
energy · bandwidth
duration_type
Optional
enumRental unit: minutes, hours, days.
minutes · hours · days
duration_value
Optional
integer15 for minutes; 1 for hours; 1–30 for days.
min_price_sun
Optional
integerMinimum unit price in SUN.
max_price_sun
Optional
integerMaximum unit price. Never raised automatically.
min_amount
Optional
integerMinimum available volume per entry.
sort
Optional
enumSort order. price: unit price; income: gross value; amount: available volume.
price_asc · price_desc · income_desc · amount_desc · newest · oldest
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/market?side=offers&resource_type=energy&sort=price_asc' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
POST
/quotes
Create a purchase quote

Key scope: buy

Parameters

FieldTypeDescription
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
mode
Required
enumbid: your price; offer: a selected offer; best: cheapest eligible offers.
bid · offer · best
resource_type
Required
enumResource: energy or bandwidth.
energy · bandwidth
resource_amount
Required
integerNumber of resource units. Minimums: GET /capabilities.
≥ 1 · ≤ 500000000
duration
Required
object15 minutes, 1 hour or 1–30 days.
duration.type
Required
enumRental unit: minutes, hours, days.
minutes · hours · days
duration.value
Required
integer15 for minutes; 1 for hours; 1–30 for days.
≥ 1 · ≤ 30
recipient_address
Required
stringTRON wallet that receives the resource.
offer_id
Optional
stringOffer ID from GET /market?side=offers.
price_sun
Optional
integerSUN per resource unit; per day for days rentals.
≥ 1 · ≤ 1000000
max_price_sun
Optional
integerMaximum unit price. Never raised automatically.
≥ 1 · ≤ 1000000
max_total_trx
Optional
stringMaximum TRX budget, decimal string with up to 6 decimals.
allow_partial
Optional
booleanAllow partial fills across multiple sellers.
default: true
wait_seconds
Optional
integerMatching deadline: 30–2,592,000 seconds; default 900.
≥ 30 · ≤ 2592000 · default: 900
bash
curl --request POST \
  'https://tronbid.com/api/v2/marketplace/quotes' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{
  "mode": "best",
  "resource_type": "energy",
  "resource_amount": 131000,
  "duration": {
    "type": "minutes",
    "value": 15
  },
  "recipient_address": "YOUR_TRON_WALLET_ADDRESS",
  "max_price_sun": 50,
  "max_total_trx": "6.550000",
  "allow_partial": true,
  "wait_seconds": 900
}'
POST
/orders
Place a quoted order

Key scope: buy

Parameters

FieldTypeDescription
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
quote_id
Required
stringQuote ID from POST /quotes; valid for 60 seconds.
payment_mode
Optional
enumbalance: shared balance; onchain: a TRX transfer invoice.
balance · onchain
external_id
Optional
stringYour order identifier, unique within the account.
bash
curl --request POST \
  'https://tronbid.com/api/v2/marketplace/orders' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{
  "quote_id": "00000000-0000-4000-8000-000000000001",
  "payment_mode": "balance",
  "external_id": "invoice-001"
}'
GET
/orders
Order history and search

Key scope: read

Parameters

FieldTypeDescription
limit
Optional
integerPage size: 1–100; default 50.
≥ 1 · ≤ 100 · default: 50
offset
Optional
integerNumber of records to skip.
≥ 0 · ≤ 100000 · default: 0
external_id
Optional
stringYour order identifier, unique within the account.
resource_type
Optional
enumResource: energy or bandwidth.
energy · bandwidth
mode
Optional
enumbid: your price; offer: a selected offer; best: cheapest eligible offers.
bid · offer · best
status
Optional
enumStatus filter; allowed values are listed below.
awaiting_payment · waiting · partially_delegated · delegated · cancelling · cancelled · expired · filled
since
Optional
stringInclusive start, ISO 8601 with timezone.
until
Optional
stringExclusive end, ISO 8601 with timezone.
sort
Optional
enumSort order. price: unit price; income: gross value; amount: available volume.
newest · oldest
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/orders' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
POST
/orders/batch
Create up to 20 orders atomically

Key scope: buy

Parameters

FieldTypeDescription
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
orders
Required
arrayUp to 20 PlaceOrder objects; the whole batch is atomic.
bash
curl --request POST \
  'https://tronbid.com/api/v2/marketplace/orders/batch' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{
  "orders": [
    {
      "quote_id": "00000000-0000-4000-8000-000000000001",
      "payment_mode": "balance",
      "external_id": "invoice-001"
    }
  ]
}'
GET
/orders/{id}
Order, fulfillments and TXIDs

Key scope: read

Parameters

FieldTypeDescription
id
Required
stringObject UUID returned by the API.
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/orders/00000000-0000-4000-8000-000000000001' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
POST
/orders/{id}/payment
Order payment instructions

Key scope: buy

Parameters

FieldTypeDescription
id
Required
stringObject UUID returned by the API.
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
bash
curl --request POST \
  'https://tronbid.com/api/v2/marketplace/orders/00000000-0000-4000-8000-000000000001/payment' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{}'
POST
/orders/{id}/cancel
Cancel the unfilled remainder

Key scope: buy

Parameters

FieldTypeDescription
id
Required
stringObject UUID returned by the API.
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
bash
curl --request POST \
  'https://tronbid.com/api/v2/marketplace/orders/00000000-0000-4000-8000-000000000001/cancel' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{}'
POST
/wallet-challenges
Request an ownership challenge

Key scope: wallets

Parameters

FieldTypeDescription
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
address
Required
stringTRON address you control.
bash
curl --request POST \
  'https://tronbid.com/api/v2/marketplace/wallet-challenges' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{
  "address": "YOUR_TRON_WALLET_ADDRESS"
}'
POST
/wallets
Verify and register a wallet

Key scope: wallets

Parameters

FieldTypeDescription
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
challenge_id
Required
stringOne-time ownership challenge ID; expires in 5 minutes.
signatures
Required
arraysignMessageV2 signatures of message; multisig must meet owner threshold.
automatic
Optional
booleantrue verifies the TronBid resource delegation/return permission.
default: false
bash
curl --request POST \
  'https://tronbid.com/api/v2/marketplace/wallets' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{
  "challenge_id": "00000000-0000-4000-8000-000000000001",
  "signatures": [
    "SIGN_MESSAGE_V2_SIGNATURE"
  ],
  "automatic": false
}'
GET
/wallets
Registered wallets

Key scope: read

bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/wallets' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
POST
/offers
Create a Seller Offer

Key scope: offers

Parameters

FieldTypeDescription
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
wallet_id
Required
stringRegistered wallet ID from GET /wallets.
resource_type
Required
enumResource: energy or bandwidth.
energy · bandwidth
resource_amount
Required
integerNumber of resource units. Minimums: GET /capabilities.
≥ 1 · ≤ 500000000
duration
Required
object15 minutes, 1 hour or 1–30 days.
duration.type
Required
enumRental unit: minutes, hours, days.
minutes · hours · days
duration.value
Required
integer15 for minutes; 1 for hours; 1–30 for days.
≥ 1 · ≤ 30
price_sun
Required
integerSUN per resource unit; per day for days rentals.
≥ 1 · ≤ 1000000
auto_repeat
Optional
booleanAutomatically create successor offers under Marketplace rules.
paused
Optional
booleantrue pauses new purchases; accepted fills continue.
bash
curl --request POST \
  'https://tronbid.com/api/v2/marketplace/offers' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{
  "wallet_id": "00000000-0000-4000-8000-000000000001",
  "resource_type": "energy",
  "resource_amount": 1000000,
  "duration": {
    "type": "minutes",
    "value": 15
  },
  "price_sun": 20,
  "auto_repeat": true,
  "paused": false
}'
GET
/offers
My seller offers

Key scope: read

Parameters

FieldTypeDescription
limit
Optional
integerPage size: 1–100; default 50.
≥ 1 · ≤ 100 · default: 50
offset
Optional
integerNumber of records to skip.
≥ 0 · ≤ 100000 · default: 0
wallet_id
Optional
stringRegistered wallet ID from GET /wallets.
status
Optional
enumStatus filter; allowed values are listed below.
draft · active · pending_match · filled · cancelled · expired · paused_no_energy · paused_no_bandwidth · paused_permission · paused_fee_resource
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/offers' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
GET
/offers/{id}
Offer and remaining volume

Key scope: read

Parameters

FieldTypeDescription
id
Required
stringObject UUID returned by the API.
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/offers/00000000-0000-4000-8000-000000000001' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
PATCH
/offers/{id}
Price, volume, term, pause and repeat

Key scope: offers

Parameters

FieldTypeDescription
id
Required
stringObject UUID returned by the API.
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
price_sun
Optional
integerSUN per resource unit; per day for days rentals.
≥ 1 · ≤ 1000000
free_amount
Optional
integerNew unallocated volume, excluding filled and reserved units.
≥ 0 · ≤ 500000000
duration
Optional
object15 minutes, 1 hour or 1–30 days.
duration.type
Required
enumRental unit: minutes, hours, days.
minutes · hours · days
duration.value
Required
integer15 for minutes; 1 for hours; 1–30 for days.
≥ 1 · ≤ 30
paused
Optional
booleantrue pauses new purchases; accepted fills continue.
auto_repeat
Optional
booleanAutomatically create successor offers under Marketplace rules.
cancel
Optional
booleantrue cancels the free remainder and disables repeat.
bash
curl --request PATCH \
  'https://tronbid.com/api/v2/marketplace/offers/00000000-0000-4000-8000-000000000001' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{
  "price_sun": 22,
  "free_amount": 500000,
  "duration": {
    "type": "minutes",
    "value": 15
  },
  "paused": false,
  "auto_repeat": true
}'
POST
/trades
Claim a buyer bid

Key scope: sell

Parameters

FieldTypeDescription
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
order_id
Required
stringBuyer order ID.
wallet_id
Required
stringRegistered wallet ID from GET /wallets.
resource_amount
Required
integerNumber of resource units. Minimums: GET /capabilities.
≥ 1 · ≤ 500000000
bash
curl --request POST \
  'https://tronbid.com/api/v2/marketplace/trades' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{
  "order_id": "00000000-0000-4000-8000-000000000001",
  "wallet_id": "00000000-0000-4000-8000-000000000001",
  "resource_amount": 131000
}'
GET
/trades
My manual trades

Key scope: read

Parameters

FieldTypeDescription
limit
Optional
integerPage size: 1–100; default 50.
≥ 1 · ≤ 100 · default: 50
offset
Optional
integerNumber of records to skip.
≥ 0 · ≤ 100000 · default: 0
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/trades' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
GET
/trades/{id}
Seller trade status

Key scope: read

Parameters

FieldTypeDescription
id
Required
stringObject UUID returned by the API.
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/trades/00000000-0000-4000-8000-000000000001' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
POST
/trades/{id}/delegate
Submit a signed delegation

Key scope: sell

Parameters

FieldTypeDescription
id
Required
stringObject UUID returned by the API.
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
signed_transaction
Required
objectComplete signed DelegateResourceContract. Never send private keys.
bash
curl --request POST \
  'https://tronbid.com/api/v2/marketplace/trades/00000000-0000-4000-8000-000000000001/delegate' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{
  "signed_transaction": {
    "txID": "SIGNED_TRANSACTION_ID",
    "raw_data": {
      "contract": [
        "FULL_CONTRACT_FROM_TRONWEB"
      ]
    },
    "raw_data_hex": "FULL_HEX_FROM_TRONWEB",
    "signature": [
      "YOUR_SIGNATURE"
    ]
  }
}'
POST
/trades/{id}/cancel
Release an unexecuted claim

Key scope: sell

Parameters

FieldTypeDescription
id
Required
stringObject UUID returned by the API.
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
bash
curl --request POST \
  'https://tronbid.com/api/v2/marketplace/trades/00000000-0000-4000-8000-000000000001/cancel' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{}'
GET
/events
Cursor-based event stream

Key scope: read

Parameters

FieldTypeDescription
limit
Optional
integerPage size: 1–100; default 50.
≥ 1 · ≤ 100 · default: 50
after
Optional
stringLast processed event cursor; start at 0.
default: 0
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/events?after=0&limit=50' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
GET
/statistics
Purchase, sales and earnings statistics

Key scope: read

Parameters

FieldTypeDescription
days
Optional
integerRolling window: 1–3660 days; default 30.
≥ 1 · ≤ 3660 · default: 30
period
Optional
enumrolling: last days; today/yesterday in timezone; week: 7 days; month: 30; all: lifetime.
rolling · today · yesterday · week · month · all
timezone
Optional
enumCalendar zone: Europe/Moscow or UTC.
Europe/Moscow · UTC
bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/statistics?period=today' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
GET
/webhook
Current webhook URL

Key scope: webhooks

bash
curl --request GET \
  'https://tronbid.com/api/v2/marketplace/webhook' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY"
PUT
/webhook
Configure or disable a webhook

Key scope: webhooks

Parameters

FieldTypeDescription
Idempotency-Key
Required
stringUnique operation key; preserve it and the body when retrying.
url
Required
string | nullPublic HTTPS webhook URL; null disables delivery.
bash
curl --request PUT \
  'https://tronbid.com/api/v2/marketplace/webhook' \
  --header "Authorization: Bearer $TRONBID_MARKETPLACE_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: REPLACE_WITH_UNIQUE_OPERATION_KEY' \
  --data '{
  "url": "https://your-service.example/tronbid/events"
}'

Request a separate key