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

# Submit an execution

> Hand a signed quote to the keeper, which simulates, submits and pays gas.

The keeper leader simulates the settlement first. If it passes, it broadcasts the transaction and the
response is `202 submitted`. If it fails, nothing moved and the response is `200 requote`.

<ParamField header="Idempotency-Key" type="string">Up to 128 characters. A repeat with the same key returns the first execution with `duplicate: true`.</ParamField>

<Tabs>
  <Tab title="EVM">
    <ParamField body="quoteId" type="string" required />

    <ParamField body="signature" type="hex" required>The taker's signature over the quote's `typedData`.</ParamField>
    <ParamField body="erc2612" type="object">`{ value, deadline, v, r, s }`: an EIP-2612 permit for Permit2, when the sell token supports it and is not yet approved.</ParamField>
  </Tab>

  <Tab title="Solana">
    <ParamField body="quoteId" type="string" required />

    <ParamField body="transaction" type="string" required>The quote's transaction, base64, with the taker's signature added. At most 1,644 characters.</ParamField>
  </Tab>
</Tabs>

## Responses

| Status | Body                                                                                                                                                                                                                  |
| ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `202`  | `{ quoteId, executionId, status: "submitted", txHash }`                                                                                                                                                               |
| `200`  | `{ quoteId, executionId, status: "requote", reason }`: the simulation failed, nothing moved. Reasons starting with `taker:` are the taker's to fix, such as `taker:insufficient_balance` or `taker:blockhash_expired` |
| `200`  | `{ …, duplicate: true }`: the idempotency key was seen before                                                                                                                                                         |
| `400`  | `invalid_request`, `bad_signature`, `bad_transaction` (Solana), `taker_not_ready` with `reason` and `detail`, `idempotency_key_too_long`                                                                              |
| `404`  | `quote_not_found`                                                                                                                                                                                                     |
| `409`  | `quote_not_open` with the quote's `status`, `quote_expired`, `wrong_chain`                                                                                                                                            |
| `429`  | `rate_limited`                                                                                                                                                                                                        |
| `503`  | `broadcast_failed` with `reason`: the network refused the transaction, nothing moved, sign again while the quote is open. `not_leader`: retry after 2 seconds                                                         |

<RequestExample>
  ```bash EVM theme={null}
  curl -s https://relay-production-f175.up.railway.app/v1/executions \
    -H 'content-type: application/json' -H 'Idempotency-Key: 3b1f…' \
    -d '{ "quoteId": "5f1c…", "signature": "0x…" }'
  ```

  ```bash Solana theme={null}
  curl -s https://relay-production-f175.up.railway.app/v1/executions \
    -H 'content-type: application/json' \
    -d '{ "quoteId": "5f1c…", "transaction": "AQAAAA…" }'
  ```
</RequestExample>

<ResponseExample>
  ```json 202 Submitted theme={null}
  { "quoteId": "5f1c…", "executionId": "c07d…", "status": "submitted", "txHash": "0x…" }
  ```

  ```json 200 Requote theme={null}
  { "quoteId": "5f1c…", "executionId": "c07d…", "status": "requote", "reason": "taker:insufficient_balance" }
  ```
</ResponseExample>
