/2026-01/retail-media/line-items/{line-item-id}/products/delete
curl --request POST \
--url https://api.criteo.com/2026-01/retail-media/line-items/{line-item-id}/products/delete \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": [
{
"attributes": {
"bidOverride": 123,
"id": "<string>"
},
"id": "<string>",
"type": "<string>"
}
]
}
'import requests
url = "https://api.criteo.com/2026-01/retail-media/line-items/{line-item-id}/products/delete"
payload = { "data": [
{
"attributes": {
"bidOverride": 123,
"id": "<string>"
},
"id": "<string>",
"type": "<string>"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
data: [
{
attributes: {bidOverride: 123, id: '<string>'},
id: '<string>',
type: '<string>'
}
]
})
};
fetch('https://api.criteo.com/2026-01/retail-media/line-items/{line-item-id}/products/delete', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.criteo.com/2026-01/retail-media/line-items/{line-item-id}/products/delete",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
[
'attributes' => [
'bidOverride' => 123,
'id' => '<string>'
],
'id' => '<string>',
'type' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.criteo.com/2026-01/retail-media/line-items/{line-item-id}/products/delete"
payload := strings.NewReader("{\n \"data\": [\n {\n \"attributes\": {\n \"bidOverride\": 123,\n \"id\": \"<string>\"\n },\n \"id\": \"<string>\",\n \"type\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.criteo.com/2026-01/retail-media/line-items/{line-item-id}/products/delete")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": [\n {\n \"attributes\": {\n \"bidOverride\": 123,\n \"id\": \"<string>\"\n },\n \"id\": \"<string>\",\n \"type\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.criteo.com/2026-01/retail-media/line-items/{line-item-id}/products/delete")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": [\n {\n \"attributes\": {\n \"bidOverride\": 123,\n \"id\": \"<string>\"\n },\n \"id\": \"<string>\",\n \"type\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body/2026-01/retail-media/line-items/{line-item-id}/products/delete
Remove a collection of promoted products from a line item
POST
/
2026-01
/
retail-media
/
line-items
/
{line-item-id}
/
products
/
delete
/2026-01/retail-media/line-items/{line-item-id}/products/delete
curl --request POST \
--url https://api.criteo.com/2026-01/retail-media/line-items/{line-item-id}/products/delete \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": [
{
"attributes": {
"bidOverride": 123,
"id": "<string>"
},
"id": "<string>",
"type": "<string>"
}
]
}
'import requests
url = "https://api.criteo.com/2026-01/retail-media/line-items/{line-item-id}/products/delete"
payload = { "data": [
{
"attributes": {
"bidOverride": 123,
"id": "<string>"
},
"id": "<string>",
"type": "<string>"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
data: [
{
attributes: {bidOverride: 123, id: '<string>'},
id: '<string>',
type: '<string>'
}
]
})
};
fetch('https://api.criteo.com/2026-01/retail-media/line-items/{line-item-id}/products/delete', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.criteo.com/2026-01/retail-media/line-items/{line-item-id}/products/delete",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
[
'attributes' => [
'bidOverride' => 123,
'id' => '<string>'
],
'id' => '<string>',
'type' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.criteo.com/2026-01/retail-media/line-items/{line-item-id}/products/delete"
payload := strings.NewReader("{\n \"data\": [\n {\n \"attributes\": {\n \"bidOverride\": 123,\n \"id\": \"<string>\"\n },\n \"id\": \"<string>\",\n \"type\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.criteo.com/2026-01/retail-media/line-items/{line-item-id}/products/delete")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": [\n {\n \"attributes\": {\n \"bidOverride\": 123,\n \"id\": \"<string>\"\n },\n \"id\": \"<string>\",\n \"type\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.criteo.com/2026-01/retail-media/line-items/{line-item-id}/products/delete")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": [\n {\n \"attributes\": {\n \"bidOverride\": 123,\n \"id\": \"<string>\"\n },\n \"id\": \"<string>\",\n \"type\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
The access token received from the authorization server in the OAuth 2.0 flow.
FlowAuthorization Code
- Authorization URL
- https://api.criteo.com/oauth2
- Token URL
- https://api.criteo.com/oauth2/token
FlowClient Credentials
- Token URL
- https://api.criteo.com/oauth2/token
Scopes1
RetailMedia_Campaign_Manage
Grants Manage access to the capabilities from the Campaign domain, for RetailMedia applications
Path Parameters
ID of the line item
Body
application/json
Request body whose {data} contains an array of promoted products.
Request object containing promoted products to be appended, deleted, paused or unpaused.
Show child attributes
Show child attributes
Response
204
Promoted products removed from the line item
Was this page helpful?