POST
/
transactions
cURL
curl -X POST 'https://core-api-server.onrender.com/transactions' \
  -H 'Content-Type: application/json' \
  -d '{
    "transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEDArczbMia1tLmq2poQiNXU2xnkV4S4gK9bS6Kz..."
  }'
{
"message": "Transaction submitted and confirmed successfully!",
"details": {
"transactionId": "7DpZxJy3wKzRqTnV8mYpH4xL9WvNfEtY2jDw5mVpQcfG",
"explorerUrl": "https://explorer.solana.com/address/7DpZxJy3wKzRqTnV8mYpH4xL9WvNfEtY2jDw5mVpQcfG?cluster=devnet"
}
}
Rate Limit: 100 requests per 15 minutes
Content-Type: application/json

What This Endpoint Does

1

Transaction Deserialization

Decodes the Base64 transaction string and deserializes it into a Solana Transaction object
2

Server-Side Signing

Adds the server’s fee payer signature to complete the transaction (partial signing)
3

Network Submission

Submits the fully-signed transaction to the Solana network using sendRawTransaction
4

Transaction Confirmation

Waits for and confirms the transaction on the blockchain with ‘confirmed’ commitment level
5

Result Formatting

Returns the transaction signature and explorer link for verification

Integration Examples

With Register Endpoint

When registering files with self wallets, the flow typically involves:
  1. /register endpoint returns a prepared transaction (Base64)
  2. Client signs the transaction with their wallet
  3. Client calls /submit-transaction with the signed transaction
// After receiving prepared transaction from /register
const signedTransaction = await wallet.signTransaction(preparedTransaction);
const serialized = signedTransaction.serialize();
const base64Transaction = Buffer.from(serialized).toString('base64');

const result = await fetch('/submit-transaction', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ transaction: base64Transaction })
});

Error Handling Best Practices

try {
  const result = await fetch('/submit-transaction', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ transaction: base64Transaction })
  });
  const data = await result.json();
  console.log('Transaction confirmed:', data.details.transactionSignature);
} catch (error) {
  if (error.message.includes('simulation failed')) {
    console.error('Transaction would fail - check account balances and permissions');
  } else if (error.message.includes('Missing')) {
    console.error('Invalid request format');
  } else {
    console.error('Network or server error:', error.message);
  }
}
Important: This endpoint requires pre-signed transactions. It does not handle transaction creation or user signing - those must be done client-side or through other endpoints first.
Save the transaction signature from the response for future reference and use the explorer URL to verify the transaction was processed correctly on the blockchain.

Body

application/json

Response

200
application/json

Transaction submitted and confirmed successfully

The response is of type object.