Sign
curl --request POST \
--url https://testnet.walletkit.com/transactions/sign \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"signer_wallet_address": "<string>",
"unsigned_transaction": {
"to": "<string>",
"value": "<string>",
"input": "<string>",
"gasLimit": "<string>",
"maxPriorityFeePerGas": "<string>",
"maxFeePerGas": "<string>",
"nonce": "<string>"
},
"developer_secret": "<string>",
"user_pin": "<string>"
}
'import requests
url = "https://testnet.walletkit.com/transactions/sign"
payload = {
"signer_wallet_address": "<string>",
"unsigned_transaction": {
"to": "<string>",
"value": "<string>",
"input": "<string>",
"gasLimit": "<string>",
"maxPriorityFeePerGas": "<string>",
"maxFeePerGas": "<string>",
"nonce": "<string>"
},
"developer_secret": "<string>",
"user_pin": "<string>"
}
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({
signer_wallet_address: '<string>',
unsigned_transaction: {
to: '<string>',
value: '<string>',
input: '<string>',
gasLimit: '<string>',
maxPriorityFeePerGas: '<string>',
maxFeePerGas: '<string>',
nonce: '<string>'
},
developer_secret: '<string>',
user_pin: '<string>'
})
};
fetch('https://testnet.walletkit.com/transactions/sign', 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://testnet.walletkit.com/transactions/sign",
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([
'signer_wallet_address' => '<string>',
'unsigned_transaction' => [
'to' => '<string>',
'value' => '<string>',
'input' => '<string>',
'gasLimit' => '<string>',
'maxPriorityFeePerGas' => '<string>',
'maxFeePerGas' => '<string>',
'nonce' => '<string>'
],
'developer_secret' => '<string>',
'user_pin' => '<string>'
]),
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://testnet.walletkit.com/transactions/sign"
payload := strings.NewReader("{\n \"signer_wallet_address\": \"<string>\",\n \"unsigned_transaction\": {\n \"to\": \"<string>\",\n \"value\": \"<string>\",\n \"input\": \"<string>\",\n \"gasLimit\": \"<string>\",\n \"maxPriorityFeePerGas\": \"<string>\",\n \"maxFeePerGas\": \"<string>\",\n \"nonce\": \"<string>\"\n },\n \"developer_secret\": \"<string>\",\n \"user_pin\": \"<string>\"\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://testnet.walletkit.com/transactions/sign")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"signer_wallet_address\": \"<string>\",\n \"unsigned_transaction\": {\n \"to\": \"<string>\",\n \"value\": \"<string>\",\n \"input\": \"<string>\",\n \"gasLimit\": \"<string>\",\n \"maxPriorityFeePerGas\": \"<string>\",\n \"maxFeePerGas\": \"<string>\",\n \"nonce\": \"<string>\"\n },\n \"developer_secret\": \"<string>\",\n \"user_pin\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://testnet.walletkit.com/transactions/sign")
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 \"signer_wallet_address\": \"<string>\",\n \"unsigned_transaction\": {\n \"to\": \"<string>\",\n \"value\": \"<string>\",\n \"input\": \"<string>\",\n \"gasLimit\": \"<string>\",\n \"maxPriorityFeePerGas\": \"<string>\",\n \"maxFeePerGas\": \"<string>\",\n \"nonce\": \"<string>\"\n },\n \"developer_secret\": \"<string>\",\n \"user_pin\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body"<string>"{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Transactions
Sign
Signs a transaction without sending it to the blockchain.
Sign
curl --request POST \
--url https://testnet.walletkit.com/transactions/sign \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"signer_wallet_address": "<string>",
"unsigned_transaction": {
"to": "<string>",
"value": "<string>",
"input": "<string>",
"gasLimit": "<string>",
"maxPriorityFeePerGas": "<string>",
"maxFeePerGas": "<string>",
"nonce": "<string>"
},
"developer_secret": "<string>",
"user_pin": "<string>"
}
'import requests
url = "https://testnet.walletkit.com/transactions/sign"
payload = {
"signer_wallet_address": "<string>",
"unsigned_transaction": {
"to": "<string>",
"value": "<string>",
"input": "<string>",
"gasLimit": "<string>",
"maxPriorityFeePerGas": "<string>",
"maxFeePerGas": "<string>",
"nonce": "<string>"
},
"developer_secret": "<string>",
"user_pin": "<string>"
}
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({
signer_wallet_address: '<string>',
unsigned_transaction: {
to: '<string>',
value: '<string>',
input: '<string>',
gasLimit: '<string>',
maxPriorityFeePerGas: '<string>',
maxFeePerGas: '<string>',
nonce: '<string>'
},
developer_secret: '<string>',
user_pin: '<string>'
})
};
fetch('https://testnet.walletkit.com/transactions/sign', 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://testnet.walletkit.com/transactions/sign",
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([
'signer_wallet_address' => '<string>',
'unsigned_transaction' => [
'to' => '<string>',
'value' => '<string>',
'input' => '<string>',
'gasLimit' => '<string>',
'maxPriorityFeePerGas' => '<string>',
'maxFeePerGas' => '<string>',
'nonce' => '<string>'
],
'developer_secret' => '<string>',
'user_pin' => '<string>'
]),
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://testnet.walletkit.com/transactions/sign"
payload := strings.NewReader("{\n \"signer_wallet_address\": \"<string>\",\n \"unsigned_transaction\": {\n \"to\": \"<string>\",\n \"value\": \"<string>\",\n \"input\": \"<string>\",\n \"gasLimit\": \"<string>\",\n \"maxPriorityFeePerGas\": \"<string>\",\n \"maxFeePerGas\": \"<string>\",\n \"nonce\": \"<string>\"\n },\n \"developer_secret\": \"<string>\",\n \"user_pin\": \"<string>\"\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://testnet.walletkit.com/transactions/sign")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"signer_wallet_address\": \"<string>\",\n \"unsigned_transaction\": {\n \"to\": \"<string>\",\n \"value\": \"<string>\",\n \"input\": \"<string>\",\n \"gasLimit\": \"<string>\",\n \"maxPriorityFeePerGas\": \"<string>\",\n \"maxFeePerGas\": \"<string>\",\n \"nonce\": \"<string>\"\n },\n \"developer_secret\": \"<string>\",\n \"user_pin\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://testnet.walletkit.com/transactions/sign")
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 \"signer_wallet_address\": \"<string>\",\n \"unsigned_transaction\": {\n \"to\": \"<string>\",\n \"value\": \"<string>\",\n \"input\": \"<string>\",\n \"gasLimit\": \"<string>\",\n \"maxPriorityFeePerGas\": \"<string>\",\n \"maxFeePerGas\": \"<string>\",\n \"nonce\": \"<string>\"\n },\n \"developer_secret\": \"<string>\",\n \"user_pin\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body"<string>"{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Headers
string
required
Your WalletKit Project ID can be found on the API Keys page in the WalletKit Dashboard.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Available options:
Ethereum, Polygon, Base, Avalanche, Polkadot, Vara address can only be the ones created in the project.
input of a transaction to be signed.
Show child attributes
Show child attributes
On testnet, the developer_secret is always "testnet-secret". On mainnet, the developer_secret is set by the developer during account activation.
A 6-digit numeric pin that is only known to the user, set during wallet creation. This pin is required to sign transactions from this wallet.
Response
signed transaction. This is the raw transaction that can be sent to the rpc node. e.g. input to eth_sendrawtransaction
The response is of type string.
⌘I