Skip to content
Start Trading

Close Positions

PositionClosePositionsResponse v1().positions().closePositions(PositionClosePositionsParamsparams = PositionClosePositionsParams.none(), RequestOptionsrequestOptions = RequestOptions.none())
DELETE/v1/accounts/{account_id}/positions

Delete all positions within an account.

Closes all positions for the specified trading account.

ParametersExpand Collapse
PositionClosePositionsParams params
Optional<Long> accountId
Optional<Boolean> cancelOrders

Whether to cancel existing open orders for the position before submitting closing orders.

ReturnsExpand Collapse
class PositionClosePositionsResponse:
List<Order> data
String id

Engine-assigned unique identifier for this order (UUID).

long accountId

Account placing the order

formatint64
String clientOrderId

Client-provided identifier echoed back.

LocalDateTime createdAt

Timestamp when order was created (UTC)

formatdate-time
String filledQuantity

Cumulative filled quantity

String instrumentId

Instrument identifier for the traded instrument.

formatuuid
SecurityType instrumentType

Type of security

One of the following:
COMMON_STOCK("COMMON_STOCK")
OPTION("OPTION")
CASH("CASH")
String leavesQuantity

Remaining unfilled quantity

OrderType orderType

Type of order (MARKET, LIMIT, etc.)

One of the following:
MARKET("MARKET")
LIMIT("LIMIT")
STOP("STOP")
STOP_LIMIT("STOP_LIMIT")
TRAILING_STOP("TRAILING_STOP")
TRAILING_STOP_LIMIT("TRAILING_STOP_LIMIT")
OTHER("OTHER")
String quantity

Total order quantity

Side side

Side of the order (BUY, SELL, SELL_SHORT)

One of the following:
BUY("BUY")
SELL("SELL")
SELL_SHORT("SELL_SHORT")
OTHER("OTHER")

Current status of the order

One of the following:
PENDING_NEW("PENDING_NEW")
NEW("NEW")
PARTIALLY_FILLED("PARTIALLY_FILLED")
FILLED("FILLED")
CANCELED("CANCELED")
REJECTED("REJECTED")
EXPIRED("EXPIRED")
PENDING_CANCEL("PENDING_CANCEL")
PENDING_REPLACE("PENDING_REPLACE")
REPLACED("REPLACED")
DONE_FOR_DAY("DONE_FOR_DAY")
STOPPED("STOPPED")
SUSPENDED("SUSPENDED")
CALCULATED("CALCULATED")
OTHER("OTHER")
String symbol

Trading symbol

TimeInForce timeInForce

Time in force instruction

One of the following:
DAY("DAY")
GOOD_TILL_CANCEL("GOOD_TILL_CANCEL")
IMMEDIATE_OR_CANCEL("IMMEDIATE_OR_CANCEL")
FILL_OR_KILL("FILL_OR_KILL")
GOOD_TILL_DATE("GOOD_TILL_DATE")
AT_THE_OPENING("AT_THE_OPENING")
AT_THE_CLOSE("AT_THE_CLOSE")
GOOD_TILL_CROSSING("GOOD_TILL_CROSSING")
GOOD_THROUGH_CROSSING("GOOD_THROUGH_CROSSING")
AT_CROSSING("AT_CROSSING")
OTHER("OTHER")
LocalDateTime updatedAt

Timestamp of the most recent update (UTC)

formatdate-time
String venue

MIC code of the venue where the order is routed

Optional<String> averageFillPrice

Average fill price across all executions When a null/undefined value is observed, it indicates that there is no available data.

Optional<List<String>> details

Contains execution, rejection or cancellation details, if any

Optional<LocalDateTime> expiresAt

Timestamp when the order will expire (UTC). Present when time_in_force is GOOD_TILL_DATE. When a null/undefined value is observed, it indicates it does not apply.

formatdate-time
Optional<Boolean> extendedHours

Whether the order is eligible for extended-hours trading.

Optional<String> limitOffset

Limit offset for trailing stop-limit orders (signed) When a null/undefined value is observed, it indicates it does not apply.

Optional<String> limitPrice

Limit price (for LIMIT and STOP_LIMIT orders) When a null/undefined value is observed, it indicates it does not apply.

Optional<QueueState> queueState

Parent order queue state, present when the order is awaiting release or released. When a null/undefined value is observed, it indicates it does not apply.

One of the following:
AWAITING_RELEASE("AWAITING_RELEASE")
RELEASED("RELEASED")
Optional<LocalDateTime> releasesAt

Scheduled release time for orders awaiting release. When a null/undefined value is observed, it indicates it does not apply.

formatdate-time
Optional<String> stopPrice

Stop price (for STOP and STOP_LIMIT orders) When a null/undefined value is observed, it indicates it does not apply.

Optional<String> trailingLimitPx

Current trailing limit price computed by the trailing strategy When a null/undefined value is observed, it indicates it does not apply.

Optional<String> trailingOffset

Trailing offset amount for trailing orders When a null/undefined value is observed, it indicates it does not apply.

Optional<TrailingOffsetType> trailingOffsetType

Trailing offset type for trailing orders When a null/undefined value is observed, it indicates it does not apply.

One of the following:
PRICE("PRICE")
BPS("BPS")
Optional<String> trailingStopPx

Current trailing stop price computed by the trailing strategy When a null/undefined value is observed, it indicates it does not apply.

Optional<String> trailingWatermarkPx

Trailing watermark price for trailing orders When a null/undefined value is observed, it indicates it does not apply.

Optional<LocalDateTime> trailingWatermarkTs

Trailing watermark timestamp for trailing orders When a null/undefined value is observed, it indicates it does not apply.

formatdate-time
Optional<String> underlyingInstrumentId

Instrument ID of the option’s underlying instrument. Populated only for options orders. A null means one of two things: the order is not an option, so the field does not apply; or the order is an option whose underlier has not yet been resolved. When a null/undefined value is observed, it indicates it does not apply.

formatuuid

Close Positions

package com.clearstreet.api.example;

import com.clearstreet.api.client.ClearStreetClient;
import com.clearstreet.api.client.okhttp.ClearStreetOkHttpClient;
import com.clearstreet.api.models.v1.positions.PositionClosePositionsParams;
import com.clearstreet.api.models.v1.positions.PositionClosePositionsResponse;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        ClearStreetClient client = ClearStreetOkHttpClient.builder()
            .fromEnv()
            .apiKey("My API Key")
            .build();

        PositionClosePositionsResponse response = client.v1().positions().closePositions(0L);
    }
}
{
  "data": [
    {
      "account_id": 19816,
      "average_fill_price": null,
      "client_order_id": "close-positions-20251003-001",
      "created_at": "2025-10-03T14:01:15.000000000Z",
      "filled_quantity": "0",
      "id": "019c0b57-0850-7b0b-8a2c-5ee3fb5a5876",
      "instrument_id": "c3c4c5c6-d3d4-e3e4-f3f4-f5f6f7f8f9fa",
      "instrument_type": "COMMON_STOCK",
      "leaves_quantity": "25",
      "limit_price": null,
      "order_type": "MARKET",
      "quantity": "25",
      "side": "SELL",
      "status": "PENDING_NEW",
      "stop_price": null,
      "symbol": "GOOG",
      "time_in_force": "DAY",
      "updated_at": "2025-10-03T14:01:15.000000000Z",
      "venue": "XNMS"
    }
  ],
  "error": null,
  "metadata": {
    "request_id": "3f4a5b6c-7d8e-9f0a-1b2c-3d4e5f6a7b8c"
  }
}
{
  "error": {
    "code": 400,
    "message": "Failed to parse the request body as JSON: expected `:` at line 2 column 19"
  },
  "metadata": {
    "request_id": "93a7c482-b246-4e15-9618-bcbe0906b815"
  }
}
{
  "error": {
    "code": 403,
    "message": "The caller does not have permission to execute the specified operation"
  },
  "metadata": {
    "request_id": "5518f0c6-58ff-4b4a-81a5-701556d41206"
  }
}
Returns Examples
{
  "data": [
    {
      "account_id": 19816,
      "average_fill_price": null,
      "client_order_id": "close-positions-20251003-001",
      "created_at": "2025-10-03T14:01:15.000000000Z",
      "filled_quantity": "0",
      "id": "019c0b57-0850-7b0b-8a2c-5ee3fb5a5876",
      "instrument_id": "c3c4c5c6-d3d4-e3e4-f3f4-f5f6f7f8f9fa",
      "instrument_type": "COMMON_STOCK",
      "leaves_quantity": "25",
      "limit_price": null,
      "order_type": "MARKET",
      "quantity": "25",
      "side": "SELL",
      "status": "PENDING_NEW",
      "stop_price": null,
      "symbol": "GOOG",
      "time_in_force": "DAY",
      "updated_at": "2025-10-03T14:01:15.000000000Z",
      "venue": "XNMS"
    }
  ],
  "error": null,
  "metadata": {
    "request_id": "3f4a5b6c-7d8e-9f0a-1b2c-3d4e5f6a7b8c"
  }
}
{
  "error": {
    "code": 400,
    "message": "Failed to parse the request body as JSON: expected `:` at line 2 column 19"
  },
  "metadata": {
    "request_id": "93a7c482-b246-4e15-9618-bcbe0906b815"
  }
}
{
  "error": {
    "code": 403,
    "message": "The caller does not have permission to execute the specified operation"
  },
  "metadata": {
    "request_id": "5518f0c6-58ff-4b4a-81a5-701556d41206"
  }
}