Relays an EVM transaction through a gasless relayer so the user pays no gas. Requires EVM gas sponsorship enabled for the environment. Returns a request ID for tracking the relay status.
curl --request POST \
--url https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/sponsorTransaction \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"calls": [
{
"data": "<string>",
"target": "<string>",
"value": "<string>"
}
],
"chainId": 123,
"deadline": "<string>",
"nonce": "<string>",
"signature": "<string>",
"relayer": "<string>",
"walletAddress": "<string>",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/sponsorTransaction"
payload = {
"calls": [
{
"data": "<string>",
"target": "<string>",
"value": "<string>"
}
],
"chainId": 123,
"deadline": "<string>",
"nonce": "<string>",
"signature": "<string>",
"relayer": "<string>",
"walletAddress": "<string>",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
calls: [{data: '<string>', target: '<string>', value: '<string>'}],
chainId: 123,
deadline: '<string>',
nonce: '<string>',
signature: '<string>',
relayer: '<string>',
walletAddress: '<string>',
userId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/sponsorTransaction', 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://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/sponsorTransaction",
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([
'calls' => [
[
'data' => '<string>',
'target' => '<string>',
'value' => '<string>'
]
],
'chainId' => 123,
'deadline' => '<string>',
'nonce' => '<string>',
'signature' => '<string>',
'relayer' => '<string>',
'walletAddress' => '<string>',
'userId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/sponsorTransaction"
payload := strings.NewReader("{\n \"calls\": [\n {\n \"data\": \"<string>\",\n \"target\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"chainId\": 123,\n \"deadline\": \"<string>\",\n \"nonce\": \"<string>\",\n \"signature\": \"<string>\",\n \"relayer\": \"<string>\",\n \"walletAddress\": \"<string>\",\n \"userId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/sponsorTransaction")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"calls\": [\n {\n \"data\": \"<string>\",\n \"target\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"chainId\": 123,\n \"deadline\": \"<string>\",\n \"nonce\": \"<string>\",\n \"signature\": \"<string>\",\n \"relayer\": \"<string>\",\n \"walletAddress\": \"<string>\",\n \"userId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/sponsorTransaction")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"calls\": [\n {\n \"data\": \"<string>\",\n \"target\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"chainId\": 123,\n \"deadline\": \"<string>\",\n \"nonce\": \"<string>\",\n \"signature\": \"<string>\",\n \"relayer\": \"<string>\",\n \"walletAddress\": \"<string>\",\n \"userId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"requestId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>"
}{
"error": "No jwt provided!"
}{
"error": "Access Forbidden"
}{
"error": "Internal Server Error"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
ID of the environment
36^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"95b11417-f18f-457f-8804-68e361f9164f"
Body
Request to sponsor an EVM transaction via gasless relay
Array of calls to execute
Show child attributes
Show child attributes
Target chain ID
Unix timestamp deadline for the intent
Nonce for the intent signature
Hex-encoded EIP-712 intent signature
^0x[a-fA-F0-9]*$Relayer contract address (signed as relayer in EIP-712 intent)
^0x[a-fA-F0-9]{40}$User wallet address
^0x[a-fA-F0-9]{40}$Optional EIP-7702 authorization for first-time delegation
Show child attributes
Show child attributes
The end user this relay is sponsored for. Required for server-auth callers.
Response
Relay request created
Response containing the relay request ID
Unique request ID for tracking the relayed transaction
Was this page helpful?
curl --request POST \
--url https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/sponsorTransaction \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"calls": [
{
"data": "<string>",
"target": "<string>",
"value": "<string>"
}
],
"chainId": 123,
"deadline": "<string>",
"nonce": "<string>",
"signature": "<string>",
"relayer": "<string>",
"walletAddress": "<string>",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/sponsorTransaction"
payload = {
"calls": [
{
"data": "<string>",
"target": "<string>",
"value": "<string>"
}
],
"chainId": 123,
"deadline": "<string>",
"nonce": "<string>",
"signature": "<string>",
"relayer": "<string>",
"walletAddress": "<string>",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
calls: [{data: '<string>', target: '<string>', value: '<string>'}],
chainId: 123,
deadline: '<string>',
nonce: '<string>',
signature: '<string>',
relayer: '<string>',
walletAddress: '<string>',
userId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/sponsorTransaction', 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://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/sponsorTransaction",
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([
'calls' => [
[
'data' => '<string>',
'target' => '<string>',
'value' => '<string>'
]
],
'chainId' => 123,
'deadline' => '<string>',
'nonce' => '<string>',
'signature' => '<string>',
'relayer' => '<string>',
'walletAddress' => '<string>',
'userId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/sponsorTransaction"
payload := strings.NewReader("{\n \"calls\": [\n {\n \"data\": \"<string>\",\n \"target\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"chainId\": 123,\n \"deadline\": \"<string>\",\n \"nonce\": \"<string>\",\n \"signature\": \"<string>\",\n \"relayer\": \"<string>\",\n \"walletAddress\": \"<string>\",\n \"userId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/sponsorTransaction")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"calls\": [\n {\n \"data\": \"<string>\",\n \"target\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"chainId\": 123,\n \"deadline\": \"<string>\",\n \"nonce\": \"<string>\",\n \"signature\": \"<string>\",\n \"relayer\": \"<string>\",\n \"walletAddress\": \"<string>\",\n \"userId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/sponsorTransaction")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"calls\": [\n {\n \"data\": \"<string>\",\n \"target\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"chainId\": 123,\n \"deadline\": \"<string>\",\n \"nonce\": \"<string>\",\n \"signature\": \"<string>\",\n \"relayer\": \"<string>\",\n \"walletAddress\": \"<string>\",\n \"userId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"requestId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>"
}{
"error": "No jwt provided!"
}{
"error": "Access Forbidden"
}{
"error": "Internal Server Error"
}