Skip to content
Start Trading

Submit Position Instructions

client.V1.Positions.SubmitPositionInstructions(ctx, accountID, body) (*V1PositionSubmitPositionInstructionsResponse, error)
POST/v1/accounts/{account_id}/positions/instructions

Submit one or more position instructions (Exercise, Do-Not-Exercise, Contrary Exercise Advice) against the account.

Batch semantics:

  • All rows accepted200 OK. Every row is in data with status = SENT.
  • Partial success207 Multi-Status. data contains every row; rejected rows carry status = REJECTED and rejection_reason. The top-level error summarizes the batch failure.
  • All rows rejected4xx/5xx. The HTTP status reflects the aggregate cause: 409 when every row was a duplicate, 400 for validation failures like DNE/CEA on a non-expiry day, 503 if the clearing service is unavailable. data still contains every row carrying status = REJECTED and rejection_reason so callers can attribute failures by instruction_id; the top-level error summarizes the batch.
ParametersExpand Collapse
accountID int64
body V1PositionSubmitPositionInstructionsParams
Instructions param.Field[[]V1PositionSubmitPositionInstructionsParamsInstruction]
InstructionType PositionInstructionType

The action to take.

One of the following:
const PositionInstructionTypeExercise PositionInstructionType = "EXERCISE"
const PositionInstructionTypeDoNotExercise PositionInstructionType = "DO_NOT_EXERCISE"
const PositionInstructionTypeContraryExercise PositionInstructionType = "CONTRARY_EXERCISE"
InstrumentID string

Identifier of the options contract to act on. Unknown ids return 404.

formatuuid
Quantity string

Number of contracts to include in the instruction.

InstructionID stringOptional

Caller-supplied idempotency key. Echoed on the response. The server generates a unique id when omitted.

ReturnsExpand Collapse
type V1PositionSubmitPositionInstructionsResponse struct{…}
ID string

Server-assigned id. Used as the path parameter on cancel.

formatuuid
AccountID int64

Account the instruction belongs to.

formatint64
InstructionID string

Caller-supplied idempotency key echoed from the submit request; the server-assigned fallback when none was supplied.

InstructionType PositionInstructionType

The action this instruction requests.

One of the following:
const PositionInstructionTypeExercise PositionInstructionType = "EXERCISE"
const PositionInstructionTypeDoNotExercise PositionInstructionType = "DO_NOT_EXERCISE"
const PositionInstructionTypeContraryExercise PositionInstructionType = "CONTRARY_EXERCISE"
InstrumentID string

Identifier of the options contract this instruction acts on.

formatuuid
Quantity string

Number of contracts included in the instruction.

Current lifecycle status.

One of the following:
const PositionInstructionStatusSent PositionInstructionStatus = "SENT"
const PositionInstructionStatusAccepted PositionInstructionStatus = "ACCEPTED"
const PositionInstructionStatusRejected PositionInstructionStatus = "REJECTED"
const PositionInstructionStatusCancelRequested PositionInstructionStatus = "CANCEL_REQUESTED"
const PositionInstructionStatusCancelled PositionInstructionStatus = "CANCELLED"
const PositionInstructionStatusCancelFailed PositionInstructionStatus = "CANCEL_FAILED"
const PositionInstructionStatusUnknown PositionInstructionStatus = "UNKNOWN"
Symbol string

Options symbol (OSI) for display.

AcceptedQuantity stringOptional

Number of contracts accepted by the clearing venue. Populated once the instruction reaches ACCEPTED. When a null/undefined value is observed, it indicates that there is no available data.

CreatedAt TimeOptional

When the instruction was first accepted by the service. When a null/undefined value is observed, it indicates that there is no available data.

formatdate-time
RejectionReason stringOptional

Human-readable explanation populated on any non-success terminal status — REJECTED or CANCEL_FAILED. On a 207 Multi-Status batch submit the top-level error field summarizes the batch; per-row detail continues to live here. When a null/undefined value is observed, it indicates it does not apply.

UpdatedAt TimeOptional

When the instruction’s lifecycle state last changed. When a null/undefined value is observed, it indicates that there is no available data.

formatdate-time

Submit Position Instructions

package main

import (
  "context"
  "fmt"

  "github.com/clear-street/clear-street-go"
  "github.com/clear-street/clear-street-go/option"
)

func main() {
  client := clearstreet.NewClient(
    option.WithAPIKey("My API Key"),
  )
  response, err := client.V1.Positions.SubmitPositionInstructions(
    context.TODO(),
    0,
    clearstreet.V1PositionSubmitPositionInstructionsParams{
      Instructions: []clearstreet.V1PositionSubmitPositionInstructionsParamsInstruction{clearstreet.V1PositionSubmitPositionInstructionsParamsInstruction{
        InstructionType: clearstreet.PositionInstructionTypeExercise,
        InstrumentID: "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e02",
        Quantity: "1",
      }},
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", response)
}
{
  "data": [
    {
      "account_id": 122503,
      "id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e02",
      "instruction_id": "ui-20260424-001",
      "instruction_type": "EXERCISE",
      "instrument_id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01",
      "quantity": "1",
      "status": "SENT",
      "symbol": "AAPL  280121C00195000"
    }
  ],
  "metadata": {
    "request_id": "0a5c9ebf-a9a7-4f2d-9c7e-f2b5f0b1bd01"
  }
}
{
  "data": [
    {
      "account_id": 122503,
      "id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e02",
      "instruction_id": "ui-20260424-001",
      "instruction_type": "EXERCISE",
      "instrument_id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01",
      "quantity": "1",
      "status": "SENT",
      "symbol": "AAPL  280121C00195000"
    },
    {
      "account_id": 122503,
      "id": "00000000-0000-0000-0000-000000000000",
      "instruction_id": "ui-20260424-001",
      "instruction_type": "EXERCISE",
      "instrument_id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01",
      "quantity": "1",
      "rejection_reason": "Duplicate exercise instruction",
      "status": "REJECTED",
      "symbol": "AAPL  280121C00195000"
    }
  ],
  "error": {
    "code": 409,
    "message": "Duplicate exercise instruction"
  },
  "metadata": {
    "request_id": "0a5c9ebf-a9a7-4f2d-9c7e-f2b5f0b1bd02"
  }
}
{
  "data": [
    {
      "account_id": 122503,
      "id": "00000000-0000-0000-0000-000000000000",
      "instruction_id": "ui-20260424-001",
      "instruction_type": "DO_NOT_EXERCISE",
      "instrument_id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01",
      "quantity": "1",
      "rejection_reason": "DO_NOT_EXERCISE must be submitted on the contract's expiration date",
      "status": "REJECTED",
      "symbol": "AAPL  280121C00195000"
    }
  ],
  "error": {
    "code": 400,
    "message": "DO_NOT_EXERCISE must be submitted on the contract's expiration date"
  },
  "metadata": {
    "request_id": "0a5c9ebf-a9a7-4f2d-9c7e-f2b5f0b1bd03"
  }
}
{
  "data": [
    {
      "account_id": 122503,
      "id": "00000000-0000-0000-0000-000000000000",
      "instruction_id": "ui-20260424-001",
      "instruction_type": "EXERCISE",
      "instrument_id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01",
      "quantity": "1",
      "rejection_reason": "Duplicate exercise instruction; existing_id=019e7415-de03-70c3-8ca1-9fdb72dfdbbc",
      "status": "REJECTED",
      "symbol": "AAPL  280121C00195000"
    }
  ],
  "error": {
    "code": 409,
    "message": "Duplicate exercise instruction"
  },
  "metadata": {
    "request_id": "0a5c9ebf-a9a7-4f2d-9c7e-f2b5f0b1bd04"
  }
}
{
  "data": [
    {
      "account_id": 122503,
      "id": "00000000-0000-0000-0000-000000000000",
      "instruction_id": "ui-20260424-001",
      "instruction_type": "EXERCISE",
      "instrument_id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01",
      "quantity": "1",
      "rejection_reason": "Could not process the instruction",
      "status": "REJECTED",
      "symbol": "AAPL  280121C00195000"
    }
  ],
  "error": {
    "code": 500,
    "message": "Could not process the instruction"
  },
  "metadata": {
    "request_id": "0a5c9ebf-a9a7-4f2d-9c7e-f2b5f0b1bd05"
  }
}
{
  "data": [
    {
      "account_id": 122503,
      "id": "00000000-0000-0000-0000-000000000000",
      "instruction_id": "ui-20260424-001",
      "instruction_type": "EXERCISE",
      "instrument_id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01",
      "quantity": "1",
      "rejection_reason": "Clearing service unavailable",
      "status": "REJECTED",
      "symbol": "AAPL  280121C00195000"
    }
  ],
  "error": {
    "code": 503,
    "message": "Clearing service unavailable"
  },
  "metadata": {
    "request_id": "0a5c9ebf-a9a7-4f2d-9c7e-f2b5f0b1bd06"
  }
}
Returns Examples
{
  "data": [
    {
      "account_id": 122503,
      "id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e02",
      "instruction_id": "ui-20260424-001",
      "instruction_type": "EXERCISE",
      "instrument_id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01",
      "quantity": "1",
      "status": "SENT",
      "symbol": "AAPL  280121C00195000"
    }
  ],
  "metadata": {
    "request_id": "0a5c9ebf-a9a7-4f2d-9c7e-f2b5f0b1bd01"
  }
}
{
  "data": [
    {
      "account_id": 122503,
      "id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e02",
      "instruction_id": "ui-20260424-001",
      "instruction_type": "EXERCISE",
      "instrument_id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01",
      "quantity": "1",
      "status": "SENT",
      "symbol": "AAPL  280121C00195000"
    },
    {
      "account_id": 122503,
      "id": "00000000-0000-0000-0000-000000000000",
      "instruction_id": "ui-20260424-001",
      "instruction_type": "EXERCISE",
      "instrument_id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01",
      "quantity": "1",
      "rejection_reason": "Duplicate exercise instruction",
      "status": "REJECTED",
      "symbol": "AAPL  280121C00195000"
    }
  ],
  "error": {
    "code": 409,
    "message": "Duplicate exercise instruction"
  },
  "metadata": {
    "request_id": "0a5c9ebf-a9a7-4f2d-9c7e-f2b5f0b1bd02"
  }
}
{
  "data": [
    {
      "account_id": 122503,
      "id": "00000000-0000-0000-0000-000000000000",
      "instruction_id": "ui-20260424-001",
      "instruction_type": "DO_NOT_EXERCISE",
      "instrument_id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01",
      "quantity": "1",
      "rejection_reason": "DO_NOT_EXERCISE must be submitted on the contract's expiration date",
      "status": "REJECTED",
      "symbol": "AAPL  280121C00195000"
    }
  ],
  "error": {
    "code": 400,
    "message": "DO_NOT_EXERCISE must be submitted on the contract's expiration date"
  },
  "metadata": {
    "request_id": "0a5c9ebf-a9a7-4f2d-9c7e-f2b5f0b1bd03"
  }
}
{
  "data": [
    {
      "account_id": 122503,
      "id": "00000000-0000-0000-0000-000000000000",
      "instruction_id": "ui-20260424-001",
      "instruction_type": "EXERCISE",
      "instrument_id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01",
      "quantity": "1",
      "rejection_reason": "Duplicate exercise instruction; existing_id=019e7415-de03-70c3-8ca1-9fdb72dfdbbc",
      "status": "REJECTED",
      "symbol": "AAPL  280121C00195000"
    }
  ],
  "error": {
    "code": 409,
    "message": "Duplicate exercise instruction"
  },
  "metadata": {
    "request_id": "0a5c9ebf-a9a7-4f2d-9c7e-f2b5f0b1bd04"
  }
}
{
  "data": [
    {
      "account_id": 122503,
      "id": "00000000-0000-0000-0000-000000000000",
      "instruction_id": "ui-20260424-001",
      "instruction_type": "EXERCISE",
      "instrument_id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01",
      "quantity": "1",
      "rejection_reason": "Could not process the instruction",
      "status": "REJECTED",
      "symbol": "AAPL  280121C00195000"
    }
  ],
  "error": {
    "code": 500,
    "message": "Could not process the instruction"
  },
  "metadata": {
    "request_id": "0a5c9ebf-a9a7-4f2d-9c7e-f2b5f0b1bd05"
  }
}
{
  "data": [
    {
      "account_id": 122503,
      "id": "00000000-0000-0000-0000-000000000000",
      "instruction_id": "ui-20260424-001",
      "instruction_type": "EXERCISE",
      "instrument_id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01",
      "quantity": "1",
      "rejection_reason": "Clearing service unavailable",
      "status": "REJECTED",
      "symbol": "AAPL  280121C00195000"
    }
  ],
  "error": {
    "code": 503,
    "message": "Clearing service unavailable"
  },
  "metadata": {
    "request_id": "0a5c9ebf-a9a7-4f2d-9c7e-f2b5f0b1bd06"
  }
}