Home/Docs/Overview/API Reference

API Reference

Learn how to use Payload's API to send transactions and check metrics.

Transaction Submission

Submit a Solana transaction for processing through Payload's optimized RPC network.

POSThttps://api.payload.wtf/sendTransaction

Headers

NameDescriptionRequired
Content-TypeContent type of the request bodyYes
x-modeRPC provider to use:
  • quicknode - Use Quicknode RPC
  • helius - Use Helius RPC
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

FieldDescription
transactionsArray of transaction objects
signatureTransaction signature
slotSlot number when transaction was processed
statusTransaction status (e.g., "success", "failed")
received_atTimestamp when transaction was received (milliseconds since epoch)
block_timeOptional timestamp when transaction was included in a block (seconds since epoch)
countNumber 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