Skip to main content

Usage

const status = await sdk.getTransactionStatus("0x...", bearerToken);

Parameters

ParameterTypeRequiredDescription
hashstringYesTransaction hash (0x...)
bearerTokenstringNoJWT token. Falls back to apiSecretKey if not provided

Return Value

Returns a Promise<TransactionStatusResponse>:
FieldTypeDescription
transactionHashstringTransaction hash
statusOnChainTxStatusCurrent on-chain status (see below)
blockNumbernumber | undefinedBlock number if included in a block
revertReasonstring | undefinedReason if status is REVERTED

OnChainTxStatus Values

StatusDescriptionTerminal
RECEIVEDTransaction received by nodeNo
PENDINGWaiting for inclusionNo
ACCEPTED_ON_L2Confirmed on StarkNet L2No
ACCEPTED_ON_L1Proven on Ethereum L1Yes
REJECTEDRejected by sequencerYes
REVERTEDExecution reverted on-chainYes
NOT_RECEIVEDNot found on networkYes

Example

// Poll for confirmation
const poll = async (hash: string) => {
  const terminalStatuses = ["ACCEPTED_ON_L1", "REJECTED", "REVERTED", "NOT_RECEIVED"];
  const MAX_RETRIES = 60; // 60 retries * 3s = 3 minutes max

  for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
    const { status, revertReason } = await sdk.getTransactionStatus(hash, bearerToken);

    if (terminalStatuses.includes(status)) {
      if (status === "REVERTED") console.error("Reverted:", revertReason);
      return status;
    }

    await new Promise((r) => setTimeout(r, 3000));
  }

  throw new Error(`Transaction ${hash} did not reach terminal status after ${MAX_RETRIES} attempts`);
};