> This page is for Developer.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.bigcommerce.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.bigcommerce.com/_mcp/server.

# List Order Products

GET https://api-b2b.bigcommerce.com/api/v3/io/orders/{bcOrderId}/products

Retrieves product details of a specific order based on the `bcOrderId` provided. The `bcOrderId` parameter must include a valid BigCommerce Order ID (**not** the B2B Edition order ID returned in certain Orders endpoints) for the request to be successful.

This does not include all product information, such as pricing and physical dimensions. You can retrieve this information by using the [List Order Products](/developer/api-reference/rest/admin/management/orders/order-products/get-order-products) endpoint of the BigCommerce Orders API.

Reference: https://docs.bigcommerce.com/developer/api-reference/rest/b2b/management/orders/get-orders-order-id-products

## Authentication

- `X-Auth-Token` header (required) — | Header | Argument | Description | |:-------|:---------|:------------| | `X-Auth-Token` | `access_token` | For more about API accounts that generate `access_token`s, see our [Guide to API Accounts](/developer/docs/overview/api-fundamentals/api-accounts). | For example requests and more information about authenticating BigCommerce APIs, see [Authentication and Example Requests](/developer/docs/overview/api-fundamentals/api-accounts#x-auth-token-header-example-requests). For more about BigCommerce OAuth scopes, see our [Guide to API Accounts](/developer/docs/overview/api-fundamentals/api-accounts#oauth-scopes). For a list of API status codes, see [API Status Codes](/developer/api-reference/rest/overview#rest-http-status-codes).
- `X-Store-Hash` header (required) — | Header | Argument | Description | |:-------|:---------|:------------| | `X-Store-Hash` | `store_hash` | The unique store hash associated with a BigCommerce store that has B2B Edition enabled. |

## Request

### Path parameters

- `bcOrderId` (integer, required) — The BigCommerce order ID.

## Response

### 200

OK

- `code` (integer, optional, default: 200) — HTTP Response Code
- `data` (list of orderProducts, optional)
- `meta` (OrdersBcOrderIdProductsGetResponsesContentApplicationJsonSchemaMeta, optional)

## Errors

### 404 Not Found Error

Not Found This error occurs when you provide an invalid `bcOrderId` value.

- `code` (integer, required)
- `data` (OrdersBcOrderIdProductsGetResponsesContentApplicationJsonSchemaData, required)
- `meta` (OrdersBcOrderIdProductsGetResponsesContentApplicationJsonSchemaMeta, optional)

## Types

### orderProducts

- `id` (integer, optional) — The unique identifier for the base product.
- `productId` (integer, optional) — The unique identifier for the base product.
- `createdAt` (integer, optional) — The [Unix timestamp](https://www.unixtimestamp.com/) for when the order was created. This is a read-only field.
- `updatedAt` (integer, optional) — The [Unix timestamp](https://www.unixtimestamp.com/) for when the order was last updated. This is a read-only field.
- `productName` (string, optional) — The name of the product.
- `variantSku` (string, optional) — The product's SKU.
- `variantId` (integer, optional) — The unique variant ID for the product.
- `productBrandName` (string, optional) — The product's brand.
- `quantity` (integer, optional) — Quantity number of product in this order.
- `options` (list of OrderProductsOptionsItems, optional) — Contains information about the product's options.

### OrdersBcOrderIdProductsGetResponsesContentApplicationJsonSchemaMeta

- `message` (string, optional) — Error message of this response

### OrdersBcOrderIdProductsGetResponsesContentApplicationJsonSchemaData

### OrderProductsOptionsItems

- `id` (integer, optional) — The unique numerical ID of the option; increments sequentially.
- `optionId` (integer, optional) — The numeric ID of the associated option.
- `productOptionId` (integer, optional) — The numeric ID of the option within the order.
- `orderProductId` (integer, optional) — The unique identifier for the order product.
- `displayName` (string, optional) — Alias for `displayNameCustomer`. The product option name that is shown to customer in the storefront.
- `displayNameCustomer` (string, optional) — The product option name that is shown to customer in the storefront.
- `displayNameMerchant` (string, optional) — The internal option name in the control panel.
- `displayValue` (string, optional) — Alias for `displayValueCustomer`. The product option value that is shown to customer in storefront.
- `displayValueCustomer` (string, optional) — The product option value that is shown to customer in storefront.
- `displayValueMerchant` (string, optional) — The internal option value name in the control panel.
- `value` (integer, optional) — The unique identifier for the product’s selected option value.
- `type` (string, optional) — The type of option, which determines how it will display on the storefront.
- `name` (string, optional) — The option's name, as used internally. Options given an existing name have a numeric string added to them.
- `displayStyle` (string, optional) — Indicates how a multiple choice option is displayed on the storefront.

## Examples

**Response**

```json
{
  "code": 200,
  "data": [
    {
      "id": 12345,
      "productId": 12345,
      "createdAt": 1744735719,
      "updatedAt": 1744735734,
      "productName": "The Planter by Rustic Roots",
      "variantSku": "CER-POT-2-SL",
      "variantId": 74669,
      "productBrandName": "Rustic Roots",
      "quantity": 5,
      "options": [
        {
          "id": 129,
          "optionId": 4243,
          "productOptionId": 258,
          "orderProductId": 3773,
          "displayName": "Color",
          "displayNameCustomer": "Color",
          "displayNameMerchant": "Color",
          "displayValue": "Slate",
          "displayValueCustomer": "Slate",
          "displayValueMerchant": "Slate",
          "value": 18836,
          "type": "Multiple choice",
          "name": "Color1736973439-63261",
          "displayStyle": "Rectangle"
        }
      ]
    }
  ],
  "meta": {
    "message": "SUCCESS"
  }
}
```

**SDK Code**

```python
import requests

url = "https://api-b2b.bigcommerce.com/api/v3/io/orders/123/products"

headers = {"X-Auth-Token": "<apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api-b2b.bigcommerce.com/api/v3/io/orders/123/products';
const options = {method: 'GET', headers: {'X-Auth-Token': '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api-b2b.bigcommerce.com/api/v3/io/orders/123/products"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("X-Auth-Token", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api-b2b.bigcommerce.com/api/v3/io/orders/123/products")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["X-Auth-Token"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api-b2b.bigcommerce.com/api/v3/io/orders/123/products")
  .header("X-Auth-Token", "<apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api-b2b.bigcommerce.com/api/v3/io/orders/123/products', [
  'headers' => [
    'X-Auth-Token' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api-b2b.bigcommerce.com/api/v3/io/orders/123/products");
var request = new RestRequest(Method.GET);
request.AddHeader("X-Auth-Token", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["X-Auth-Token": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api-b2b.bigcommerce.com/api/v3/io/orders/123/products")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```