API Reference
Learn how to use Payload's API to send transactions and check metrics.
Table of Contents
Transaction Submission
Submit a Solana transaction for processing through Payload's optimized RPC network.
POSThttps://api.payload.wtf/sendTransaction
Headers
Name | Description | Required |
---|---|---|
Content-Type | Content type of the request body | Yes |
x-mode | RPC provider to use:
| No |
Request Body
The request body should be a base64-encoded serialized Solana transaction. The transaction must include:
- Recent blockhash (within last 150 blocks)
- Tip payment to configured TIP_ADDRESS
- Minimum tip amount: 10,000 lamports (0.00001 SOL)
# Get recent blockhash
curl -X POST https://api.mainnet-beta.solana.com \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getLatestBlockhash",
"params": [{"commitment": "processed"}]
}' | jq .
# Submit transaction
curl -X POST https://api.payload.wtf/sendTransaction \
-H "Content-Type: text/plain" \
-H "x-mode: quicknode" \
--data-raw "<base64-encoded-transaction>"
Success Response
{
"signature": "58pJBo6rEHG4zAouC6NcUGZDCahwEx8BMhY6f4YZSQ68U6BVzSPiJ1yYi5CnFzR1LivbuLdhnhConWSFV7XunfPq",
"status": "submitted"
}
Error Responses
400 Bad Request:
{
"error": "Tip verification failed",
"details": "No transfer to tip address found"
}
{
"error": "Tip too low",
"details": "Minimum tip is 10,000 lamports, received 5000"
}
{
"error": "Invalid blockhash",
"details": "Blockhash has expired. Please use a newer blockhash"
}
502 Bad Gateway:
{
"error": "RPC error",
"details": "<error details from Solana RPC>"
}
Transaction Processing
Transactions are validated for:
- Valid base64 encoding
- Recent blockhash
- Tip payment to correct address
- Minimum tip amount
Transactions are submitted to Solana with:
- skipPreflight: true
- Base64 encoding
Transactions are queued for post-processing and an immediate response with signature is returned.
Get Latest Metrics
Retrieve the latest processed transactions from the cache.
GEThttps://api.payload.wtf/metrics/latest
Headers
No headers required
Example Request
curl https://api.payload.wtf/metrics/latest | jq .
Success Response
{
"transactions": [{
"signature": "58pJBo6rEHG4z...",
"mode": "quicknode",
"status": "success",
"tip_lamports": 10001,
"submitted_block": "...",
"resolved_block": "block_123456",
"landed_block": "block_123456",
"received_at": 1234567890123,
"block_time": 1234567890
}],
"count": 1
}
Response Fields
Field | Description |
---|---|
transactions | Array of transaction objects |
signature | Transaction signature |
slot | Slot number when transaction was processed |
status | Transaction status (e.g., "success", "failed") |
received_at | Timestamp when transaction was received (milliseconds since epoch) |
block_time | Optional timestamp when transaction was included in a block (seconds since epoch) |
count | Number of transactions returned |
Notes
- Data is served from KV cache for fast access
- Returns up to 100 most recent transactions
- Transactions are ordered by most recent first
- Empty response indicates no transactions have been processed yet
- All timestamps are in UTC
Notes
- Transactions are processed asynchronously
- Use the metrics endpoint to check transaction status
- All transactions skip preflight checks for faster processing
- Tip verification is performed before submission
- Blockhash must be recent (within last 150 blocks)
Next Steps
Ready to start sending transactions? Check out our complete implementation guide:
Send Transactions Guide →