Kalshi communications API

Request-for-quote (RFQ) endpoints

OpenAPI Specification

kalshi-communications-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Kalshi Trade API Manual Endpoints account communications API
  version: 3.19.0
  description: Manually defined OpenAPI spec for endpoints being migrated to spec-first approach
servers:
- url: https://external-api.kalshi.com/trade-api/v2
  description: Production Trade API server
- url: https://api.elections.kalshi.com/trade-api/v2
  description: Production shared API server, also supported
- url: https://external-api.demo.kalshi.co/trade-api/v2
  description: Demo Trade API server
- url: https://demo-api.kalshi.co/trade-api/v2
  description: Demo shared API server, also supported
tags:
- name: communications
  description: Request-for-quote (RFQ) endpoints
paths:
  /communications/id:
    get:
      operationId: GetCommunicationsID
      summary: Get Communications ID
      description: ' Endpoint for getting the communications ID of the logged-in user.'
      tags:
      - communications
      security:
      - kalshiAccessKey: []
        kalshiAccessSignature: []
        kalshiAccessTimestamp: []
      responses:
        '200':
          description: Communications ID retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCommunicationsIDResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /communications/rfqs:
    get:
      operationId: GetRFQs
      summary: Get RFQs
      description: ' Endpoint for getting RFQs'
      tags:
      - communications
      security:
      - kalshiAccessKey: []
        kalshiAccessSignature: []
        kalshiAccessTimestamp: []
      parameters:
      - $ref: '#/components/parameters/CursorQuery'
      - $ref: '#/components/parameters/SingleEventTickerQuery'
      - $ref: '#/components/parameters/MarketTickerQuery'
      - $ref: '#/components/parameters/SubaccountQuery'
      - name: limit
        in: query
        description: Parameter to specify the number of results per page. Defaults to 100.
        schema:
          type: integer
          format: int32
          minimum: 1
          maximum: 100
          default: 100
      - name: status
        in: query
        description: Filter RFQs by status
        schema:
          type: string
      - name: creator_user_id
        in: query
        description: Filter RFQs by creator user ID
        deprecated: true
        schema:
          type: string
      - name: user_filter
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/UserFilter'
          x-go-type-skip-optional-pointer: true
        x-oapi-codegen-extra-tags:
          validate: omitempty,oneof=self
      responses:
        '200':
          description: RFQs retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRFQsResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    post:
      operationId: CreateRFQ
      summary: Create RFQ
      description: ' Endpoint for creating a new RFQ. You can have a maximum of 100 open RFQs at a time.'
      tags:
      - communications
      security:
      - kalshiAccessKey: []
        kalshiAccessSignature: []
        kalshiAccessTimestamp: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRFQRequest'
      responses:
        '201':
          description: RFQ created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRFQResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '409':
          $ref: '#/components/responses/ConflictError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /communications/rfqs/{rfq_id}:
    get:
      operationId: GetRFQ
      summary: Get RFQ
      description: ' Endpoint for getting a single RFQ by id'
      tags:
      - communications
      security:
      - kalshiAccessKey: []
        kalshiAccessSignature: []
        kalshiAccessTimestamp: []
      parameters:
      - $ref: '#/components/parameters/RfqIdPath'
      responses:
        '200':
          description: RFQ retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRFQResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      operationId: DeleteRFQ
      summary: Delete RFQ
      description: ' Endpoint for deleting an RFQ by ID'
      tags:
      - communications
      security:
      - kalshiAccessKey: []
        kalshiAccessSignature: []
        kalshiAccessTimestamp: []
      parameters:
      - $ref: '#/components/parameters/RfqIdPath'
      responses:
        '204':
          description: RFQ deleted successfully
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /communications/quotes:
    get:
      operationId: GetQuotes
      summary: Get Quotes
      description: ' Endpoint for getting quotes'
      tags:
      - communications
      security:
      - kalshiAccessKey: []
        kalshiAccessSignature: []
        kalshiAccessTimestamp: []
      parameters:
      - $ref: '#/components/parameters/CursorQuery'
      - $ref: '#/components/parameters/SingleEventTickerQuery'
      - $ref: '#/components/parameters/MarketTickerQuery'
      - name: limit
        in: query
        description: Parameter to specify the number of results per page. Defaults to 500.
        schema:
          type: integer
          format: int32
          minimum: 1
          maximum: 500
          default: 500
      - name: status
        in: query
        description: Filter quotes by status
        schema:
          type: string
          x-go-type-skip-optional-pointer: true
      - name: quote_creator_user_id
        in: query
        description: Filter quotes by quote creator user ID
        deprecated: true
        schema:
          type: string
          x-go-type-skip-optional-pointer: true
      - name: user_filter
        in: query
        required: false
        description: Filter for quotes created by the authenticated user.
        schema:
          $ref: '#/components/schemas/UserFilter'
          x-go-type-skip-optional-pointer: true
        x-oapi-codegen-extra-tags:
          validate: omitempty,oneof=self
      - name: rfq_user_filter
        in: query
        required: false
        description: Filter for quotes responding to RFQs created by the authenticated user.
        schema:
          $ref: '#/components/schemas/UserFilter'
          x-go-type-skip-optional-pointer: true
        x-oapi-codegen-extra-tags:
          validate: omitempty,oneof=self
      - name: rfq_creator_user_id
        in: query
        description: Filter quotes by RFQ creator user ID
        deprecated: true
        schema:
          type: string
          x-go-type-skip-optional-pointer: true
      - name: rfq_creator_subtrader_id
        in: query
        description: Filter quotes by RFQ creator subtrader ID (FCM members only)
        schema:
          type: string
          x-go-type-skip-optional-pointer: true
      - name: rfq_id
        in: query
        description: Filter quotes by RFQ ID
        schema:
          type: string
          x-go-type-skip-optional-pointer: true
      responses:
        '200':
          description: Quotes retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetQuotesResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    post:
      operationId: CreateQuote
      summary: Create Quote
      description: ' Endpoint for creating a quote in response to an RFQ'
      x-mint:
        content: '<Note>

          **Rate limit:** 2 tokens per request. Other endpoints use the default cost of 10 tokens per request unless noted on their own page. See [Rate Limits and Tiers](/getting_started/rate_limits).

          </Note>

          '
      tags:
      - communications
      security:
      - kalshiAccessKey: []
        kalshiAccessSignature: []
        kalshiAccessTimestamp: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateQuoteRequest'
      responses:
        '201':
          description: Quote created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateQuoteResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /communications/quotes/{quote_id}:
    get:
      operationId: GetQuote
      summary: Get Quote
      description: ' Endpoint for getting a particular quote'
      tags:
      - communications
      security:
      - kalshiAccessKey: []
        kalshiAccessSignature: []
        kalshiAccessTimestamp: []
      parameters:
      - $ref: '#/components/parameters/QuoteIdPath'
      responses:
        '200':
          description: Quote retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetQuoteResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      operationId: DeleteQuote
      summary: Delete Quote
      description: ' Endpoint for deleting a quote, which means it can no longer be accepted.'
      x-mint:
        content: '<Note>

          **Rate limit:** 2 tokens per request. Other endpoints use the default cost of 10 tokens per request unless noted on their own page. See [Rate Limits and Tiers](/getting_started/rate_limits).

          </Note>

          '
      tags:
      - communications
      security:
      - kalshiAccessKey: []
        kalshiAccessSignature: []
        kalshiAccessTimestamp: []
      parameters:
      - $ref: '#/components/parameters/QuoteIdPath'
      responses:
        '204':
          description: Quote deleted successfully
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /communications/quotes/{quote_id}/accept:
    put:
      operationId: AcceptQuote
      summary: Accept Quote
      description: ' Endpoint for accepting a quote. This will require the quoter to confirm'
      tags:
      - communications
      security:
      - kalshiAccessKey: []
        kalshiAccessSignature: []
        kalshiAccessTimestamp: []
      parameters:
      - $ref: '#/components/parameters/QuoteIdPath'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AcceptQuoteRequest'
      responses:
        '204':
          description: Quote accepted successfully
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /communications/quotes/{quote_id}/confirm:
    put:
      operationId: ConfirmQuote
      summary: Confirm Quote
      description: ' Endpoint for confirming a quote. This will start a timer for order execution'
      tags:
      - communications
      security:
      - kalshiAccessKey: []
        kalshiAccessSignature: []
        kalshiAccessTimestamp: []
      parameters:
      - $ref: '#/components/parameters/QuoteIdPath'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmptyResponse'
      responses:
        '204':
          description: Quote confirmed successfully
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  responses:
    UnauthorizedError:
      description: Unauthorized - authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFoundError:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequestError:
      description: Bad request - invalid input
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ConflictError:
      description: Conflict - resource already exists or cannot be modified
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    CreateQuoteRequest:
      type: object
      required:
      - rfq_id
      - yes_bid
      - no_bid
      - rest_remainder
      properties:
        rfq_id:
          type: string
          description: The ID of the RFQ to quote on
        yes_bid:
          type: string
          $ref: '#/components/schemas/FixedPointDollars'
          description: The bid price for YES contracts, in dollars
        no_bid:
          type: string
          $ref: '#/components/schemas/FixedPointDollars'
          description: The bid price for NO contracts, in dollars
        rest_remainder:
          type: boolean
          description: Whether to rest the remainder of the quote after execution
        post_only:
          type: boolean
          description: If true, the quote creator's resting order will be cancelled rather than crossed if it would take liquidity. Defaults to false.
        subaccount:
          type: integer
          description: Optional subaccount number to place the quote under (0 for primary, 1-32 for subaccounts)
    GetRFQResponse:
      type: object
      required:
      - rfq
      properties:
        rfq:
          $ref: '#/components/schemas/RFQ'
          description: The details of the requested RFQ
    Quote:
      type: object
      required:
      - id
      - rfq_id
      - creator_id
      - rfq_creator_id
      - market_ticker
      - contracts_fp
      - yes_bid_dollars
      - no_bid_dollars
      - created_ts
      - updated_ts
      - status
      properties:
        id:
          type: string
          description: Unique identifier for the quote
        rfq_id:
          type: string
          description: ID of the RFQ this quote is responding to
        creator_id:
          type: string
          description: Public communications ID of the quote creator
        rfq_creator_id:
          type: string
          description: Public communications ID of the RFQ creator
          x-go-type-skip-optional-pointer: true
        market_ticker:
          type: string
          description: The ticker of the market this quote is for
        contracts_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: String representation of the number of contracts in the quote
        yes_bid_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Bid price for YES contracts, in dollars
        no_bid_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Bid price for NO contracts, in dollars
        created_ts:
          type: string
          format: date-time
          description: Timestamp when the quote was created
        updated_ts:
          type: string
          format: date-time
          description: Timestamp when the quote was last updated
        status:
          type: string
          description: Current status of the quote
          enum:
          - open
          - accepted
          - confirmed
          - executed
          - cancelled
        accepted_side:
          type: string
          description: The side that was accepted (yes or no)
          enum:
          - 'yes'
          - 'no'
        accepted_ts:
          type: string
          format: date-time
          description: Timestamp when the quote was accepted
        confirmed_ts:
          type: string
          format: date-time
          description: Timestamp when the quote was confirmed
        executed_ts:
          type: string
          format: date-time
          description: Timestamp when the quote was executed
        cancelled_ts:
          type: string
          format: date-time
          description: Timestamp when the quote was cancelled
        rest_remainder:
          type: boolean
          description: Whether to rest the remainder of the quote after execution
        post_only:
          type: boolean
          description: Whether the quote creator's order is post-only (visible when the caller is the quote creator)
        cancellation_reason:
          type: string
          description: Reason for quote cancellation if cancelled
          x-go-type-skip-optional-pointer: true
        creator_user_id:
          type: string
          description: User ID of the quote creator (private field)
          x-go-type-skip-optional-pointer: true
        rfq_creator_user_id:
          type: string
          description: User ID of the RFQ creator (private field)
          x-go-type-skip-optional-pointer: true
        rfq_target_cost_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Total value requested in the RFQ in dollars
        rfq_creator_order_id:
          type: string
          description: Order ID for the RFQ creator (private field)
          x-go-type-skip-optional-pointer: true
        creator_order_id:
          type: string
          description: Order ID for the quote creator (private field)
          x-go-type-skip-optional-pointer: true
        creator_subaccount:
          type: integer
          description: Subaccount number of the quote creator (visible when the caller is the quote creator)
        rfq_creator_subaccount:
          type: integer
          description: Subaccount number of the RFQ creator (visible when the caller is the RFQ creator)
        yes_contracts_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: Number of YES contracts offered in the quote (fixed-point)
        no_contracts_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: Number of NO contracts offered in the quote (fixed-point)
    EmptyResponse:
      type: object
      description: An empty response body
    ErrorResponse:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Human-readable error message
        details:
          type: string
          description: Additional details about the error, if available
        service:
          type: string
          description: The name of the service that generated the error
    CreateRFQRequest:
      type: object
      required:
      - market_ticker
      - rest_remainder
      properties:
        market_ticker:
          type: string
          description: The ticker of the market for which to create an RFQ
        contracts:
          type: integer
          description: The number of contracts for the RFQ. Whole contracts only. Contracts may be provided via contracts or contracts_fp; if both provided they must match.
          x-go-type-skip-optional-pointer: true
        contracts_fp:
          $ref: '#/components/schemas/FixedPointCount'
          nullable: true
          description: String representation of the number of contracts for the RFQ. Contracts may be provided via contracts or contracts_fp; if both provided they must match.
        target_cost_centi_cents:
          type: integer
          format: int64
          description: 'DEPRECATED: The target cost for the RFQ in centi-cents. Use target_cost_dollars instead.'
          deprecated: true
          x-go-type-skip-optional-pointer: true
        target_cost_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: The target cost for the RFQ in dollars
          x-go-type-skip-optional-pointer: true
        rest_remainder:
          type: boolean
          description: Whether to rest the remainder of the RFQ after execution
        replace_existing:
          type: boolean
          description: Whether to delete existing RFQs as part of this RFQ's creation
          default: false
          x-go-type-skip-optional-pointer: true
        subtrader_id:
          type: string
          description: The subtrader to create the RFQ for (FCM members only)
          x-go-type-skip-optional-pointer: true
        subaccount:
          type: integer
          description: The subaccount number to create the RFQ for (direct members only; 0 for primary, 1-32 for subaccounts)
          x-go-type-skip-optional-pointer: true
    GetRFQsResponse:
      type: object
      required:
      - rfqs
      properties:
        rfqs:
          type: array
          items:
            $ref: '#/components/schemas/RFQ'
          description: List of RFQs matching the query criteria
        cursor:
          type: string
          description: Cursor for pagination to get the next page of results
          x-go-type-skip-optional-pointer: true
    FixedPointCount:
      type: string
      description: 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 on markets with fractional trading enabled; the minimum granularity is 0.01 contracts. Integer contract count fields are legacy and will be deprecated; when both integer and fp fields are provided, they must match.
      example: '10.00'
    UserFilter:
      type: string
      enum:
      - self
      x-enum-varnames:
      - UserFilterSelf
      description: Omit or leave empty to return all results. Use `self` to filter by the authenticated user.
    CreateRFQResponse:
      type: object
      required:
      - id
      properties:
        id:
          type: string
          description: The ID of the newly created RFQ
    CreateQuoteResponse:
      type: object
      required:
      - id
      properties:
        id:
          type: string
          description: The ID of the newly created quote
    RFQ:
      type: object
      required:
      - id
      - creator_id
      - contracts_fp
      - market_ticker
      - status
      - created_ts
      properties:
        id:
          type: string
          description: Unique identifier for the RFQ
        creator_id:
          type: string
          description: Public communications ID of the RFQ creator.
        market_ticker:
          type: string
          description: The ticker of the market this RFQ is for
        contracts_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: String representation of the number of contracts requested in the RFQ
        target_cost_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Total value of the RFQ in dollars
        status:
          type: string
          description: Current status of the RFQ (open, closed)
          enum:
          - open
          - closed
        created_ts:
          type: string
          format: date-time
          description: Timestamp when the RFQ was created
        mve_collection_ticker:
          type: string
          description: Ticker of the MVE collection this market belongs to
          x-go-type-skip-optional-pointer: true
        mve_selected_legs:
          type: array
          x-omitempty: true
          items:
            $ref: '#/components/schemas/MveSelectedLeg'
          description: Selected legs for the MVE collection
          x-go-type-skip-optional-pointer: true
        rest_remainder:
          type: boolean
          description: Whether to rest the remainder of the RFQ after execution
        cancellation_reason:
          type: string
          description: Reason for RFQ cancellation if cancelled
          x-go-type-skip-optional-pointer: true
        creator_user_id:
          type: string
          description: User ID of the RFQ creator (private field)
          x-go-type-skip-optional-pointer: true
        creator_subaccount:
          type: integer
          description: Subaccount number of the RFQ creator (visible when the caller is the RFQ creator)
        cancelled_ts:
          type: string
          format: date-time
          description: Timestamp when the RFQ was cancelled
        updated_ts:
          type: string
          format: date-time
          description: Timestamp when the RFQ was last updated
    FixedPointDollars:
      type: string
      description: US dollar amount as a fixed-point decimal string with up to 6 decimal places of precision. This is the maximum supported precision; valid quote intervals for a given market are constrained by that market's price level structure.
      example: '0.5600'
    GetCommunicationsIDResponse:
      type: object
      required:
      - communications_id
      properties:
        communications_id:
          type: string
          description: A public communications ID which is used to identify the user
    AcceptQuoteRequest:
      type: object
      required:
      - accepted_side
      properties:
        accepted_side:
          type: string
          description: The side of the quote to accept (yes or no)
          enum:
          - 'yes'
          - 'no'
    GetQuotesResponse:
      type: object
      required:
      - quotes
      properties:
        quotes:
          type: array
          items:
            $ref: '#/components/schemas/Quote'
          description: List of quotes matching the query criteria
        cursor:
          type: string
          description: Cursor for pagination to get the next page of results
          x-go-type-skip-optional-pointer: true
    MveSelectedLeg:
      type: object
      properties:
        event_ticker:
          type: string
          description: Unique identifier for the selected event
          x-go-type-skip-optional-pointer: true
        market_ticker:
          type: string
          description: Unique identifier for the selected market
          x-go-type-skip-optional-pointer: true
        side:
          type: string
          description: The side of the selected market
          x-go-type-skip-optional-pointer: true
        yes_settlement_value_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          nullable: true
          x-omitempty: true
          description: The settlement value of the YES/LONG side of the contract in dollars. Only filled after determination
    GetQuoteResponse:
      type: object
      required:
      - quote
      properties:
        quote:
          $ref: '#/components/schemas/Quote'
          description: The details of the requested quote
  parameters:
    SubaccountQuery:
      name: subaccount
      in: query
      description: Subaccount number (0 for primary, 1-32 for subaccounts). If omitted, defaults to all subaccounts.
      schema:
        type: integer
    CursorQuery:
      name: cursor
      in: query
      description: Pagination cursor. Use the cursor value returned from the previous response to get the next page of results. Leave empty for the first page.
      schema:
        type: string
        x-go-type-skip-optional-pointer: true
    SingleEventTickerQuery:
      name: event_ticker
      in: query
      description: Event ticker to filter by. Only a single event ticker is supported.
      schema:
        type: string
        x-go-type-skip-optional-pointer: true
    QuoteIdPath:
      name: quote_id
      in: path
      required: true
      description: Quote ID
      schema:
        type: string
    RfqIdPath:
      name: rfq_id
      in: path
      required: true
      description: RFQ ID
      schema:
        type: string
    MarketTickerQuery:
      name: market_ticker
      in: query
      description: Filter by market ticker
      schema:
        type: string
        x-go-type-skip-optional-pointer: true
  securitySchemes:
    kalshiAccessKey:
      type: apiKey
      in: header
      name: KALSHI-ACCESS-KEY
      description: Your API key ID
    kalshiAccessSignature:
      type: apiKey
      in: header
      name: KALSHI-ACCESS-SIGNATURE
      description: RSA-PSS signature of the request
    kalshiAccessTimestamp:
      type: apiKey
      in: header
      name: KALSHI-ACCESS-TIMESTAMP
      description: Request timestamp in milliseconds