---
title: "Create RFQ"
method: POST
path: "/rfqs"
tags: ["Rfqs"]
---

# Create RFQ

`POST /rfqs`

Creates an RFQ for the authenticated account.

RFQ creation is asynchronous. Subscribe to the private WebSocket channel
`rfq` before sending the request. A successful HTTP response is `202 Accepted`
and contains a Paradex `request_id`; it confirms only that the command was
queued. The later WebSocket `RESULT` event with the same `request_id` reports
whether the venue accepted the command. On success, the event's top-level
`rfq_id` is the venue-issued identifier used by the read, execute, cancel, and
filtered-subscription APIs.

The request accepts up to 25 legs. It must contain at least one strategy leg,
represented by omitting `price`. At least one strategy leg must have
`side=BUY`, and at least one must have `ratio=1`. A fixed-price hedge leg
includes a strictly positive `price`. All quantities and ratios are positive
decimal strings. Every leg market must exist on Paradex and be available for
RFQ. Each fixed hedge price must be an exact multiple of that market's minimum
price increment. The strategy quantity must be at least the largest minimum
block size among its strategy legs.

An account may hold only one RFQ open at a time, and an RFQ stays open until the
venue closes it. Cancelling is what closes it, but the cancellation is
asynchronous: an account is normally free to create its next RFQ once the
WebSocket `RESULT` event for the cancel reports success, not when the cancel
request is sent. A create issued before that, or immediately after it, may be
rejected by a `RESULT` event saying the account already has an RFQ open, and can
be retried.

The platform selects eligible counterparties; a client-supplied
`counterparties` value is ignored. The optional `strategy` field is a draft
label and is not sent to the venue.

The optional `max_slippage` bounds how far this RFQ may execute from mark, as a
fraction of the underlying's spot price, for this RFQ only. It replaces the
configured bound, must be greater than zero and at most 1, and applies to every
underlying the strategy touches. It sets both the collateral held against the
RFQ and the limit the venue enforces on quotes, so a wider value holds more
collateral and accepts a worse execution. The market's own price band still
applies, so a value beyond it changes neither.

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

## Request body

- RequestsRfqCreateRequest
  - `counterparties` string[] — Reserved for future use; currently ignored for RFQ creation and drafts
  - `is_anonymous` boolean — Whether to hide the taker desk name from RFQ counterparties; ignored for drafts
  - `label` string — User-defined RFQ label; ignored for drafts
  - `legs` RequestsRfqLeg[], required — Strategy and optional fixed-price hedge legs; maximum 25
    - `market` string, required — Paradex market symbol
    - `price` string — Positive fixed price in the instrument's quote currency; set only for hedge legs
    - `ratio` string, required — Positive decimal multiplier for the leg
    - `side` 'BUY' | 'SELL', required — Leg direction
  - `max_slippage` string — MaxSlippage bounds how far this RFQ may execute from mark, as a fraction of underlying spot, replacing the configured bound for this RFQ only. Empty leaves the configured one in place. Ignored for drafts.
  - `quantity` string, required — Positive total strategy size
  - `strategy` string — Draft strategy label; maximum 64 bytes and defaults to custom for drafts; ignored on RFQ create

## 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

---

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