curl --request POST \
--url https://api.beta.getpara.com/v1/wallets/{walletId}/transactions/{transactionId}/resume \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"reviewId": "<string>"
}
'import requests
url = "https://api.beta.getpara.com/v1/wallets/{walletId}/transactions/{transactionId}/resume"
payload = { "reviewId": "<string>" }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({reviewId: '<string>'})
};
fetch('https://api.beta.getpara.com/v1/wallets/{walletId}/transactions/{transactionId}/resume', 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.beta.getpara.com/v1/wallets/{walletId}/transactions/{transactionId}/resume",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reviewId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.beta.getpara.com/v1/wallets/{walletId}/transactions/{transactionId}/resume"
payload := strings.NewReader("{\n \"reviewId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.post("https://api.beta.getpara.com/v1/wallets/{walletId}/transactions/{transactionId}/resume")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"reviewId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.beta.getpara.com/v1/wallets/{walletId}/transactions/{transactionId}/resume")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reviewId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"sponsoredGas": true,
"transactionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"userOperationHash": "<string>",
"stage": "requires_action",
"reviewId": "<string>",
"actualGasCost": "<string>",
"executionMode": "sponsored",
"txHash": "<string>"
}{
"code": "INVALID_REQUEST",
"message": "type must be one of EVM, SOLANA, COSMOS, STELLAR, SUI"
}{
"code": "UNAUTHORIZED",
"message": "secret api key not provided"
}{
"code": "INVALID_REQUEST",
"message": "<string>",
"transactionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"failureStage": "mpc_sign",
"failureCode": "<string>",
"signedTransaction": "<string>"
}{
"code": "NOT_FOUND",
"message": "wallet not found"
}{
"code": "INVALID_REQUEST",
"message": "<string>",
"transactionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"failureStage": "mpc_sign",
"failureCode": "<string>",
"signedTransaction": "<string>"
}{
"code": "RATE_LIMITED",
"message": "Rate limit exceeded, try again shortly."
}{
"code": "INTERNAL_ERROR",
"message": "Internal Server Error"
}{
"code": "SPONSORSHIP_UNAVAILABLE",
"message": "Gas sponsorship is unavailable"
}Resume Sponsored Transaction
Gas sponsorship pilot only. Continue an existing operation after its policy review
is approved with approveReview
(see Ordinary review). Current partner and wallet access are required. Supply the applicable
reviewId; the original transfer intent cannot be changed through this endpoint.
Calling transfer again with its original idempotency key only retrieves the
operation and does not trigger continuation. A later step can require another review.
202 accepts continuation; policy and per-operation gas-cap checks run asynchronously.
curl --request POST \
--url https://api.beta.getpara.com/v1/wallets/{walletId}/transactions/{transactionId}/resume \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"reviewId": "<string>"
}
'import requests
url = "https://api.beta.getpara.com/v1/wallets/{walletId}/transactions/{transactionId}/resume"
payload = { "reviewId": "<string>" }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({reviewId: '<string>'})
};
fetch('https://api.beta.getpara.com/v1/wallets/{walletId}/transactions/{transactionId}/resume', 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.beta.getpara.com/v1/wallets/{walletId}/transactions/{transactionId}/resume",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reviewId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.beta.getpara.com/v1/wallets/{walletId}/transactions/{transactionId}/resume"
payload := strings.NewReader("{\n \"reviewId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.post("https://api.beta.getpara.com/v1/wallets/{walletId}/transactions/{transactionId}/resume")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"reviewId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.beta.getpara.com/v1/wallets/{walletId}/transactions/{transactionId}/resume")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reviewId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"sponsoredGas": true,
"transactionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"userOperationHash": "<string>",
"stage": "requires_action",
"reviewId": "<string>",
"actualGasCost": "<string>",
"executionMode": "sponsored",
"txHash": "<string>"
}{
"code": "INVALID_REQUEST",
"message": "type must be one of EVM, SOLANA, COSMOS, STELLAR, SUI"
}{
"code": "UNAUTHORIZED",
"message": "secret api key not provided"
}{
"code": "INVALID_REQUEST",
"message": "<string>",
"transactionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"failureStage": "mpc_sign",
"failureCode": "<string>",
"signedTransaction": "<string>"
}{
"code": "NOT_FOUND",
"message": "wallet not found"
}{
"code": "INVALID_REQUEST",
"message": "<string>",
"transactionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"failureStage": "mpc_sign",
"failureCode": "<string>",
"signedTransaction": "<string>"
}{
"code": "RATE_LIMITED",
"message": "Rate limit exceeded, try again shortly."
}{
"code": "INTERNAL_ERROR",
"message": "Internal Server Error"
}{
"code": "SPONSORSHIP_UNAVAILABLE",
"message": "Gas sponsorship is unavailable"
}Authorizations
Path Parameters
Body
Response
Sponsored operation continued or awaiting further review
requires_action needs policy review; submission_unknown means submission
may have happened; included awaits receipt verification. delivery_unverified means
an included operation has unresolved token-delivery evidence. These stages are
nonterminal; do not resend the transfer with a new key.
requires_action, preparing, signed, submission_unknown, included, delivery_unverified Applicable policy review ID. Approve it as an ordinary review
with approveReview, then use it with
the explicit resume endpoint.