---
title: "Accept RFQ Batch"
method: PUT
path: "/communications/rfq_batches/{rfq_batch_id}/accept"
tags: ["communications"]
---

# Accept RFQ Batch

`PUT /communications/rfq_batches/{rfq_batch_id}/accept`

## Request

- Base URL: `https://external-api.kalshi.com/trade-api/v2`
- URL: `https://external-api.kalshi.com/trade-api/v2/communications/rfq_batches/{rfq_batch_id}/accept`
- Auth: API key in header `KALSHI-ACCESS-KEY` and API key in header `KALSHI-ACCESS-SIGNATURE` and API key in header `KALSHI-ACCESS-TIMESTAMP`

Accept every child RFQ of your RFQ batch on one side, each from the maker quoting it best on that side. Either every child is accepted or none is, and your balance must cover all of them. min_bids protects your price: give every child the best bid you were shown. If a child's best bid is now worse, the accept fails with rfq_batch_quotes_changed and lists that child; a better bid fills at the better price. Each winning maker then confirms its children. They execute once every winner has confirmed, and a missed confirmation closes the whole batch. An accepted batch cannot be cancelled.

## Path parameters

- `rfq_batch_id` string, required

## Request body

- AcceptRFQBatchRequest
  - `accepted_side` 'yes' | 'no', required: The side to accept on every child (yes or no)
  - `min_bids` RFQBatchAcceptLimit[], required: Price protection, exactly one entry per child. A child whose best bid on the accepted side is now below its entry fails the accept.
    - `rfq_id` string, required: UUID of the child RFQ. Pass it unchanged; malformed IDs return HTTP 400.
    - `bid_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
  - `client_order_id` string: Optional idempotency key. Retrying an accept with the same client_order_id returns the result of the accept that succeeded.

## Response `200`

RFQ batch accepted successfully

- AcceptRFQBatchResponse
  - `accepted_side` 'yes' | 'no', required: The side accepted on every child (yes or no)
  - `quotes` Quote[], required: The quote each child was accepted from, in batch order. Each winning maker then confirms its children.
    - `id` string, required: UUID of the quote. Preserve the exact returned string.
    - `rfq_id` string, required: UUID of the RFQ this quote is responding to.
    - `creator_id` string, required: Public communications ID of the quote creator
    - `rfq_creator_id` string, required: Public communications ID of the RFQ creator (pseudonymous). When obscure_creator_id is enabled, other users receive the shared placeholder "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" (SHA-256 of empty input). The creator sees their normal ID. After this quote executes successfully, its counterparty sees the normal public communications ID.
    - `market_ticker` string, required: The ticker of the market this quote is for
    - `contracts_fp` string, required: Fixed-point contract count string (2 decimals, e.g., "10.00"; referred to as "fp" in field names). Requests accept 0-2 decimal places (e.g., "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional contract values (e.g., "2.50") are supported; the minimum granularity is 0.01 contracts.
    - `yes_bid_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
    - `no_bid_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
    - `created_ts` string, date-time, required: Timestamp when the quote was created
    - `updated_ts` string, date-time, required: Timestamp when the quote was last updated
    - `status` 'open' | 'accepted' | 'confirmed' | 'executed' | 'cancelled', required: Current status of the quote
    - `accepted_side` 'yes' | 'no': The side that was accepted (yes or no)
    - `accepted_ts` string, date-time: Timestamp when the quote was accepted
    - `confirmed_ts` string, date-time: Timestamp when the quote was confirmed
    - `executed_ts` string, date-time: Timestamp when the quote was executed
    - `cancelled_ts` string, date-time: Timestamp when the quote was cancelled
    - `rest_remainder` boolean: Whether to rest the remainder of the quote after execution
    - `post_only` boolean: Whether the quote creator's order is post-only (visible when the caller is the quote creator)
    - `cancellation_reason` string: Reason for quote cancellation if cancelled
    - `creator_user_id` string: User ID of the quote creator (private field)
    - `rfq_creator_user_id` string: User ID of the RFQ creator (private field)
    - `rfq_target_cost_dollars` string: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
    - `target_cost_excludes_fees` boolean: True when the RFQ's target cost is principal-only and the contracts-offered sizes were computed without reserving taker fees (fees are charged on top of the target cost).
    - `rfq_creator_order_id` string: Order ID for the RFQ creator (private field)
    - `creator_order_id` string: Order ID for the quote creator (private field)
    - `creator_subaccount` integer: Subaccount number of the quote creator (visible when the caller is the quote creator)
    - `rfq_creator_subaccount` integer: Subaccount number of the RFQ creator (visible when the caller is the RFQ creator)
    - `yes_contracts_fp` string: Fixed-point contract count string (2 decimals, e.g., "10.00"; referred to as "fp" in field names). Requests accept 0-2 decimal places (e.g., "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional contract values (e.g., "2.50") are supported; the minimum granularity is 0.01 contracts.
    - `no_contracts_fp` string: Fixed-point contract count string (2 decimals, e.g., "10.00"; referred to as "fp" in field names). Requests accept 0-2 decimal places (e.g., "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional contract values (e.g., "2.50") are supported; the minimum granularity is 0.01 contracts.

## Other responses

- `400`: Bad request - invalid input
- `401`: Unauthorized - authentication required
- `403`: Forbidden - insufficient permissions
- `404`: Resource not found
- `409`: Conflict - resource already exists or cannot be modified
- `500`: Internal server error

## Changes

- **2026-10-21** `f060c10fe3ab`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/changes/communications/rfq_batches/:rfq_batch_id/accept/put.md)

---

[API](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints.md) - [All operations](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/llms.txt) - [OpenAPI document](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/revisions/e6691cdd1915?raw)
