Update gas sponsorship for a chain
curl --request PATCH \
--url https://api.portalhq.io/api/v3/custodians/me/gas-sponsorship/chains/{chainId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"value": "10"
}'import requests
url = "https://api.portalhq.io/api/v3/custodians/me/gas-sponsorship/chains/{chainId}"
payload = { "value": "10" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({value: '10'})
};
fetch('https://api.portalhq.io/api/v3/custodians/me/gas-sponsorship/chains/{chainId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.portalhq.io/api/v3/custodians/me/gas-sponsorship/chains/{chainId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'value' => '10'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.portalhq.io/api/v3/custodians/me/gas-sponsorship/chains/{chainId}"
payload := strings.NewReader("{\n \"value\": \"10\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.portalhq.io/api/v3/custodians/me/gas-sponsorship/chains/{chainId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"value\": \"10\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.portalhq.io/api/v3/custodians/me/gas-sponsorship/chains/{chainId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"value\": \"10\"\n}"
response = http.request(request)
puts response.read_body{
"chainId": "eip155:11155111",
"currentPeriod": {
"gasAllowanceLimit": "499",
"gasUsage": "0.35080714673101143",
"transactionCount": "3005",
"endsAt": "2026-02-13T17:49:43.000Z"
}
}{
"error": "<string>"
}{
"error": "<string>"
}Gas Sponsorship
Update gas sponsorship for a chain
Updates the maximum gas allowance limit for a specific chain’s gas sponsor.
The value parameter is in ETH/SOL units.
Note: Gas sponsorship must be enabled for your Portal environment.
PATCH
/
custodians
/
me
/
gas-sponsorship
/
chains
/
{chainId}
Update gas sponsorship for a chain
curl --request PATCH \
--url https://api.portalhq.io/api/v3/custodians/me/gas-sponsorship/chains/{chainId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"value": "10"
}'import requests
url = "https://api.portalhq.io/api/v3/custodians/me/gas-sponsorship/chains/{chainId}"
payload = { "value": "10" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({value: '10'})
};
fetch('https://api.portalhq.io/api/v3/custodians/me/gas-sponsorship/chains/{chainId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.portalhq.io/api/v3/custodians/me/gas-sponsorship/chains/{chainId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'value' => '10'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.portalhq.io/api/v3/custodians/me/gas-sponsorship/chains/{chainId}"
payload := strings.NewReader("{\n \"value\": \"10\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.portalhq.io/api/v3/custodians/me/gas-sponsorship/chains/{chainId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"value\": \"10\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.portalhq.io/api/v3/custodians/me/gas-sponsorship/chains/{chainId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"value\": \"10\"\n}"
response = http.request(request)
puts response.read_body{
"chainId": "eip155:11155111",
"currentPeriod": {
"gasAllowanceLimit": "499",
"gasUsage": "0.35080714673101143",
"transactionCount": "3005",
"endsAt": "2026-02-13T17:49:43.000Z"
}
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Portal API Key (Custodian API Key). Pass as a Bearer token in the Authorization header.
Path Parameters
The CAIP-2 chain ID. Be sure the colon (:) is URI-encoded as %3A in the URL.
Body
application/json
The new maximum gas allowance limit in ETH/SOL units.
Response
Gas sponsor updated successfully
Show child attributes
Show child attributes
Only present on Solana entries. null when no gas sponsor has
been configured for that chain yet. The balance and
balanceInBaseUnits fields are null when the RPC balance
lookup fails (the sponsor address is still returned).
Show child attributes
Show child attributes
Was this page helpful?
⌘I