Skip to content

Activator — address activation ​

Activate a TRON address that has never been used on-chain. A brand-new address has no account record, so it cannot receive delegated energy or bandwidth until it is activated. This endpoint creates the account for you and returns the activation transaction hash.

Activation is a one-time operation per address. If the address is already active, the endpoint tells you so and charges nothing.

Endpoint base URL ​

https://netts.io/apiv2/activator

Request Headers ​

HeaderRequiredDescription
Content-TypeYesapplication/json
X-API-KEYYesYour API key from the Netts dashboard
X-Real-IPYesIP address from your whitelist

Your user_id is derived from the API key — you never pass it.


Activate — POST /apiv2/activator ​

Request body ​

json
{ "targetAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE" }
FieldTypeRequiredDescription
targetAddressstringYesTRON address to activate. Must match ^T[A-Za-z0-9]{33}$ (34 chars, starts with T).

Response — activated (200, code 10000) ​

json
{
    "detail": {
        "code": 10000,
        "msg": "Address activated successfully, 1.1 TRX deducted",
        "data": {
            "orderId": "A123456",
            "targetAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
            "activation_cost": 1.1,
            "user_balance_before": 500.00,
            "user_balance_after": 498.90,
            "hash": "0000000000000000000000000000000000000000000000000000000000000000"
        }
    }
}
FieldTypeDescription
orderIdstringActivation order number, always A + digits. Use it for reconciliation.
targetAddressstringThe address that was activated
activation_costfloatAmount deducted from your balance, in TRX
user_balance_beforefloatBalance before the deduction
user_balance_afterfloatBalance after the deduction
hashstringActivation transaction hash. Verify it on any TRON explorer.

Response — already active (200, code 2001) ​

Returned when the address already exists on-chain. Nothing is charged.

json
{
    "detail": {
        "code": 2001,
        "msg": "Address is already activated",
        "data": {
            "targetAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
            "status": "already_activated",
            "user_balance": 500.00,
            "activation_cost": 0,
            "activation_required": false
        }
    }
}

Check code before assuming a charge occurred: 10000 means you paid, 2001 means you did not.

Example ​

bash
curl -X POST https://netts.io/apiv2/activator \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip" \
  -d '{"targetAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"}'

Price ​

ItemAmount
Activation1.1 TRX
Address already active0

The amount is fixed and does not depend on the address or on network conditions. It is deducted from your Netts balance at the moment the activation succeeds — never before. A failed activation costs nothing.

Your balance must cover the cost, otherwise the request is rejected with 403 (1004) and no order is created.


When you need this ​

  • Before renting energy or bandwidth for a fresh address. Delegation to a non-existent account fails. Activate first, then order.
  • Before the first incoming transfer to an address you generated yourself.

You do not need to call this endpoint for an address that has ever received TRX or a token — it is already active, and the call would simply return 2001.

Ordering energy for a new address

The 1-hour energy endpoint activates a non-active receiver on its own as part of the order, and the activation cost is added to that order. Call the activator explicitly when you want the address active before any rental — for example to top up bandwidth first, which does require an active account.


Timing ​

Activation is a real on-chain transaction. The endpoint returns after it is broadcast and the activation record is written, typically within a few seconds.

The address becomes usable only once the transaction is included in a block — up to ~3 seconds after the response, since that is the TRON block interval. If your next step depends on the address being active (ordering bandwidth, for instance), confirm the state on-chain by the returned hash instead of calling immediately.


Error Code Reference ​

CodeDescriptionHTTP Status
10000Address activated, balance deducted200
2001Address already activated, nothing charged200
-1Invalid API key / IP not in whitelist401
1004Insufficient funds — the message states what is required and what you have403
-Invalid targetAddress format (must be 34 chars, start with T)422
5003Activation failed or service temporarily unavailable — retry later503
5000Internal server error500

A 503 means no charge occurred and no address was activated: the request may be retried safely.

Rate Limits ​

Limited per source IP:

PeriodLimit
1 second5 requests
1 minute60 requests

Rate Limit Exceeded (429) ​

json
{ "message": "API rate limit exceeded" }

Postpaid Accounts ​

Accounts on postpaid billing use the same endpoint, headers and request body. The difference is how the activation is paid:

  • Nothing is deducted from your deposit. Each successful activation is added to your account balance due in the settlement currency agreed in your contract. You pay it by invoice, according to your agreement.
  • Your account has a credit limit. While the amount due is within the limit, activations are accepted even with a zero deposit.
  • Only a completed activation is billed. An address that is already active (2001) and a failed activation cost nothing.

Postpaid billing is enabled by Netts for an account on request. Every response tells you how the activation is paid: paymentMode is postpaid or prepaid.

Additional request fields ​

FieldTypeRequiredDescription
testbooleanNotrue — calculate the price and check the address only. Nothing is activated or billed
freezePricebooleanNotrue — fix the price under your contract for 60 seconds. Nothing is activated or billed
quoteIdstringNoActivate at the price of a quote issued by freezePrice for the same address
priceCurrencystringNoTRX (default) or the currency of your contract, as in settlement.asset. For postpaid accounts the amounts in your contract currency are always included

quoteId cannot be combined with test or freezePrice. Any other field in the request body is rejected.

Price check (test: true) ​

json
{ "targetAddress": "TSMARToKjQGxroMnPKK6o6d4876VkQmHEH", "test": true }
json
{
    "detail": {
        "code": 10010,
        "msg": "Test calculation",
        "data": {
            "amount": 1,
            "unitPriceSun": null,
            "discount": null,
            "energyTRX": "0.000000",
            "activationTRX": "1.100000",
            "wouldCostTRX": "1.100000",
            "paidTRX": 0,
            "paymentMode": "postpaid",
            "activationCheck": "inactive",
            "alt": {"USDC": {"energy": "0.000000", "activation": "0.364333", "total": "0.364333"}},
            "fxAt": "2026-10-19T07:17:33.475335+00:00",
            "targetAddress": "TSMARToKjQGxroMnPKK6o6d4876VkQmHEH"
        }
    }
}

activationCheck: inactive — the address needs activation and will be billed; active — the address is already active, wouldCostTRX is 0; unknown — could not be checked right now.

alt.<currency> — the same amounts in the currency of your contract. fxAt — the time of the exchange rate used.

Fixed-price quote (freezePrice: true) ​

  1. Send the request with "freezePrice": true. The response has code 10011 (Quote issued), the same fields as a price check, plus quoteId and expiresAt.
  2. Within 60 seconds send the request with "quoteId": "<quoteId>" and the same targetAddress.
  3. The activation is billed at the quoted price — the price under your contract at the moment of the quote.

A quote can be used once. An expired or already used quote is rejected and nothing is activated.

Successful activation ​

json
{
    "detail": {
        "code": 10000,
        "msg": "Address activated successfully, 1.1 TRX service cost, postpaid",
        "data": {
            "orderId": "A564125",
            "targetAddress": "TSMARToKjQGxroMnPKK6o6d4876VkQmHEH",
            "activation_cost": 1.1,
            "user_balance_before": 0.0,
            "user_balance_after": 0.0,
            "hash": "bd9ea6ef92ce4ba6553af3930a03abe874cdfcc2399b7fdd9abdb11570de2920",
            "paymentMode": "postpaid",
            "activationTRX": "1.100000",
            "totalTRX": "1.100000"
        }
    }
}
FieldDescription
activation_costCost of the activation in TRX. For postpaid accounts it is not deducted from the deposit
user_balance_before / user_balance_afterYour deposit — unchanged for postpaid accounts
paymentModepostpaid
activationTRX / totalTRXExact amounts, 6 decimal places
quoteId, altPresent when the activation was placed with a quote

Credit limit reached (402) ​

json
{
    "detail": {
        "code": 1004,
        "msg": "Postpaid credit limit reached.",
        "paymentMode": "postpaid",
        "reason": "limit_reached"
    }
}

Nothing is activated and nothing is billed. New activations are accepted again once your payment is registered or your limit is increased.

Postpaid error codes ​

CodeHTTPDescription
10010200Price check result (test)
10011200Quote issued (freezePrice)
1004402Postpaid credit limit reached
4100400Invalid request
4101400Unsupported priceCurrency
4102400quoteId combined with test or freezePrice
4103409Quote already used
4104409Quote expired
4106404Quote not found
4107409Request parameters differ from the quote
4108400Invalid quoteId format
4109422Not available for sub-accounts
5032503Price temporarily unavailable
5033503Exchange rate temporarily unavailable
5034503Billing temporarily unavailable — the activation was not accepted
5036503Credit check temporarily unavailable — retry later

For all 4xx and 503 responses above nothing is activated and nothing is billed.


Notes ​

  • Idempotency is on you. The endpoint has no idempotency key. Repeating a request for an address that is already active is safe and free (2001), but two simultaneous requests for the same brand-new address may both proceed. Serialise activation per address on your side.
  • orderId format is A + digits and is unique across activations.
  • No webhook is sent for activation today — the response and the hash are the confirmation. Webhooks currently cover confirmed energy delegations only, see Webhooks.