POST /testnet/submit
POST

/v1/testnet/submit

Submit a SIGNED transaction to Testnet through our own node — the contract of POST /submit with the prefix changed. Nothing here signs or holds a seed; fund an account with POST /faucet first

AuthNone — works without a key

Request

POSThttps://api.xrpl.to/v1/testnet/submit
Body
Body fieldsas documented
{ tx_blob, fail_hard? }
curl -X POST 'https://api.xrpl.to/v1/testnet/submit'
No public sample for this one — copy the code and fill in your own values.

Response

No public sample for this endpoint — run the code on the right with your own values to see the response.
Shapeas documented
{
  success,
  took,
  engine_result,
  engine_result_code,
  engine_result_message,
  tx_json,
  hash,
  accepted,
  applied,
  broadcast,
  kept,
  queued,
  account_sequence_available,
  account_sequence_next,
  validated_ledger_index,
  outcome?
}

What it does

Submit a SIGNED transaction to Testnet through our own node — the contract of POST /submit with the prefix changed. Nothing here signs or holds a seed; fund an account with POST /faucet first

Constraints
tx_blob is the signed transaction as hex, max 131KB. Duplicate tx_blob within 30s returns 409.
Notes
engine_result is PRELIMINARY — only a validated ledger is final; follow hash with GET /testnet/tx/{hash} until validated is true or a validated ledger passes the LastLedgerSequence. A 400 with error_code is the node refusing it before processing; outcome:"unknown" (502, 409, or no engine_result) means it may still apply — resolve by hash, never by re-signing on a fresh Sequence. Every response carries hash.
Start at GET /v1/testnet/fixtures: it names live accounts, a busy token, an NFT with offers and one of every ledger object that xrpl.to keeps alive on Testnet, plus a real transaction of every type. Testnet resets without warning; the data is rebuilt from the chain within minutes, and only objects touched since count. Open the Testnet sandbox →
OpenAPI