# sendTransaction

> Submits a signed transaction to the cluster and returns its signature immediately.

Source: https://docs.constant-k.com/rpc/http/sendtransaction/

`sendTransaction` forwards a fully signed, wire-encoded transaction toward the current and upcoming slot leaders, returning its first signature as soon as the node accepts it for forwarding. This is not confirmation that the transaction landed or executed; `getSignatureStatuses`, polled afterward, or a subscription, reports what happened on-chain.

By default the node runs a preflight simulation and rejects the submission up front on failure (invalid blockhash, insufficient funds, a program error). Skipping preflight only makes sense when the transaction is already known to be well-formed.

- Transport: HTTP, JSON-RPC 2.0 `POST` to `https://rpc-newyork.constant-k.com/?api-key=YOUR_API_KEY` (New York) or `https://rpc-frankfurt.constant-k.com/?api-key=YOUR_API_KEY` (Frankfurt) or `https://rpc-amsterdam.constant-k.com/?api-key=YOUR_API_KEY` (Amsterdam). The key also works as an `x-api-key` header.
- Category: Transactions
- Availability: All plans
- Rate limits: Free 1/s · Operator 15/s · Blade Runner 50/s · Nexus 200/s

## Parameters

`params` is a positional JSON array, in this order:

- `transaction` (string, required): The fully signed transaction, wire-encoded per the `encoding` config field.
- `config` (object, optional): Optional configuration.
  - `skipPreflight` (boolean, optional, default `false`): Skips the node's local simulation before forwarding; faster, but a doomed transaction then fails on-chain, or never lands, instead of being rejected early with a specific reason.
  - `preflightCommitment` (string, optional, one of `finalized`, `confirmed`, `processed`, default `"finalized"`): Bank state to run the preflight simulation against. Ignored when `skipPreflight` is true.
  - `encoding` (string, optional, one of `base58`, `base64`, default `"base58"`): Wire encoding of the `transaction` param. `base64` is more reliable than `base58` for large, especially versioned, transactions, which some clients no longer support sending as `base58`.
  - `maxRetries` (integer, optional): Maximum number of times the node's own transaction-forwarding service should rebroadcast this transaction while waiting for it to land. Omit to use the node's default retry behavior.
  - `minContextSlot` (integer, optional): Minimum slot the node must have processed before running preflight.

## Result

- `result` (string, optional): The transaction's first signature, base-58 encoded — returned on acceptance for forwarding, not on confirmation.

## Example: Submit a signed transaction

Request:

```bash
curl "https://rpc-newyork.constant-k.com/?api-key=YOUR_API_KEY" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "sendTransaction",
    "params": [
      "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEDAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn+FC3snklcKaC4AI41/WXOqqbQMa3Q2SpXEuAf+b+LEBAgIAAQwCAAAAQEIPAAAAAAA=",
      { "encoding": "base64" }
    ]
  }'
```

Response:

```json
{
  "jsonrpc": "2.0",
  "result": "2z8eZ8gdw5Az5vwTd9V6f5pCe2ENyaK3VaDQGR7AZf64wR6HJ1k93LpytXKRanxYtEpCVVPia6wRTFRLQfTWFa23",
  "id": 1
}
```

## Notes

- The **network** row above is constant-k's normal, best-effort forwarding over the standard TPU path. A separate **staked / SWQoS** allowance forwards through constant-k's staked connection, which leaders prioritize under Solana's stake-weighted QoS: Free unavailable, Operator 1/s, Blade Runner 5/s, Nexus 20/s.
- The example transaction is a syntactically valid legacy SystemProgram transfer with an all-zero placeholder signature, not a real keypair; submitting it as-is is rejected for a bad signature, since only a transaction signed by its actual keypair is accepted.
- Preflight simulation failures come back as a JSON-RPC error at send time, with logs attached.
- A transaction using Address Lookup Tables (version 0) requires `base64`; some client libraries cannot represent the larger versioned wire format as `base58` at all.

