延长请求
为现有的 TronSave 订单提交续期请求——使用你的 API 密钥(内部账户)或签名交易进行支付——并获取 orderId。
Last updated
{
"extendData": [
{
"delegator": "TFwUFWr3QV376677Z8VWXxGUAMFSSSSSSS",
"isExtend": true,
"extraAmount": 0,
"extendTo": 1746702000
},
{
"delegator": "TFwUFWr3QV376677Z8VWXxGUAMFFFFFFFF",
"isExtend": true,
"extraAmount": 0,
"extendTo": 1746702000
}
],
"receiver": "TFwUFWr3QV376677Z8VWXxGUAMF1111111",
"resourceType": "BANDWIDTH"
}{
"error": false,
"message": "Success",
"data": {
"orderId": "6819da2d4d1b2aadb0d44eee"
}
}{
"MISSING_PARAMS": "Missing some params in body",
"INVALID_PARAMS": "Some params are invalid",
"INTERNAL_ACCOUNT_NOT_FOUND": "internal account does not exist",
"INTERNAL_BALANCE_ACCOUNT_TOO_LOW": "Balance is not enough",
"SOME_DELEGATE_CANNOT_EXTEND": "This delegate order can't be extended due to some errors. Please try again later."
}{
"API_KEY_REQUIRED": "Missing api key in headers",
"INVALID_API_KEY": "api key not correct"
}{
"RATE_LIMIT": "Rate limit reached"
}curl -X POST "https://api.tronsave.io/v2/extend-request" \
-H "apikey: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"extendData": [
{
"delegator": "YOUR_TRON_ADDRESS",
"isExtend": true,
"extraAmount": 0,
"extendTo": 1746702000
}
],
"receiver": "YOUR_TRON_ADDRESS",
"resourceType": "BANDWIDTH"
}'const sendExtendRequest = async () => {
const url = "https://api.tronsave.io/v2/extend-request";
// extendData comes from the Get extendable delegates response.
const extendData = [
{
delegator: "YOUR_TRON_ADDRESS",
isExtend: true,
extraAmount: 0,
extendTo: 1746702000,
},
];
const body = {
extendData,
receiver: "YOUR_TRON_ADDRESS",
resourceType: "BANDWIDTH",
};
const res = await fetch(url, {
method: "POST",
headers: {
apikey: "YOUR_API_KEY",
"content-type": "application/json",
},
body: JSON.stringify(body),
});
const response = await res.json();
// {
// "error": false,
// "message": "Success",
// "data": { "orderId": "6819da2d4d1b2aadb0d44eee" }
// }
return response;
};import requests
url = "https://api.tronsave.io/v2/extend-request"
headers = {
"apikey": "YOUR_API_KEY",
"Content-Type": "application/json",
}
# extend_data comes from the Get extendable delegates response.
extend_data = [
{
"delegator": "YOUR_TRON_ADDRESS",
"isExtend": True,
"extraAmount": 0,
"extendTo": 1746702000,
},
]
body = {
"extendData": extend_data,
"receiver": "YOUR_TRON_ADDRESS",
"resourceType": "BANDWIDTH",
}
response = requests.post(url, headers=headers, json=body)
print(response.json())import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ExtendRequest {
public static void main(String[] args) throws Exception {
String url = "https://api.tronsave.io/v2/extend-request";
String body = """
{
"extendData": [
{
"delegator": "YOUR_TRON_ADDRESS",
"isExtend": true,
"extraAmount": 0,
"extendTo": 1746702000
}
],
"receiver": "YOUR_TRON_ADDRESS",
"resourceType": "BANDWIDTH"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("apikey", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response =
client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
url := "https://api.tronsave.io/v2/extend-request"
body := []byte(`{
"extendData": [
{
"delegator": "YOUR_TRON_ADDRESS",
"isExtend": true,
"extraAmount": 0,
"extendTo": 1746702000
}
],
"receiver": "YOUR_TRON_ADDRESS",
"resourceType": "BANDWIDTH"
}`)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(body))
req.Header.Set("apikey", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}use serde_json::json;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let url = "https://api.tronsave.io/v2/extend-request";
let body = json!({
"extendData": [
{
"delegator": "YOUR_TRON_ADDRESS",
"isExtend": true,
"extraAmount": 0,
"extendTo": 1746702000_i64
}
],
"receiver": "YOUR_TRON_ADDRESS",
"resourceType": "BANDWIDTH"
});
let client = reqwest::blocking::Client::new();
let response = client
.post(url)
.header("apikey", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.json(&body)
.send()?;
println!("{}", response.text()?);
Ok(())
}{
"extendData": [
{
"delegator": "TGGVrYaT8XoosBEXPp6dmSZkoh11223344",
"isExtend": true,
"extraAmount": 0,
"extendTo": 1746403201
}
],
"receiver": "TGGVrYaT8XoosBEXPp6dmSZkoh123456",
"resourceType": "BANDWIDTH",
"signedTx": {
"visible": false,
"txID": "446eed36e31249b98b201db2e81a3825b185f1a3d8b2fea348b24fc021e58e0d",
"raw_data": {
"contract": [
{
"parameter": {
"value": {
"amount": 5500000,
"owner_address": "417a0d868d1418c9038584af1252f85d486502eec0",
"to_address": "41055756f33f419278d9ea059bd2b21120e6add748"
},
"type_url": "type.googleapis.com/protocol.TransferContract"
},
"type": "TransferContract"
}
],
"ref_block_bytes": "0713",
"ref_block_hash": "6c5f7686f4176139",
"expiration": 1691465106000,
"timestamp": 1691465046758
},
"raw_data_hex": "0a02071322086c5f7686f417613940d084b5999d315a68080112640a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412330a15417a0d868d1418c9038584af1252f85d486502eec0121541055756f33f419278d9ea059bd2b21120e6add74818e0fcb70670e6b5b1999d31",
"signature": ["xxxxxxxxx"]
}
}{
"error": false,
"message": "Success",
"data": {
"orderId": "6818426a65fa8ea36d119d2c"
}
}{
"MISSING_PARAMS": "Missing some params in body",
"INVALID_PARAMS": "Some params are invalid",
"INTERNAL_ACCOUNT_NOT_FOUND": "internal account does not exist",
"INTERNAL_BALANCE_ACCOUNT_TOO_LOW": "Balance is not enough",
"SOME_DELEGATE_CANNOT_EXTEND": "This delegate order can't be extended due to some errors. Please try again later."
}{
"RATE_LIMIT": "Rate limit reached"
}curl -X POST "https://api.tronsave.io/v2/extend-request" \
-H "Content-Type: application/json" \
-d '{
"extendData": [
{
"delegator": "YOUR_TRON_ADDRESS",
"isExtend": true,
"extraAmount": 0,
"extendTo": 1746403201
}
],
"receiver": "YOUR_TRON_ADDRESS",
"resourceType": "BANDWIDTH",
"signedTx": { "...": "signed transaction object" }
}'const sendExtendRequest = async (extendData, signedTx) => {
const url = "https://api.tronsave.io/v2/extend-request";
// extendData comes from Get extendable delegates.
// signedTx is built from your private key — see Get signed transaction.
const body = {
extendData,
receiver: "YOUR_TRON_ADDRESS",
resourceType: "BANDWIDTH",
signedTx,
};
const res = await fetch(url, {
method: "POST",
headers: {
"content-type": "application/json",
},
body: JSON.stringify(body),
});
const response = await res.json();
// {
// "error": false,
// "message": "Success",
// "data": { "orderId": "6818426a65fa8ea36d119d2c" }
// }
return response;
};import requests
url = "https://api.tronsave.io/v2/extend-request"
headers = {
"Content-Type": "application/json",
}
# extend_data comes from Get extendable delegates.
# signed_tx is built from your private key — see Get signed transaction.
body = {
"extendData": extend_data,
"receiver": "YOUR_TRON_ADDRESS",
"resourceType": "BANDWIDTH",
"signedTx": signed_tx,
}
response = requests.post(url, headers=headers, json=body)
print(response.json())import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ExtendRequestSigned {
public static void main(String[] args) throws Exception {
String url = "https://api.tronsave.io/v2/extend-request";
// extendData comes from Get extendable delegates.
// signedTx is built from your private key — see Get signed transaction.
String body = """
{
"extendData": [
{
"delegator": "YOUR_TRON_ADDRESS",
"isExtend": true,
"extraAmount": 0,
"extendTo": 1746403201
}
],
"receiver": "YOUR_TRON_ADDRESS",
"resourceType": "BANDWIDTH",
"signedTx": { }
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response =
client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
url := "https://api.tronsave.io/v2/extend-request"
// extendData comes from Get extendable delegates.
// signedTx is built from your private key — see Get signed transaction.
body := []byte(`{
"extendData": [
{
"delegator": "YOUR_TRON_ADDRESS",
"isExtend": true,
"extraAmount": 0,
"extendTo": 1746403201
}
],
"receiver": "YOUR_TRON_ADDRESS",
"resourceType": "BANDWIDTH",
"signedTx": {}
}`)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(body))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}use serde_json::json;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let url = "https://api.tronsave.io/v2/extend-request";
// extendData comes from Get extendable delegates.
// signed_tx is built from your private key — see Get signed transaction.
let body = json!({
"extendData": [
{
"delegator": "YOUR_TRON_ADDRESS",
"isExtend": true,
"extraAmount": 0,
"extendTo": 1746403201_i64
}
],
"receiver": "YOUR_TRON_ADDRESS",
"resourceType": "BANDWIDTH",
"signedTx": {}
});
let client = reqwest::blocking::Client::new();
let response = client
.post(url)
.header("Content-Type", "application/json")
.json(&body)
.send()?;
println!("{}", response.text()?);
Ok(())
}