> ## Documentation Index
> Fetch the complete documentation index at: https://docs.etherscan.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Transaction Page

> The endpoints behind a transaction page on etherscan.io.

export const EndpointShowcase = ({image, alt, items}) => {
  const [active, setActive] = useState(null);
  const [selected, setSelected] = useState(null);
  const current = active != null ? active : selected;
  const accent = "#0784C3";
  const PAD = 7;
  const epHref = ep => ep.href || (ep.slug ? "/api-reference/endpoint/" + ep.slug : null);
  const tierBadge = tier => <span style={{
    display: "inline-block",
    verticalAlign: "middle",
    fontSize: "9px",
    fontWeight: 700,
    lineHeight: 1.35,
    letterSpacing: "0.04em",
    textTransform: "uppercase",
    padding: "0.15em 0.45em",
    borderRadius: "0.35em",
    background: "#0784C3",
    color: "#ffffff",
    whiteSpace: "nowrap"
  }}>
      {tier}
    </span>;
  const scrollToItem = i => {
    setSelected(i);
    if (typeof document !== "undefined") {
      const el = document.getElementById("eps-" + i);
      if (el && el.scrollIntoView) el.scrollIntoView({
        behavior: "smooth",
        block: "center"
      });
    }
  };
  return <div>
      {}
      <div className="not-prose">
        <div className="relative w-full overflow-hidden rounded-xl border border-zinc-950/10 dark:border-white/10">
          <img src={image} alt={alt} className="block w-full select-none" />
          {items.map((it, i) => it.region ? <button key={i} type="button" onMouseEnter={() => setActive(i)} onMouseLeave={() => setActive(null)} onClick={() => scrollToItem(i)} aria-label={it.label} className="absolute rounded-md transition-all duration-150 cursor-pointer" style={{
    left: "calc(" + it.region.x + "% - " + PAD + "px)",
    top: "calc(" + it.region.y + "% - " + PAD + "px)",
    width: "calc(" + it.region.w + "% + " + PAD * 2 + "px)",
    height: "calc(" + it.region.h + "% + " + PAD * 2 + "px)",
    border: "2px solid " + (current === i ? accent : "rgba(7,132,195,0.35)"),
    background: current === i ? "rgba(7,132,195,0.16)" : "transparent",
    boxShadow: current === i ? "0 0 0 3px rgba(7,132,195,0.25)" : "none"
  }}>
                <span className="absolute -top-2.5 -left-2.5 w-5 h-5 rounded-full text-white text-[11px] font-semibold flex items-center justify-center shadow" style={{
    background: accent,
    opacity: current === i ? 1 : 0.75
  }}>
                  {i + 1}
                </span>
              </button> : null)}
        </div>

        <p className="mt-2 text-[11px] text-zinc-400 dark:text-zinc-500">
          Hover an area to find it on the page. Select it to jump to the endpoints below.
        </p>
      </div>

      {}
      <ol>
        {items.map((it, i) => {
    const isOn = current === i;
    return <li key={i} id={"eps-" + i} onMouseEnter={() => setActive(i)} onMouseLeave={() => setActive(null)} className="scroll-mt-24">
              <strong className={isOn ? "text-[#0784C3]" : undefined}>{it.label}</strong>
              {it.note ? " (" + it.note + ")" : null}
              <ul>
                {(it.endpoints || []).map((ep, j) => <li key={j}>
                    <a href={epHref(ep)}>{ep.path}</a>
                    {ep.tier ? <> {tierBadge(ep.tier)}</> : null}
                    {ep.desc ? ": " + ep.desc : null}
                  </li>)}
                {it.explore ? <li>
                    {it.explore.pre}
                    <a href={it.explore.href}>{it.explore.linkText}</a>
                    {it.explore.post}
                  </li> : null}
              </ul>
            </li>;
  })}
      </ol>
    </div>;
};

A [transaction page](https://etherscan.io/tx/0x558b5e8573d3455f064a3a71a0e90013239ee91d4a99f7a6bf4f284d2503bbab) on etherscan.io is built from the Proxy, Transactions, Accounts, and Logs endpoints. The list below maps each part of the page to the endpoint behind it. One API key works across all 60+ [supported chains](/supported-chains); set `chainid` to choose one.

export const items = [{
  label: "Transaction details",
  region: {
    x: 2.5,
    y: 39,
    w: 68,
    h: 4
  },
  endpoints: [{
    path: "/proxy/eth_getTransactionByHash",
    slug: "ethgettransactionbyhash",
    desc: "Full transaction details by hash, including from, to, value, and gas."
  }]
}, {
  label: "Status",
  region: {
    x: 2.5,
    y: 44,
    w: 31,
    h: 3.8
  },
  endpoints: [{
    path: "/transaction/gettxreceiptstatus",
    slug: "gettxreceiptstatus",
    desc: "Whether the transaction succeeded or failed."
  }, {
    path: "/transaction/getstatus",
    slug: "getstatus",
    desc: "Contract execution error status."
  }]
}, {
  label: "Internal transactions",
  region: {
    x: 7.5,
    y: 22,
    w: 7,
    h: 3.3
  },
  endpoints: [{
    path: "/account/txlistinternal",
    slug: "txlistinternal-txhash",
    desc: "Internal transactions executed within this transaction."
  }]
}, {
  label: "Logs",
  region: {
    x: 15,
    y: 22,
    w: 6,
    h: 3.3
  },
  endpoints: [{
    path: "/logs/getLogs",
    slug: "getlogs",
    desc: "Event logs by address and topic."
  }]
}];

<EndpointShowcase image="https://mintcdn.com/etherscan/PrmCI8xWhLgr8YZ-/images/transaction-page.png?fit=max&auto=format&n=PrmCI8xWhLgr8YZ-&q=85&s=5b806025e59c13fd15fa1633f6d0beb3" alt="Etherscan transaction page" items={items} width="2482" height="1598" data-path="images/transaction-page.png" />
