Implementations
- Gelato Gasless SDK
- With 7702 Smart Account
- Relay API Endpoints
Copy
Ask AI
npm install @gelatocloud/gasless viem
Create an API Key
Check out our How-To Guide for detailed instructions on generating an API key.
Initialize Relayer Client
Copy
Ask AI
import { createGelatoEvmRelayerClient, StatusCode, sponsored } from '@gelatocloud/gasless';
import { baseSepolia } from 'viem/chains';
const relayer = createGelatoEvmRelayerClient({
apiKey: process.env.GELATO_API_KEY,
testnet: baseSepolia.testnet
});
Generate Payload
Generate the payload for your target contract function:
Copy
Ask AI
import { encodeFunctionData } from 'viem';
const data = encodeFunctionData({
abi: [{ name: 'increment', type: 'function', inputs: [], outputs: [] }],
functionName: 'increment'
});
Send Transaction
Copy
Ask AI
const id = await relayer.sendTransaction({
chainId: baseSepolia.id,
data: data,
payment: sponsored(),
to: '0xE27C1359cf02B49acC6474311Bd79d1f10b1f8De'
});
console.log(`Gelato transaction id: ${id}`);
const status = await relayer.waitForStatus({ id });
if (status.status === StatusCode.Included) {
console.log(`Transaction hash: ${status.receipt.transactionHash}`);
} else {
console.log(`Transaction failed: ${status.message}`);
}
Copy
Ask AI
npm install @gelatocloud/gasless viem
Create an API Key
Check out our How-To Guide for detailed instructions on generating an API key.
Create Smart Account
Copy
Ask AI
import {
createGelatoSmartAccountClient,
toGelatoSmartAccount,
sponsored,
StatusCode,
} from "@gelatocloud/gasless";
import { createPublicClient, http, type Hex } from "viem";
import { baseSepolia } from "viem/chains";
import { privateKeyToAccount } from "viem/accounts";
const owner = privateKeyToAccount(process.env.PRIVATE_KEY as Hex);
const client = createPublicClient({
chain: baseSepolia,
transport: http(),
});
const account = toGelatoSmartAccount({
client,
owner,
});
Create Relayer Client
Copy
Ask AI
const relayer = await createGelatoSmartAccountClient({
account,
apiKey: process.env.GELATO_API_KEY,
});
Send Transaction
Copy
Ask AI
const result = await relayer.sendTransactionSync({
payment: sponsored(),
calls: [
{
to: "0xE27C1359cf02B49acC6474311Bd79d1f10b1f8De",
data: "0xd09de08a",
},
],
});
if (result.status === StatusCode.Included) {
console.log(`Transaction hash: ${result.receipt.transactionHash}`);
} else {
console.log(`Failed: ${result.message}`);
}
Pass the API key in the
X-API-Key header.Create an API Key
Check out our How-To Guide for detailed instructions on generating an API key.
Send Relay Request
Copy
Ask AI
const response = await fetch('https://api.gelato.cloud/rpc', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': API_KEY
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'relayer_sendTransaction',
params: {
chainId: '84532',
to: '0x...',
data: '0x...',
payment: { type: 'sponsored' }
}
})
});
const data = await response.json();
const taskId = data.result;
console.log(`Task ID: ${taskId}`);
Check Task Status
Poll for the transaction status using
relayer_getStatus:Copy
Ask AI
const statusResponse = await fetch('https://api.gelato.cloud/rpc', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': API_KEY
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'relayer_getStatus',
params: { id: taskId }
})
});
const statusData = await statusResponse.json();
const status = statusData.result.status;
// 200 = Included, 400 = Rejected, 500 = Reverted
if (status === 200) {
console.log(`Transaction hash: ${statusData.result.receipt.transactionHash}`);
} else if (status >= 400) {
console.log(`Failed: ${statusData.result.message}`);
}
Sponsor Gas Playground
Additional Resources
- Supported Networks - Full list of supported chains
- Relayer API - Direct API integration