Post Send Transaction
About 2 min
Overview
The Send Transaction API provides two formats for submitting Solana transactions: standard JSON-RPC 2.0 format and custom REST API format.
Service Information
- Base URL:
http://ams.node1.trade - Authentication:
Authorization Header required - Protocol: HTTP/HTTPS
API Endpoints
JSON-RPC Transaction Submission
Request Type: POST
Submit transactions using JSON-RPC 2.0 specification.
Request Format:
{
"jsonrpc": "2.0",
"id": 1,
"method": "sendBundle",
"params": [
[
"base64_encoded_transaction_1",
"base64_encoded_transaction_2"
],
{
"encoding": "base64"
}
]
}Request Parameters:
| params | description |
|---|---|
| jsonrpc | Fixed value "2.0" |
| id | Request ID for response matching |
| method | Fixed value "sendBundle" |
| params | Parameter array |
| - params[0] | Encoding configuration object |
| - params[1] | 单元格 |
| - encoding | fixed as "base64" |
Request Headers:
Content-Type: application/json
Authorization: YOUR_API_KEYSuccess Response:
{
"jsonrpc": "2.0",
"result": "5XHA7ofPAf3FaLUAY3kT52c...",
"id": 1
}Error Response:
{
"jsonrpc": "2.0",
"error": {
"code": -1009,
"message": "Missing or invalid Authorization header",
"data": null
},
"id": null
}Error Codes:
1009:Missing or invalid Authorization header1010:Transaction length too short or doesn't meet requirements1013:Bundle method setting error, requires sendBundle
Custom REST API Transaction Submission
POST /api/v2/submit-batch
Submit transactions using custom REST API format.
Request Format:
{
"transactions": [
"base64_encoded_transaction_1",
"base64_encoded_transaction_2"
]
}Request Parameters:
transactions:Array of base64-encoded transactions (optional, defaults to empty array)
Request Headers:
Content-Type: application/json
Authorization: YOUR_API_KEYSuccess Response:
{
"success": true,
"code": 200,
"message": "The transaction was submitted successfully, but the status of the transaction is pending.",
"data": {
"signatures": [
"5XHA7ofPAf3FaLUAY3kT52c...",
"4cmupyS9kyiEbfsW8kZkyEh..."
]
}
}Error Response:
{
"success": false,
"code": 1009,
"message": "Missing or invalid Authorization header",
"data": {
"signatures": []
}
}Error Codes:
1009:Missing or invalid Authorization header1010:Transaction length too short or doesn't meet requirements
Transaction Limits
- Maximum Transactions: 4 transactions per submission
- Transaction Format: All transactions must be valid base64 encoded
- Minimum Tip: Each transaction must include at least 0.001 SOL tip
Best Practices
Tip Integration Recommendation
It's recommended to include the tip directly in the original transaction rather than creating a separate tip transaction, regardless of the number of transactions. This approach:
- Reduces transaction count and complexity
- Improves transaction success rate
- Minimizes gas costs
- Provides better atomicity
- Ensures consistent transaction ordering
Example Code
JavaScript/Node.js
JSON-RPC Format
const axios = require('axios');
async function submitTransactionRPC(transactions, apiKey) {
const payload = {
jsonrpc: "2.0",
id: 1,
method: "sendBundle",
params: [
transactions,
{ encoding: "base64" }
]
};
const response = await axios.post('http://ams.node1.trade/', payload, {
headers: {
'Content-Type': 'application/json',
'Authorization': apiKey
}
});
return response.data;
}Custom API Format
async function submitTransactionAPI(transactions, apiKey) {
const payload = {
transactions: transactions
};
const response = await axios.post('http://ams.node1.trade/api/v2/submit-batch', payload, {
headers: {
'Content-Type': 'application/json',
'Authorization': apiKey
}
});
return response.data;
}Python
JSON-RPC Format
import requests
def submit_transaction_rpc(transactions, api_key):
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "sendBundle",
"params": [
transactions,
{"encoding": "base64"}
]
}
headers = {
'Content-Type': 'application/json',
'Authorization': api_key
}
response = requests.post('http://ams.node1.trade/',
json=payload,
headers=headers)
return response.json()Custom API Format
def submit_transaction_api(transactions, api_key):
payload = {
"transactions": transactions
}
headers = {
'Content-Type': 'application/json',
'Authorization': api_key
}
response = requests.post('http://ams.node1.trade/api/v2/submit-batch',
json=payload,
headers=headers)
return response.json()