Skip to content

/wallet/getdelegatedresource

Legacy lookup: Returns only Stake 1.0 delegation records; does not work with V2 data. There is no version gate in the source, so it can still be called after V2 is enabled to look up legacy V1 positions. For new use cases, use /wallet/getdelegatedresourcev2.

Query all resource delegation records from→to (Stake 1.0).

  • Source: framework/src/main/java/org/tron/core/services/http/GetDelegatedResourceServlet.java
  • Method: GET / POST
  • Response: api.DelegatedResourceList
  • Solidity endpoint: /walletsolidity/getdelegatedresource

Request parameters

GET reads these fields from URL query parameters; POST reads them from a JSON request body.

Field Method Type Required Description
fromAddress GET string Yes Resource lender address
fromAddress POST string No Resource lender address; omitted uses empty bytes and returns an empty result
toAddress GET string Yes Resource receiver address
toAddress POST string No Resource receiver address; omitted uses empty bytes and returns an empty result
visible GET / POST bool No Address format

Example:

curl --request POST \
     --url https://nile.trongrid.io/wallet/getdelegatedresource \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "fromAddress": "41dd791d6b49e190062d650e6a23c575510d35f2f9",
  "toAddress":   "4192ad11c1bf16b3b14b0bd6b5c7e2db73a0b5e83a"
}
'

Response

Field Type Description
delegatedResource repeated DelegatedResource Delegation record list

DelegatedResource fields:

Field Type Description
from string Delegator
to string Receiver
frozen_balance_for_bandwidth int64 Frozen amount delegated for bandwidth
frozen_balance_for_energy int64 Frozen amount delegated for energy
expire_time_for_bandwidth int64 Bandwidth delegation expiry
expire_time_for_energy int64 Energy delegation expiry

Response example (no V1 delegation between the example accounts on Nile, returns empty object):

{}

Response when V1 delegation exists:

{
  "delegatedResource": [
    {
      "from": "41dd791d6b49e190062d650e6a23c575510d35f2f9",
      "to":   "4192ad11c1bf16b3b14b0bd6b5c7e2db73a0b5e83a",
      "frozen_balance_for_energy": 1000000000,
      "expire_time_for_energy":    1700000000000
    }
  ]
}

Error responses

Method Trigger Response
GET / POST Request body exceeds node.http.maxMessageSize Usually HTTP 413 Payload Too Large when rejected by SizeLimitHandler
GET / POST fromAddress / toAddress is not valid base58check (visible=true) GET: with non-base58 characters, throws {"Error": "class java.lang.IllegalArgumentException : <details>"}; if only the checksum is wrong, Util.getHexAddress silently returns empty string → no record found, returns {}. POST (via JsonFormat.merge): with non-base58 characters, throws {"Error": "class org.tron.core.services.http.JsonFormat$ParseException : <pos>: INVALID base58 String, ..."}; if only the checksum is wrong, throws {"Error": "class java.lang.NullPointerException : null"}
GET / POST fromAddress / toAddress is not valid hex (visible=false) {"Error": "class org.bouncycastle.util.encoders.DecoderException : <message>"} (GET); {"Error": "class org.tron.core.services.http.JsonFormat$ParseException : <message>"} (POST)
POST Request body is not valid JSON / field type mismatch (POST) {"Error": "class org.tron.json.JSONException : <parser info>"} or {"Error": "class org.tron.core.services.http.JsonFormat$ParseException : <decoder info>"}
GET / POST Other exceptions {"Error": "<exceptionClass> : <message>"}