> ## Documentation Index
> Fetch the complete documentation index at: https://developers.criteo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Line Items Endpoints

export const EndpointBadge = ({method = "GET", children}) => {
  const METHOD_STYLES = {
    GET: {
      bg: "mint-bg-[#2AB673]"
    },
    POST: {
      bg: "mint-bg-[#3064E3]"
    },
    PUT: {
      bg: "mint-bg-[#C28C30]"
    },
    PATCH: {
      bg: "mint-bg-[#DA622B]"
    },
    DELETE: {
      bg: "mint-bg-[#CB3A32]"
    },
    API: {
      bg: "mint-bg-black"
    }
  };
  const key = method.toUpperCase();
  const styles = METHOD_STYLES[key] ?? METHOD_STYLES.API;
  return <div className="relative mt-7">
      <span className={`absolute -top-2 -left-2 z-10 ${styles.bg} text-white px-2.5 py-0.5 rounded-full text-xs font-bold tracking-wide`}>
        {key}
      </span>
      {children}
    </div>;
};

<Info>
  **Getting Started**

  1. A line item holds promoted products to advertise on a single retailer.
  2. Line items include basic settings such as start and end dates, optional budget controls, and the associated retailer where ads are served.
  3. Budgets can also be managed at the campaign level.
  4. Several [reports](/retail-media/v2025.01/docs/demand-side-analytics-get-started) are available to track line item performance.
  5. Campaigns are limited to 10,000 non-archived line items.
  6. Line items are automatically archived 90 days after their end date.
</Info>

## **Endpoints**

| Method  | Endpoint                           | Description                                                 |
| ------- | ---------------------------------- | ----------------------------------------------------------- |
| **GET** | `/accounts/{accountId}/line-items` | Retrieve all line items associated with a specific account. |
| **GET** | `/line-items/{lineItemId}`         | Retrieve details of a specific line item by its ID.         |

## **Line Item Attributes**

| Attribute          | Data Type | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------ | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`               | string    | Line item IDAccepted values: string of int64 Writeable? N / Nullable? N                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `name`             | string    | Line item name, must be unique within a campaignAccepted values: up to 255-chars string Writeable? Y / Nullable? N                                                                                                                                                                                                                                                                                                                                                                                                |
| `campaignId`       | string    | [Campaign](/retail-media/v2025.01/docs/campaign) ID, in which the respective line item belongsAccepted values: string of int64 Writeable? N / Nullable? N                                                                                                                                                                                                                                                                                                                                                         |
| `type`             | enum      | [Campaign](/retail-media/v2025.01/docs/campaign) typeAccepted values: `auction`, `preferred` Writeable? Y / Nullable? N                                                                                                                                                                                                                                                                                                                                                                                           |
| `targetRetailerId` | string    | [Retailer](/retail-media/v2025.01/docs/retailers) ID, in which the respective line item serves ad onAccepted values: string of int64 Writeable? N / Nullable? N                                                                                                                                                                                                                                                                                                                                                   |
| `startDate`        | date      | Start date of the line item, in the [Account](/retail-media/v2025.01/docs/account) timezone; used to schedule its activation and start serving ads. To understand the conditions that will cause a status to change, check out [Campaign & Line Item Status](/retail-media/v2025.01/docs/campaign-lineitem-status)Accepted values: `yyyy-mm-dd` Writeable? Y / Nullable? N                                                                                                                                        |
| `endDate`          | date      | End date of the line item, in the [Account](/retail-media/v2025.01/docs/account) timezone; serves ads indefinitely if omitted or set to `null`. A timestamp can be included as well if the line item is desired to end at a certain time of dayAccepted values: `yyyy-mm-ddThh:mm:ss±hh:mm` (in [ISO-8601](https://www.iso.org/iso-8601-date-and-time-format.html) ) Default: if `null` or absent, balance will be available indefinitely Writeable? Y / Nullable? Y                                              |
| `budget`           | decimal   | Line item lifetime spend cap, uncapped if omitted or set to `null`Accepted values: `budget` ≥ 0.0 Default: `0.0` Writeable? Y / Nullable? Y                                                                                                                                                                                                                                                                                                                                                                       |
| `budgetSpent`      | decimal   | Budget amount the line item has already spentAccepted values: `budgetSpent` ≥ 0.0 Default: `0.0` Writeable? N / Nullable? N                                                                                                                                                                                                                                                                                                                                                                                       |
| `budgetRemaining`  | decimal   | Budget amount the line item has remaining until cap is hit; `null` if budget is uncappedAccepted values: 0 ≤ `budgetRemaining` ≤ `budget` Default: `0.0` Writeable? N / Nullable? Y                                                                                                                                                                                                                                                                                                                               |
| `status`           | enum      | Line item status; can only be updated by a user to `active` or `paused`; all other values are applied automatically depending on financials, flight dates, or missing attributes required for line item to serve. To understand the conditions that will cause a status to change, check out [Campaign & Line Item Status](/retail-media/v2025.01/docs/campaign-lineitem-status)Accepted values: `active`, `paused`, `scheduled`, `ended`, `budgetHit`, `noFunds`, `draft`, `archived` Writeable? Y / Nullable? N |
| `createdAt`        | timestamp | Timestamp of line item creation, in UTCAccepted values: `yyyy-mm-ddThh:mm:ss±hh:mm`(in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601)) Writeable? N / Nullable? N                                                                                                                                                                                                                                                                                                                                             |
| `updatedAt`        | timestamp | Timestamp of last line item update, in UTCAccepted values: `yyyy-mm-ddThh:mm:ss±hh:mm`(in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601)) Default: same as `createdAt` Writeable? N / Nullable? N                                                                                                                                                                                                                                                                                                             |

## **Get all Line Items**

This endpoint lists all line items in the specified campaign. Results are paginated.

<EndpointBadge method="get">
  ```http theme={null}
  https://api.criteo.com/{version}/retail-media/accounts/{accountId}/line-items
  ```
</EndpointBadge>

**Sample Request**

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://api.criteo.com/{version}/retail-media/accounts/123456/line-items" \
      -H "Authorization: Bearer <MY_ACCESS_TOKEN>"
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.criteo.com/{version}/retail-media/accounts/4/line-items"

  payload={}
  headers = {
    'Accept': 'application/json',
    'Authorization': 'Bearer <MY_ACCESS_TOKEN>'
  }

  response = requests.request("GET", url, headers=headers, data=payload)

  print(response.text)
  ```

  ```java Java theme={null}
  OkHttpClient client = new OkHttpClient().newBuilder()
    .build();

  MediaType mediaType = MediaType.parse("text/plain");

  RequestBody body = RequestBody.create(mediaType, "");

  Request request = new Request.Builder()
    .url("https://api.criteo.com/{version}/retail-media/accounts/4/line-items")
    .method("GET", body)
    .addHeader("Accept", "application/json")
    .addHeader("Authorization", "Bearer <MY_ACCESS_TOKEN>")
    .build();

  Response response = client.newCall(request).execute();
  ```

  ```php PHP theme={null}
  <?php
  require_once 'HTTP/Request2.php';
  $request = new HTTP_Request2();
  $request->setUrl('https://api.criteo.com/{version}/retail-media/accounts/4/line-items');
  $request->setMethod(HTTP_Request2::METHOD_GET);
  $request->setConfig(array(
    'follow_redirects' => TRUE
  ));

  $request->setHeader(array(
    'Accept' => 'application/json',
    'Authorization' => 'Bearer <MY_ACCESS_TOKEN>'
  ));

  try {
    $response = $request->send();
    if ($response->getStatus() == 200) {
      echo $response->getBody();
    }
    
    else {
      echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
      $response->getReasonPhrase();
    }
  }

  catch(HTTP_Request2_Exception $e) {
    echo 'Error: ' . $e->getMessage();
  }
  ```
</CodeGroup>

**Sample Response**

<CodeGroup>
  ```json JSON expandable theme={null}
  {
      "data": [
          {
              "type": "RetailMediaLineItem",
              "id": "9979917896105882144",
              "attributes": {
                  "campaignId": "8343086999167541140",
                  "name": "Line Item 123",
                  "targetRetailerId": "3239117063738827231",
                  "startDate": "2020-04-06",
                  "endDate": null,
                  "budget": null,
                  "budgetSpent": 2383.87,
                  "budgetRemaining": null,
                  "status": "active",
                  "createdAt": "2020-04-06T17:29:11+00:00",
                  "updatedAt": "2020-04-06T17:29:11+00:00"
              }
          },
          // ...
          {
              "type": "RetailMediaLineItem",
              "id": "6854840188706902009",
              "attributes": {
                  "campaignId": "8343086999167541140",
                  "name": "Line Item 789",
                  "targetRetailerId": "18159942378514859684",
                  "startDate": "2020-04-08",
                  "endDate": null,
                  "budget": 8000.00,
                  "budgetSpent": 1921.23,
                  "budgetRemaining": 6078.77,
                  "status": "paused",
                  "createdAt": "2020-04-06T23:42:47+00:00",
                  "updatedAt": "2020-06-03T03:01:52+00:00"       
              }
          }
      ],
      "metadata": {
          "totalItemsAcrossAllPages": 105,
          "currentPageSize": 25,
          "currentPageIndex": 0,
          "totalPages": 5,
          "nextPage": "https://api.criteo.com/{version}/retail-media/accounts/123456/line-items?pageIndex=1&pageSize=25",
          "previousPage": null
      }
  }
  ```
</CodeGroup>

## **Get a specific Line Item**

This endpoint retrieves details for a specified line item by its ID

<EndpointBadge method="get">
  ```http theme={null}
  https://api.criteo.com/{version}/retail-media/line-items/{lineItemId}
  ```
</EndpointBadge>

**Sample Request**

<CodeGroup>
  ```bash cURL theme={null}
  curl -L -X GET "https://api.criteo.com/{version}/retail-media/line-items/2465695028166499188" \
      -H "Authorization: Bearer <MY_ACCESS_TOKEN>"
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.criteo.com/{version}/retail-media/line-items/2465695028166499188"

  payload={}
  headers = {
    'Accept': 'application/json',
    'Authorization': 'Bearer <MY_ACCESS_TOKEN>'
  }

  response = requests.request("GET", url, headers=headers, data=payload)

  print(response.text)
  ```

  ```java Java theme={null}
  OkHttpClient client = new OkHttpClient().newBuilder()
    .build();

  MediaType mediaType = MediaType.parse("text/plain");

  RequestBody body = RequestBody.create(mediaType, "");

  Request request = new Request.Builder()
    .url("https://api.criteo.com/{version}/retail-media/line-items/2465695028166499188")
    .method("GET", body)
    .addHeader("Accept", "application/json")
    .addHeader("Authorization", "Bearer <MY_ACCESS_TOKEN>")
    .build();

  Response response = client.newCall(request).execute();
  ```

  ```php PHP theme={null}
  <?php
  require_once 'HTTP/Request2.php';
  $request = new HTTP_Request2();
  $request->setUrl('https://api.criteo.com/{version}/retail-media/line-items/2465695028166499188');
  $request->setMethod(HTTP_Request2::METHOD_GET);
  $request->setConfig(array(
    'follow_redirects' => TRUE
  ));

  $request->setHeader(array(
    'Accept' => 'application/json',
    'Authorization' => 'Bearer <MY_ACCESS_TOKEN>'
  ));

  try {
    $response = $request->send();
    if ($response->getStatus() == 200) {
      echo $response->getBody();
    }
    
    else {
      echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
      $response->getReasonPhrase();
    }
  }

  catch(HTTP_Request2_Exception $e) {
    echo 'Error: ' . $e->getMessage();
  }
  ```
</CodeGroup>

**Sample Response**

<CodeGroup>
  ```json JSON theme={null}
  {
      "data": { 
          "type": "RetailMediaLineItem",
          "id": "2465695028166499188",
          "attributes": {
              "campaignId": "8343086999167541140",
              "name": "My New Line Item",
              "targetRetailerId": "18159942378514859684",
              "startDate": "2020-04-06",
              "endDate": null,
              "budget": null,
              "budgetSpent": 0.00,
              "budgetRemaining": null,
              "status": "draft",
              "createdAt": "2020-04-06T06:11:23+00:00",
              "updatedAt": "2020-04-06T06:11:23+00:00"
          }
      }
  ```
</CodeGroup>

## **Responses**

| Response | Description                                                                                                                                                                           |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 🟢`200`  | Call completed successfully. The specified line item details are returned.                                                                                                            |
| 🔴`403`  | API user is not authorized to make requests for the account ID. To request authorization, follow the[authorization request](/retail-media/v2025.01/docs/authorization-requests)steps. |
| 🔴`404`  | Line item ID not found. Ensure the`lineItemId`is correct and exists.                                                                                                                  |
