Listing Product Pairs
Tradable product pairs are returned by List Products. This endpoint’s response includes all enabled products for a given portfolio, along with crucial details such as minimum/maximum order increments and order book precision. This can be used to validate order parameters, ensure compliance with product constraints, and power trading interfaces or workflows.
ProductsService productsService = PrimeServiceFactory.createProductsService(client);
ListPortfolioProductsRequest request = new ListPortfolioProductsRequest.Builder()
.portfolioId("PORTFOLIO_ID_HERE")
.build();
ListPortfolioProductsResponse response = productsService.listPortfolioProducts(request);
To learn more about this SDK, please visit the Prime Java SDK.
ProductsService productsService = PrimeServiceFactory.createProductsService(client);
ListPortfolioProductsRequest request = new ListPortfolioProductsRequest.Builder()
.portfolioId("PORTFOLIO_ID_HERE")
.build();
ListPortfolioProductsResponse response = productsService.listPortfolioProducts(request);
To learn more about this SDK, please visit the Prime Java SDK.
var productsService = new ProductsService(client);
var request = new ListPortfolioProductsRequest("PORTFOLIO_ID_HERE");
var response = productsService.ListPortfolioProducts(request);
To learn more about this SDK, please visit the Prime .NET SDK.
productsService := products.NewProductsService(client)
request := &products.ListProducts{
PortfolioId: "PORTFOLIO_ID_HERE",
}
response, err := productsService.ListProducts(context.Background(), request)
To learn more about this SDK, please visit the Prime Go SDK.
prime_client = PrimeClient(credentials)
request = ListProducts(
portfolio_id="PORTFOLIO_ID_HERE",
)
response = prime_client.list_products(request)
To learn more about this SDK, please visit the Prime Python SDK.
primectl list-products --help
To learn more about this CLI, please visit the Prime CLI.
const productsService = new ProductsService(client);
productsService.listProducts({
portfolioId: 'PORTFOLIO_ID_HERE'
}).then(async (response) => {
console.log('Products: ', response);
})
To learn more about this SDK, please visit the Prime TS SDK.
Creating a Trade
Trading via the Prime REST API is conducted through the Create Order endpoint. When an order is created, the product (for example, BTC-USD
) and the portfolio ID must be specified. The portfolio ID determines which trading balance will be used for debits and credits, and can be obtained from List Portfolios or from the URL of the Prime web UI.
Any order algorithm supported in the Prime UI is also available through the Create Order API. Prime supports specifying orders in both base units (e.g., “10 ETH”) and quote units (e.g., “100,000 USD of ETH”).
OrdersService ordersService = PrimeServiceFactory.createOrdersService(client);
CreateOrderRequest request = new CreateOrderRequest.Builder()
.portfolioId("PORTFOLIO_ID_HERE")
.productId("ADA-USD")
.side(OrderSide.BUY)
.type(OrderType.MARKET)
.baseQuantity("10.0")
.clientOrderId(UUID.randomUUID().toString())
.build());
CreateOrderResponse orderResponse = ordersService.createOrder(request);
To learn more about this SDK, please visit the Prime Java SDK.
OrdersService ordersService = PrimeServiceFactory.createOrdersService(client);
CreateOrderRequest request = new CreateOrderRequest.Builder()
.portfolioId("PORTFOLIO_ID_HERE")
.productId("ADA-USD")
.side(OrderSide.BUY)
.type(OrderType.MARKET)
.baseQuantity("10.0")
.clientOrderId(UUID.randomUUID().toString())
.build());
CreateOrderResponse orderResponse = ordersService.createOrder(request);
To learn more about this SDK, please visit the Prime Java SDK.
var ordersService = new OrdersService(client);
var request = new CreateOrderRequest("PORTFOLIO_ID_HERE")
{
BaseQuantity = "5",
LimitPrice = "0.32",
Side = OrderSide.BUY,
ProductId = "ADA-USD",
Type = OrderType.LIMIT,
ExpiryTime = new DateTimeOffset(DateTime.UtcNow.AddMinutes(5)).ToString("o"),
ClientOrderId = Guid.NewGuid().ToString()
};
var createOrderResponse = orderService.CreateOrder(request);
To learn more about this SDK, please visit the Prime .NET SDK.
ordersService := orders.NewOrdersService(client)
request := &orders.CreateOrderRequest{
Order: &model.Order{
PortfolioId: "PORTFOLIO_ID_HERE",
BaseQuantity: "5",
LimitPrice: "0.32",
Side: "BUY",
ProductId: "ADA-USD",
Type: "LIMIT",
ExpiryTime: time.Now().UTC().Add(5 * time.Minute).Format(time.RFC3339),
ClientOrderId: uuid.New().String(),
},
}
response, err := ordersService.CreateOrder(context.Background(), request)
To learn more about this SDK, please visit the Prime Go SDK.
prime_client = PrimeClient(credentials)
request = CreateOrderRequest(
portfolio_id="PORTFOLIO_ID_HERE",
base_quantity="5",
limit_price="0.32",
side="BUY",
product_id="ADA-USD",
type="LIMIT",
expiry_time=(datetime.datetime.now() + datetime.timedelta(minutes=5)).isoformat() + "Z",
client_order_id=str(uuid.uuid4()),
)
response = prime_client.create_order(request)
To learn more about this SDK, please visit the Prime Python SDK.
const ordersService = new OrdersService(client);
const today = new Date();
ordersService.createOrder({
portfolioId: "PORTFOLIO_ID_HERE",
baseQuantity: "5",
limitPrice: "0.32",
side: OrderSide.BUY,
productId: "ADA-USD",
type: OrderType.LIMIT,
expiryTime: date.setDate(date.getDate() + 1),
clientOrderId: uuidv4()
}).then(async (response) => {
console.log('Order: ', response);
})
To learn more about this SDK, please visit the Prime TS SDK.
primectl create-order --help
To learn more about this CLI, please visit the Prime CLI.
An Order Preview can also be submitted, which is useful in scenarios where a preview screen is needed, or to obtain a general idea of trading conditions. This is not a hold.
Tracking an order
When an order is successfully created, the API returns an order ID. This ID can be used to check the current status or attempt to cancel the order.
There are multiple ways to track order status:
- Orders WebSocket: Subscribe to real-time updates for order status and fills via the Orders Websocket
- Get Order by ID: Poll the Get Order by ID endpoint to retrieve detailed information about the order, including price and quantity details.
Examples of using Get Order by ID are shown below.
OrdersService ordersService = PrimeServiceFactory.createOrdersService(client);
GetOrderByOrderIdRequest request = new GetOrderByOrderIdRequest.Builder()
.portfolioId("PORTFOLIO_ID_HERE")
.orderId("ORDER_ID_HERE")
.build();
GetOrderByOrderIdResponse response = ordersService.getOrderByOrderId(request);
To learn more about this SDK, please visit the Prime Java SDK.
OrdersService ordersService = PrimeServiceFactory.createOrdersService(client);
GetOrderByOrderIdRequest request = new GetOrderByOrderIdRequest.Builder()
.portfolioId("PORTFOLIO_ID_HERE")
.orderId("ORDER_ID_HERE")
.build();
GetOrderByOrderIdResponse response = ordersService.getOrderByOrderId(request);
To learn more about this SDK, please visit the Prime Java SDK.
var ordersService = new OrdersService(client);
var request = new GetOrderByOrderIdRequest("PORTFOLIO_ID_HERE", "ORDER_ID_HERE");
var response = ordersService.GetOrderByOrderId(request);
To learn more about this SDK, please visit the Prime .NET SDK.
ordersService := orders.NewOrdersService(client)
request := &orders.GetOrderRequest{
PortfolioId: "PORTFOLIO_ID_HERE",
OrderId: "ORDER_ID_HERE",
}
response, err := ordersService.GetOrder(context.Background(), request)
To learn more about this SDK, please visit the Prime Go SDK.
prime_client = PrimeClient(credentials)
request = GetOrderRequest(
portfolio_id="PORTFOLIO_ID_HERE",
order_id="ORDER_ID_HERE",
)
response = prime_client.get_order(request)
To learn more about this SDK, please visit the Prime Python SDK.
primectl get-order --help
To learn more about this CLI, please visit the Prime CLI.
const ordersService = new OrdersService(client);
ordersService.getOrder({
portfolioId: 'PORTFOLIO_ID_HERE',
orderId: 'ORDER_ID_HERE'
}).then(async (response) => {
console.log('Order: ', response);
})
To learn more about this SDK, please visit the Prime TS SDK.
Order Fills
An order can be split into multiple fills. Each fill contains specific details, such as venue that executed the fill. These fills are all tied to the same order ID.
- List Order Fills: List Order Fills retrieves fills specific to a given order ID.
- List Portfolio Fills: List Portfolio Fills retrieves all latest fills across a portfolio, which can also be subsequently filtered
Examples of using list Order Fills are shown below.
OrdersService ordersService = PrimeServiceFactory.createOrdersService(client);
ListOrderFillsRequest request = new ListOrderFillsRequest.Builder()
.portfolioId("PORTFOLIO_ID_HERE")
.orderId("ORDER_ID_HERE")
.build();
ListOrderFillsResponse response = ordersService.listOrderFills(request);
To learn more about this SDK, please visit the Prime Java SDK.
OrdersService ordersService = PrimeServiceFactory.createOrdersService(client);
ListOrderFillsRequest request = new ListOrderFillsRequest.Builder()
.portfolioId("PORTFOLIO_ID_HERE")
.orderId("ORDER_ID_HERE")
.build();
ListOrderFillsResponse response = ordersService.listOrderFills(request);
To learn more about this SDK, please visit the Prime Java SDK.
var ordersService = new OrdersService(client);
var request = new ListOrderFillsRequest("PORTFOLIO_ID_HERE", "ORDER_ID_HERE");
var response = ordersService.ListOrderFills(request);
To learn more about this SDK, please visit the Prime .NET SDK.
ordersService := orders.NewOrdersService(client)
request := &orders.ListOrderFillsRequest{
PortfolioId: "PORTFOLIO_ID_HERE",
OrderId: "ORDER_ID_HERE",
}
response, err := ordersService.ListOrderFills(context.Background(), request)
To learn more about this SDK, please visit the Prime Go SDK.
prime_client = PrimeClient(credentials)
request = ListOrderFillsRequest(
portfolio_id="PORTFOLIO_ID_HERE",
order_id="ORDER_ID_HERE",
)
response = prime_client.list_order_fills(request)
To learn more about this SDK, please visit the Prime Python SDK.
primectl get-order-fills --help
To learn more about this CLI, please visit the Prime CLI.
const ordersService = new OrdersService(client);
ordersService.listOrderFills({
portfolioId: 'PORTFOLIO_ID_HERE',
orderId: 'ORDER_ID_HERE',
}).then(async (response) => {
console.log('Fills: ', response);
})
To learn more about this SDK, please visit the Prime TS SDK.
Cancelling an order
If an order is still open, a cancellation may be attempted via Cancel Order. Note that a cancellation request does not guarantee a successful cancellation because the order status could change at any time (e.g., it may fill before the cancel request is processed).
OrdersService ordersService = PrimeServiceFactory.cancelOrdersService(client);
CancelOrderRequest request = new CancelOrderRequest.Builder()
.portfolioId("PORTFOLIO_ID_HERE")
.orderId("ORDER_ID_HERE")
.build());
CancelOrderResponse orderResponse = ordersService.cancelOrder(request);
To learn more about this SDK, please visit the Prime Java SDK.
OrdersService ordersService = PrimeServiceFactory.cancelOrdersService(client);
CancelOrderRequest request = new CancelOrderRequest.Builder()
.portfolioId("PORTFOLIO_ID_HERE")
.orderId("ORDER_ID_HERE")
.build());
CancelOrderResponse orderResponse = ordersService.cancelOrder(request);
To learn more about this SDK, please visit the Prime Java SDK.
var ordersService = new OrdersService(client);
var request = new CancelOrderRequest("PORTFOLIO_ID_HERE", "ORDER_ID_HERE");
var cancelOrderResponse = orderService.CancelOrder(request);
To learn more about this SDK, please visit the Prime .NET SDK.
ordersService := orders.NewOrdersService(client)
request := &orders.CancelOrderRequest{
PortfolioId: "PORTFOLIO_ID_HERE",
OrderId: "ORDER_ID_HERE",
}
response, err := ordersService.CancelOrder(context.Background(), request)
To learn more about this SDK, please visit the Prime Go SDK.
prime_client = PrimeClient(credentials)
request = CancelOrderRequest(
portfolio_id="PORTFOLIO_ID_HERE",
order_id="ORDER_ID_HERE",
)
response = prime_client.cancel_order(request)
To learn more about this SDK, please visit the Prime Python SDK.
primectl cancel-order --help
To learn more about this CLI, please visit the Prime CLI.
const ordersService = new OrdersService(client);
orderService.cancelOrder({
portfolioId: 'PORTFOLIO_ID_HERE',
orderId: 'ORDER_ID_HERE',
}).then(async (response) => {
console.log('Order canceled: ', response);
})
To learn more about this SDK, please visit the Prime TS SDK.
Please note: All requests discussed above require proper authentication. For more information, visit REST API Authentication.