---
title: "Amend a live Kalshi order"
method: POST
path: "/portfolio/orders/{orderId}/amend"
tags: ["Trading"]
---

# Amend a live Kalshi order

`POST /portfolio/orders/{orderId}/amend`

## Request

- Base URL: `https://arena-predictions.com/api/v1`
- URL: `https://arena-predictions.com/api/v1/portfolio/orders/{orderId}/amend`
- Auth: HTTP bearer

Amends a live Kalshi order for the key owner. Scope trade:write:kalshi. Paper orders are not amended here. Requires a trading key saved in Settings and Arena Basic. The PEM is not in the request or the answer.

## Path parameters

- `orderId` string, uuid, required

## Request body

- object
  - `updatedPriceCents` integer
  - `updatedCount` integer

## Response `200`

The amended live order. mode is live.

- OrderResult
  - `status` 'executed' | 'resting' | 'canceled', required: canceled: an ioc or fok that did not fill. Nothing was spent.
  - `action` 'buy' | 'sell', required
  - `type` 'market' | 'limit', required
  - `idempotencyKey` string, uuid, required
  - `replayed` boolean, required: True when this idempotencyKey was used before: the stored order, nothing new placed.
  - `originalCreatedAt` string, date-time, nullable, required: On a replay: when the order was first placed.
  - `order` OrderDetail, required
    - `orderId` string, uuid, required
    - `action` 'buy' | 'sell' | 'null', nullable, required
    - `instrumentId` string, nullable, required
    - `instrumentLabel` string, nullable, required
    - `instrumentSide` 'yes' | 'no' | 'null', nullable, required
    - `orderSide` 'yes' | 'no' | 'null', nullable, required
    - `contracts` integer, required
    - `filledContracts` integer, required
    - `remainingContracts` integer, required
    - `limitCents` integer, nullable, required: Your own limit.
    - `holdDollars` number, required
    - `timeInForce` string, nullable, required
    - `expiresAt` string, date-time, nullable, required
    - `status` string, nullable, required
    - `statedProbPct` integer, nullable
    - `placedVia` string, nullable
    - `placedPrivate` boolean
    - `createdAt` string, date-time, nullable, required
    - `marketTicker` string, nullable: Only while the venue-data switch is on.
    - `type` 'limit', required
    - `cancelReason` string, nullable, required: user, expired, not_filled, market_closed, market_resolved, position_closed, and so on.
    - `tradeId` string, uuid, nullable, required: The position it opened or closed, once executed.
    - `fillPriceCents` integer, nullable: Only while the venue-data switch is on.
  - `trade` Trade, required
    - `tradeId` string, uuid, required
    - `instrumentId` string, nullable, required: The Arena instrument the market lists; null when not mapped.
    - `instrumentLabel` string, nullable, required: The instrument's YES side in words.
    - `instrumentSide` 'yes' | 'no' | 'null', nullable, required: The side of the instrument held.
    - `boughtSide` 'yes' | 'no' | 'null', nullable, required: The side of the market bought.
    - `contracts` integer, required
    - `costDollars` number, required: Paper dollars paid.
    - `statedProbPct` integer, nullable, required: The probability you stated when placing, if any.
    - `placedVia` string, nullable, required
    - `placedPrivate` boolean, required
    - `parlayId` string, uuid, nullable, required
    - `fillVenue` string, required
    - `openedAt` string, date-time, nullable, required
    - `marketTicker` string, nullable: Only while the venue-data switch is on.
    - `entryCents` number, nullable: Only while the venue-data switch is on.
    - `status` 'open' | 'won' | 'lost' | 'settled_push' | 'cancelled' | 'sold' | 'null', nullable, required
    - `closedAt` string, date-time, nullable, required
    - `closeReason` string, nullable, required
    - `pnlDollars` number, nullable, required
    - `resolvedOutcome` 'yes' | 'no' | 'push' | 'void' | 'null', nullable, required: The instrument's result.
  - `fillVenue` 'kalshi' | 'novig' | 'polymarket' | 'null', nullable, required: Where the fill was priced. Paper only: nothing is sent there. The first leg when the ticket split.
  - `fills` object[]: Present when route best split one ticket across venues. priceCents is omitted while venue data is off.
    - `venue` 'kalshi' | 'novig' | 'polymarket', required
    - `contracts` number, required
    - `priceCents` integer
  - `mode` 'paper', required
  - `venueData` boolean, required
  - `fillPriceCents` integer, nullable: Only while the venue-data switch is on.
  - `organization` object: Present when X-Arena-Org selected an organization sandbox. Absent on the personal account.
    - `id` string, uuid, required
    - `slug` string, nullable: The organization's slug. Null when the sandbox did not name one.

## Other responses

- `400`: invalid_request.
- `401`: Missing, malformed, unknown, revoked or expired key.
- `402`: membership_required.
- `403`: insufficient_scope: the key does not carry trade:write:kalshi.
- `409`: kalshi_key_missing: no trading key is saved.
- `503`: trading_off or live_trading_unavailable.

---

[API](https://skmtc.dev/arena-predictions/apis/arena-api.md) · [All operations](https://skmtc.dev/arena-predictions/apis/arena-api/llms.txt) · [OpenAPI document](https://skmtc.dev/arena-predictions/apis/arena-api/revisions/9d89d166dae6?raw)
