RathRath Finance
API Reference

Relay Transaction Sync

Submit a transaction and wait for a terminal status or timeout across multiple blockchain networks

Submit Relay Transaction Sync

Submit a transaction to the Tachyon relay network and keep the request open until the transaction reaches a terminal state or the sync timeout expires. This endpoint is useful when you want submission and the latest known transaction status in a single API call.

Endpoint

POST https://tachyon.rath.fi/api/submit-tx-sync

Request Body

ParameterTypeRequiredDescription
txobjectYesTransaction payload. Uses the same transaction fields as /api/submit-tx.
timeoutMsnumberNoMaximum time to wait before returning. Defaults to 30000. Minimum 1000, maximum 120000.
includeReceiptbooleanNoInclude the transaction receipt when available. Defaults to false.
includeRevertInfobooleanNoInclude decoded revert information for failed transactions when available. Defaults to false.

tx Object

ParameterTypeRequiredDescription
chainIdnumberYesThe blockchain network ID where the transaction will be executed
tostringYesThe recipient wallet address or smart contract address. Format varies by chain (hex for EVM, base58 for Solana, named for NEAR)
callDatastringYesEncoded transaction data in hexadecimal format (use '0x' for simple transfers)
valuestringNoAmount of native currency to send in the smallest unit (wei for EVM, lamports for Solana, yoctoNEAR for NEAR, MIST for Sui). Defaults to '0'
labelstringNoOptional human-readable label for easier transaction identification and tracking
gasLimitstringNoOptional gas limit for the transaction. If not specified, it will be estimated automatically. Required for Aptos and Sui transactions
gasPricestringNoGas price in wei (for legacy transactions). Cannot be used with maxFeePerGas or maxPriorityFeePerGas
maxFeePerGasstringNoMaximum fee per gas for EIP-1559 transactions. Must be used together with maxPriorityFeePerGas
maxPriorityFeePerGasstringNoMaximum priority fee per gas for EIP-1559 transactions. Must be used together with maxFeePerGas
maxUSDnumberNoMaximum cost in USD that you're willing to pay for this transaction
shouldBatchInMulticallbooleanNoWhether to batch this transaction in a multicall
retriesnumberNoNumber of retries if transaction fails. Defaults to 0
isAuthenticatedTxbooleanNoEnable authenticated relay mode for additional security and verification. Defaults to false
derivationPathstringNoOptional HD wallet derivation path for transaction signing (useful for multi-account setups)
transactionTypestringNoType of relay transaction: "flash" (default), "authenticated", "funding-signed", or "flash-blocks" (Base/Base Sepolia only)
authorizationListarrayNoOptional list of authorization entries for delegated transactions or batched operations (EIP-7702). Not allowed for flash-blocks transactions

AuthorizationListItem Object

When using authorizationList, each item should contain:

FieldTypeRequiredDescription
chainIdnumberYesChain ID for the authorization
addressstringYesEthereum address (must start with "0x")
noncenumberYesNonce for the authorization
rstringYesSignature r component (must start with "0x")
sstringYesSignature s component (must start with "0x")
yParitynumberYesSignature y parity (0 or 1)
vnumber/bigintNoOptional signature v value

Gas Parameter Rules

  • Legacy transactions: Use gasPrice only
  • EIP-1559 transactions: Use both maxFeePerGas and maxPriorityFeePerGas together
  • You cannot mix gasPrice with maxFeePerGas or maxPriorityFeePerGas

Response

If the transaction reaches a terminal state within the timeout, the API returns 200 OK. If the timeout expires first, the API returns the latest known status with 202 Accepted and timedOut: true.

Success Response (200 OK)

{
  "success": true,
  "data": {
    "id": "68fa3450539a3c9d28bbca33",
    "userId": "68c275846a6ba1c9a2198a8c",
    "to": "0x3dbE34f2C21b3B2980d4dc53f3c7E51e39663F49",
    "callData": "0x",
    "value": "1",
    "chainId": 8453,
    "gasPrice": null,
    "maxFeePerGas": null,
    "maxPriorityFeePerGas": null,
    "gasLimit": "21000",
    "label": "My Base Transaction",
    "status": "EXECUTED",
    "executionTxHash": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
    "timestamp": "2025-10-24T12:34:56.789Z",
    "latency": 2500,
    "costUSD": 0.8400561743999754,
    "retries": 0,
    "isAccountCharged": true,
    "extraData": null,
    "transactionType": "flash"
  },
  "timestamp": "2025-10-24T12:34:59.500Z"
}

Timed Out Response (202 Accepted)

{
  "success": true,
  "data": {
    "id": "68fa3450539a3c9d28bbca33",
    "userId": "68c275846a6ba1c9a2198a8c",
    "to": "0x3dbE34f2C21b3B2980d4dc53f3c7E51e39663F49",
    "callData": "0x",
    "value": "1",
    "chainId": 8453,
    "gasPrice": null,
    "maxFeePerGas": null,
    "maxPriorityFeePerGas": null,
    "gasLimit": "21000",
    "label": "My Base Transaction",
    "status": "PENDING",
    "executionTxHash": null,
    "timestamp": "2025-10-24T12:34:56.789Z",
    "latency": null,
    "costUSD": 0.8400561743999754,
    "retries": 0,
    "isAccountCharged": false,
    "extraData": null,
    "transactionType": "flash",
    "timedOut": true
  },
  "timestamp": "2025-10-24T12:35:26.789Z"
}

Response Fields

FieldTypeDescription
idstringUnique transaction identifier
userIdstringUser ID associated with the transaction
tostringRecipient address
callDatastringEncoded transaction data in hexadecimal format
valuestringAmount transferred in the smallest unit for the target chain
chainIdnumberBlockchain network ID where the transaction was submitted
gasPricestring | nullGas price used for the transaction
maxFeePerGasstring | nullMaximum fee per gas unit for EIP-1559 transactions
maxPriorityFeePerGasstring | nullMaximum priority fee per gas for EIP-1559 transactions
gasLimitstring | nullGas limit for the transaction
labelstringHuman-readable transaction label
statusstringCurrent transaction status (see status values below)
executionTxHashstring | nullOn-chain transaction hash (null until available)
timestampstringISO 8601 timestamp of transaction submission
latencynumber | nullTime taken for execution in milliseconds
costUSDnumberTransaction cost in USD
retriesnumberNumber of retry attempts made
isAccountChargedbooleanWhether the account has been charged for the transaction
extraDataanyAdditional transaction metadata
transactionTypestringRelay transaction type used for execution
errorstring | nullError message if the transaction failed
timedOutbooleanPresent when the sync wait window expires before a terminal state is reached
receiptobjectPresent when includeReceipt is true and a receipt is available
revertobjectPresent when includeRevertInfo is true and revert data is available

Transaction Status Values

StatusDescription
NOT_PICKED_UPTransaction submitted but not yet picked up by relayer
PICKED_UPTransaction picked up by relayer, awaiting execution
PENDINGTransaction is being processed
NEEDS_TO_BE_RETRIEDTransaction execution failed and will be retried
EXECUTEDTransaction successfully executed on-chain
FAILEDTransaction execution failed permanently

Error Response

{
  "success": false,
  "error": {
    "code": "INVALID_PARAMETERS",
    "message": "Missing required transaction parameters",
    "category": "VALIDATION_ERROR",
    "details": {
      "field": "chainId",
      "message": "chainId is required"
    },
    "traceId": "trace_abc123xyz789"
  },
  "timestamp": "2025-10-24T12:34:56.789Z"
}

Example Requests

EVM Chains (Ethereum, Base, Polygon, etc.)

curl -X POST "https://tachyon.rath.fi/api/submit-tx-sync" \
  -H "Content-Type: application/json" \
  -H "api-key: YOUR_API_KEY" \
  -d '{
    "tx": {
      "chainId": 8453,
      "to": "0x3dbE34f2C21b3B2980d4dc53f3c7E51e39663F49",
      "value": "1000000000000000",
      "callData": "0x",
      "label": "My Base Transaction"
    },
    "timeoutMs": 30000
  }'

Aptos

curl -X POST "https://tachyon.rath.fi/api/submit-tx-sync" \
  -H "Content-Type: application/json" \
  -H "api-key: YOUR_API_KEY" \
  -d '{
    "tx": {
      "chainId": 88888888,
      "to": "0x09ebf332aa3e4edad203aff521bd8a47597119de1956885711223ec157eac219",
      "value": "1",
      "callData": "0x",
      "gasLimit": "100",
      "label": "My Aptos Transaction"
    },
    "timeoutMs": 30000
  }'

Note: Gas limit is required for Aptos transactions.

Solana

curl -X POST "https://tachyon.rath.fi/api/submit-tx-sync" \
  -H "Content-Type: application/json" \
  -H "api-key: YOUR_API_KEY" \
  -d '{
    "tx": {
      "chainId": 10100000,
      "to": "BSNsLtDDM1wN8rjEJQaZreVqRhibsUtsEq9m1G2deAm",
      "value": "1000000",
      "callData": "0x",
      "label": "My Solana Transaction"
    },
    "timeoutMs": 30000
  }'

Sui

curl -X POST "https://tachyon.rath.fi/api/submit-tx-sync" \
  -H "Content-Type: application/json" \
  -H "api-key: YOUR_API_KEY" \
  -d '{
    "tx": {
      "chainId": 897796746,
      "to": "0xf78da4499004aa2d594143d69a7804f6f989ab8152de59d3726def827c9fe1f0",
      "value": "100000000",
      "callData": "0x",
      "gasLimit": "3000000",
      "label": "send-native-sui"
    },
    "timeoutMs": 30000
  }'

Note: Gas limit is required for Sui transactions. Value is denominated in MIST (1 SUI = 10^9 MIST).

NEAR

curl -X POST "https://tachyon.rath.fi/api/submit-tx-sync" \
  -H "Content-Type: application/json" \
  -H "api-key: YOUR_API_KEY" \
  -d '{
    "tx": {
      "chainId": 7777777,
      "to": "deeprice6887.near",
      "value": "1000000000000000000000000",
      "callData": "0x",
      "label": "My NEAR Transaction"
    },
    "timeoutMs": 30000
  }'

Starknet

curl -X POST "https://tachyon.rath.fi/api/submit-tx-sync" \
  -H "Content-Type: application/json" \
  -H "api-key: YOUR_API_KEY" \
  -d '{
    "tx": {
      "to": "0x021Af6FEc4753c4C7C248Dc68d1B43ed721f0246e9dC8A9e5b7d74Ff3373764B",
      "callData": "0x",
      "value": "1",
      "chainId": 23448594291968334,
      "label": "send strk",
      "retries": 0
    },
    "timeoutMs": 30000
  }'

Advanced Examples

Include Receipt

curl -X POST "https://tachyon.rath.fi/api/submit-tx-sync" \
  -H "Content-Type: application/json" \
  -H "api-key: YOUR_API_KEY" \
  -d '{
    "tx": {
      "chainId": 8453,
      "to": "0x3dbE34f2C21b3B2980d4dc53f3c7E51e39663F49",
      "value": "1000000000000000",
      "callData": "0x",
      "label": "Receipt Example"
    },
    "timeoutMs": 45000,
    "includeReceipt": true
  }'

Include Revert Information

curl -X POST "https://tachyon.rath.fi/api/submit-tx-sync" \
  -H "Content-Type: application/json" \
  -H "api-key: YOUR_API_KEY" \
  -d '{
    "tx": {
      "chainId": 8453,
      "to": "0x3dbE34f2C21b3B2980d4dc53f3c7E51e39663F49",
      "value": "0",
      "callData": "0xdeadbeef",
      "label": "Failed Transaction Example"
    },
    "timeoutMs": 45000,
    "includeRevertInfo": true
  }'

Continue Tracking After Timeout

If the response includes timedOut: true, continue checking the transaction with the standard relay status endpoint using the returned id:

curl "https://tachyon.rath.fi/api/tx?id=68fa3450539a3c9d28bbca33" \
  -H "api-key: YOUR_API_KEY"

On this page