---
title: "Execute RFQ"
method: POST
path: "/rfqs/{rfq_id}/execute"
tags: ["Rfqs"]
---

# Execute RFQ

`POST /rfqs/{rfq_id}/execute`

Queues a taker limit Fill-or-Kill order against an RFQ.

Execution is asynchronous. Subscribe to the private WebSocket channel `rfq`
before sending the request. A `202 Accepted` response contains a Paradex
`request_id` and confirms only that the command was queued. The later
WebSocket `RESULT` event with the same `request_id` reports success or failure;
on success, `result.order_id` is the venue-issued order identifier.

`quantity` must be a positive decimal string. `side` is `BUY` or `SELL`.
`price` is the signed net strategy price, so zero and negative values are valid
for multi-leg credit strategies.

`side` must be a direction the RFQ was accepted for, which its create result
reports as `result.allowed_side`: the direction an RFQ created with a `side` was
committed to, or either direction for a `TWO_WAY` one. An execute on any other
side is rejected by the `RESULT` event, because the collateral held against the
RFQ never covered it. An empty `result.allowed_side` is an RFQ Paradex did not
risk-check, which holds no such collateral and accepts either direction.

Validation or risk-check failures that occur after queueing are reported by
the WebSocket `RESULT` event.

## Path parameters

- `rfq_id` string, required

## Request body

- RequestsRfqExecuteRequest
  - `label` string — User-defined order label
  - `price` string, required — Signed decimal strategy price; zero and negative values are valid
  - `quantity` string, required — Positive decimal strategy quantity
  - `side` 'BUY' | 'SELL', required — Taker order side

## Response `202`

Accepted

- ResponsesRfqAcceptedResponse
  - `accepted_at` integer — Unix milliseconds when the request was queued
  - `request_id` string — request_id identifies this request. It is echoed on the RESULT event delivered later on the WebSocket rfq channel, so a client with several requests in flight can match each outcome to the request that caused it. On Create it is the only identifier available until the venue issues the rfq_id.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden

## Changes

- **2026-08-12** `0574c98df104` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/tradeparadex/apis/paradex-rest-api-2/changes/rfqs/:rfq_id/execute/post.md)

---

[API](https://skmtc.dev/tradeparadex/apis/paradex-rest-api-2.md) · [All operations](https://skmtc.dev/tradeparadex/apis/paradex-rest-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/tradeparadex/paradex-rest-api-2/revisions/a73698fdee53/schema)
