REST
Broadcast pre-signed transactions
Broadcast pre-signed transactions to the P2P network. Each transaction must already carry a valid signature — the relayer does not co-sign. For gasless relaying, use /v1/sign.
POST
/
v1
/
broadcast
Broadcast pre-signed transactions
curl --request POST \
--url https://relayer.xoxno.com/v1/broadcast \
--header 'Content-Type: application/json' \
--data '
{
"transactions": [
{
"nonce": 42,
"value": "1000000000000000000",
"receiver": "erd1qqqqqqqqqqqqqpgq5rf2unca5uen2eqkvlh3re25qk4trspk0n4sy8qlmc",
"sender": "erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th",
"gasPrice": 1000000000,
"gasLimit": 50000,
"data": "c3dhcEV4YWN0QW1vdW50SW4=",
"chainID": "1",
"version": 2,
"signature": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
]
}
'const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
transactions: [
{
nonce: 42,
value: '1000000000000000000',
receiver: 'erd1qqqqqqqqqqqqqpgq5rf2unca5uen2eqkvlh3re25qk4trspk0n4sy8qlmc',
sender: 'erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th',
gasPrice: 1000000000,
gasLimit: 50000,
data: 'c3dhcEV4YWN0QW1vdW50SW4=',
chainID: '1',
version: 2,
signature: 'a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4'
}
]
})
};
fetch('https://relayer.xoxno.com/v1/broadcast', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://relayer.xoxno.com/v1/broadcast"
payload = { "transactions": [
{
"nonce": 42,
"value": "1000000000000000000",
"receiver": "erd1qqqqqqqqqqqqqpgq5rf2unca5uen2eqkvlh3re25qk4trspk0n4sy8qlmc",
"sender": "erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th",
"gasPrice": 1000000000,
"gasLimit": 50000,
"data": "c3dhcEV4YWN0QW1vdW50SW4=",
"chainID": "1",
"version": 2,
"signature": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
] }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)false{
"hashes": [
"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6abcd"
],
"failed": []
}{
"error": "transactions payload cannot be empty"
}Body
application/json
Batch of fully signed transactions to broadcast via P2P gossipsub.
Minimum array length:
1Show child attributes
Show child attributes
⌘I
Broadcast pre-signed transactions
curl --request POST \
--url https://relayer.xoxno.com/v1/broadcast \
--header 'Content-Type: application/json' \
--data '
{
"transactions": [
{
"nonce": 42,
"value": "1000000000000000000",
"receiver": "erd1qqqqqqqqqqqqqpgq5rf2unca5uen2eqkvlh3re25qk4trspk0n4sy8qlmc",
"sender": "erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th",
"gasPrice": 1000000000,
"gasLimit": 50000,
"data": "c3dhcEV4YWN0QW1vdW50SW4=",
"chainID": "1",
"version": 2,
"signature": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
]
}
'const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
transactions: [
{
nonce: 42,
value: '1000000000000000000',
receiver: 'erd1qqqqqqqqqqqqqpgq5rf2unca5uen2eqkvlh3re25qk4trspk0n4sy8qlmc',
sender: 'erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th',
gasPrice: 1000000000,
gasLimit: 50000,
data: 'c3dhcEV4YWN0QW1vdW50SW4=',
chainID: '1',
version: 2,
signature: 'a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4'
}
]
})
};
fetch('https://relayer.xoxno.com/v1/broadcast', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://relayer.xoxno.com/v1/broadcast"
payload = { "transactions": [
{
"nonce": 42,
"value": "1000000000000000000",
"receiver": "erd1qqqqqqqqqqqqqpgq5rf2unca5uen2eqkvlh3re25qk4trspk0n4sy8qlmc",
"sender": "erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th",
"gasPrice": 1000000000,
"gasLimit": 50000,
"data": "c3dhcEV4YWN0QW1vdW50SW4=",
"chainID": "1",
"version": 2,
"signature": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
] }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)false{
"hashes": [
"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6abcd"
],
"failed": []
}{
"error": "transactions payload cannot be empty"
}
