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

# Submit Redemption

> Broadcasts the user-signed redemption transaction to Solana. Pure passthrough.

## Overview

Broadcasts the fully-signed redemption transaction and returns the on-chain signature. Pure passthrough — no database write. The indexer transitions the redemption from `quoted` to `submitted` (or `failed` on revert) once the transaction is confirmed on-chain.

<Tip>
  You may also broadcast directly to any Solana RPC. The indexer will pick up the transaction regardless.
</Tip>

## Headers

<ParamField header="x-api-key" type="string" required>
  A valid `PARTNER` scope key.
</ParamField>

## Path Parameters

<ParamField path="id" type="string" required>
  Redemption identifier (prefixed `red_`) returned by [Quote Redemption](/api-reference/redemptions/quote-redemption).
</ParamField>

## Request Body

<ParamField body="signed_tx" type="string" required>
  Base64-encoded, fully-signed Solana transaction (GRAIL's partial sig + user).
</ParamField>

## Response

<ResponseField name="redemption_id" type="string">
  Echo of the path parameter.
</ResponseField>

<ResponseField name="tx_hash" type="string">
  Solana transaction signature (base58).
</ResponseField>

## Errors

| HTTP | `error`            | When                                                     |
| ---- | ------------------ | -------------------------------------------------------- |
| 400  | `invalid_request`  | Missing or non-string `signed_tx`                        |
| 400  | `broadcast_failed` | Solana RPC rejected the transaction — message has reason |

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST \
    https://grail-stack-dev.onrender.com/v1/redemptions/red_a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d/submit \
    -H "x-api-key: grail_partner_<hex>" \
    -H "Content-Type: application/json" \
    -d '{
      "signed_tx": "AQAAAAABAAEC...<base64>..."
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "redemption_id": "red_a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
    "tx_hash": "4ABC...base58"
  }
  ```
</ResponseExample>
