Skip to main content
POST
/
kalshi
/
quote
Kalshi Quote
curl --request POST \
  --url https://pm-t1.bxingupdate.com/bvapi/kalshi/quote \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "marketId": "KXHIGHNY-26FEB19-T70",
  "side": "YES",
  "action": "BUY",
  "venue": "kalshi",
  "amount": 123,
  "shares": 123,
  "userPublicKey": "<string>",
  "destinationWallet": "<string>",
  "source": "<string>",
  "skillSlug": "<string>",
  "reasoning": "<string>"
}
'
{
  "quoteId": "<string>",
  "expiresAt": "<string>",
  "unsignedTransaction": "<string>",
  "previewOnly": true,
  "kycRequired": true,
  "geoblocked": true,
  "venue": "<string>",
  "marketId": "<string>",
  "side": "<string>",
  "action": "<string>",
  "amount": "<string>",
  "shares": "<string>"
}
Returns an unsigned Solana transaction from DFlow. The agent signs it locally and submits via POST /kalshi/submit. Your private key never leaves your machine.

Notes

  • Supports both agent and UI flows.
  • BUY requires KYC when userPublicKey is provided.
  • When BUY and userPublicKey is missing, server returns previewOnly=true for quote preview.
  • Response is raw JSON (not wrapped by global ApiResponse interceptor).

Request fields

FieldTypeRequiredDescription
venuestringNodefault kalshi
marketIdstringYesmarket identifier
sidestringYesYES or NO
actionstringYesBUY or SELL
amountnumberBUY requiredbuy amount
sharesnumberSELL requiredsell shares
userPublicKeystringNoSolana wallet
destinationWalletstringNodestination wallet
sourcestringNosource tag
skillSlugstringNoskill tag
reasoningstringNostrategy reason

Example

curl -X POST "https://pm-t1.bxingupdate.com/bvapi/kalshi/quote" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "marketId": "KXHIGHNY-26FEB19-T70",
    "side": "YES",
    "action": "BUY",
    "amount": 10,
    "userPublicKey": "8Yj7Dfp8oS3wkt2uP12xMz9VfF7ZzBv4qfB8Zbe8vXJ1",
    "source": "sdk:kalshi-weather",
    "skillSlug": "kalshi-weather-trader",
    "reasoning": "NOAA forecast indicates edge"
  }'
Quotes expire in ~5 minutes. Sign and call POST /kalshi/submit promptly. If you receive Quote expired or not found, request a new quote.

Response

{
  "quoteId": "qt_1234567890",
  "expiresAt": "1713604800000",
  "unsignedTransaction": "AQAB...",
  "previewOnly": false,
  "kycRequired": false,
  "geoblocked": false,
  "venue": "kalshi",
  "marketId": "KXHIGHNY-26FEB19-T70",
  "side": "YES",
  "action": "BUY",
  "amount": "10",
  "shares": "0"
}

Authorizations

Authorization
string
header
default:YOUR_API_KEY
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
marketId
string
required
Example:

"KXHIGHNY-26FEB19-T70"

side
enum<string>
required
Available options:
YES,
NO
action
enum<string>
required
Available options:
BUY,
SELL
venue
string
default:kalshi
amount
number

BUY 时传入下单金额

shares
number

SELL 时传入卖出份额

userPublicKey
string

用户 Solana 钱包地址

destinationWallet
string
source
string
skillSlug
string
reasoning
string

Response

200 - application/json

Unsigned Kalshi quote

quoteId
string
expiresAt
string
unsignedTransaction
string
previewOnly
boolean
kycRequired
boolean
geoblocked
boolean
venue
string
marketId
string
side
string
action
string
amount
string
shares
string