# POST Flat Place Order

Unlike reverse positions, flat placing an order will close any existing position and continue on to place the order regardless of whether or not the position existed. This is useful to ensure you are always cleanly entering a new positions. The equivalent of a webhook signal with the `flatten_first` flag enabled.&#x20;

## Close position and place order

<mark style="color:orange;">`POST`</mark> `/v1/api/accounts/{account}/orders/flatplace`

**Headers**

| Name          | Value              |
| ------------- | ------------------ |
| Content-Type  | `application/json` |
| Authorization | `Bearer <token>`   |

**Path Parameters**

<table><thead><tr><th width="168">Name</th><th width="100">Type</th><th width="106">Required</th><th>Description</th></tr></thead><tbody><tr><td><code>account</code></td><td>string</td><td><mark style="color:red;">Required</mark></td><td>Name of account in NT8</td></tr></tbody></table>

**Body**

<table><thead><tr><th width="167">Name</th><th width="101">Type</th><th width="104">Required</th><th>Description</th></tr></thead><tbody><tr><td><code>instrument</code></td><td>string</td><td><mark style="color:red;">Required</mark></td><td>Name of underlying instrument (e.g., "ES 12-25")</td></tr><tr><td><code>action</code></td><td>string</td><td><mark style="color:red;">Required</mark></td><td>BUY, SELL</td></tr><tr><td><code>quantity</code></td><td>integer</td><td><mark style="color:red;">Required</mark></td><td>Contract quantity of new order</td></tr><tr><td><code>orderType</code></td><td>string</td><td><mark style="color:red;">Required</mark></td><td>MARKET, LIMIT, STOPMARKET, STOPLIMIT</td></tr><tr><td><code>timeInForce</code></td><td>string</td><td><mark style="color:red;">Required</mark></td><td>DAY, GTC</td></tr><tr><td><code>limitPrice</code></td><td>float</td><td>Optional</td><td>Limit price when submitting limit order type</td></tr><tr><td><code>stopPrice</code></td><td>float</td><td>Optional</td><td>Stop price when submitting stop order type</td></tr><tr><td><code>ocoId</code></td><td>string</td><td>Optional</td><td>Create or append to OCO order by ID</td></tr><tr><td><code>strategy</code></td><td>string</td><td>Optional</td><td>ATM strategy name if opening with ATM template</td></tr></tbody></table>

**Code Examples**

{% tabs %}
{% tab title="Python" %}

```python
import requests

token = 'my-secret-token'

url = "https://app.crosstrade.io/v1/api/accounts/Sim101/orders/flatplace"
headers = {
    "Authorization": f"Bearer {token}",
    "Content-Type": "application/json"
}
data = {
    "instrument": "MES 12-25",
    "action": "BUY",
    "orderType": "MARKET",
    "quantity": 1,
    "timeInForce": "DAY"
    # "limitPrice": 5500
    # "stopPrice": 0,
    # "ocoId": "abc123",
    # "strategy": "MyAtmStrategy"
}

try:
    response = requests.post(url, headers=headers, json=data)
    print(f"Response Code: {response.status_code}, Response Text: {response.text}")
except Exception as e:
    print(f"An error occurred: {e}")
```

{% endtab %}
{% endtabs %}

***

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
    "orderId": "1ede9d7ad8124fd48e3177399bf90a04",
    "success": true
}
```

{% endtab %}

{% tab title="400" %}

```json
{
  "error": "Invalid request"
}
```

{% endtab %}
{% endtabs %}

#### WebSocket API

This request can also be made over the WebSocket API. The `account` path parameter and request body fields are all passed inside `args`.

```json
{
  "action": "rpc",
  "id": "my-request",
  "api": "FlatPlace",
  "args": {
    "account": "Sim101",
    "instrument": "ES 09-26",
    "action": "Buy",
    "orderType": "Market",
    "quantity": 1,
    "timeInForce": "Gtc"
  }
}
```
