Produkty
Udržujte katalog svého obchodu v Emailitu pro mřížky produktů, doporučení a položky objednávek.
Vytvoření nebo úprava produktu
Přidá produkt do katalogu, nebo ho upraví, pokud produkt se stejným id už existuje. id je ID produktu ve vašem obchodě, takže stejný produkt můžete poslat znovu pokaždé, když se změní. Vyžaduje API klíč s oprávněním full, nebo events. S klíčem s oprávněním events obsahuje odpověď jen object, id a external_id.
id je vždy povinné a title je povinné u nového produktu. Pole se zapisují, jen když je pošlete, takže produkt, který znovu pošlete jen s novou cenou, si ponechá název, kategorie, obrázek a vše ostatní. Pokud chcete poslat mnoho produktů najednou, použijte Hromadné vytvoření nebo úprava produktů.
Mřížky produktů, doporučení a položky objednávek v e-mailech čtou data z katalogu. Viz Produkty, kupony a košík.
/productsTělo požadavku
idstring | numberPovinnéID produktu ve vašem obchodě, nejvýše 255 znaků. Čísla se ukládají jako řetězce. Ukládá se jako external_id. Můžete ho poslat také jako external_id.
titlestringNázev produktu, nejvýše 500 znaků. Můžete ho poslat také jako name. U nového produktu povinné.
skustringSkladové číslo (SKU), nejvýše 255 znaků.
descriptionstringPopis produktu, nejvýše 10 000 znaků.
urlstringStránka produktu ve vašem obchodě. URL s http nebo https, nejvýše 2 048 znaků.
image_urlstringObrázek produktu. URL s http nebo https, nejvýše 2 048 znaků.
pricenumber | stringAktuální cena jako číslo, nebo číselný řetězec, například "89.00". Nesmí být záporná. Ukládá se s nejvýše 4 desetinnými místy.
compare_at_pricenumber | stringCena před slevou ve stejném formátu jako price. Když je vyšší než price, produkt se počítá jako produkt ve slevě.
currencystringTřípísmenný kód ISO 4217, například USD nebo EUR. Přijímají se i malá písmena. E-maily formátují ceny produktu v této měně, nebo v USD, když není nastavená.
categoriesstring[]Až 50 názvů kategorií, každý nejvýše 191 znaků. Duplicity se odstraní.
brandstringNázev značky, nejvýše 191 znaků.
inventory_quantityinteger | nullPočet kusů skladem. null znamená, že skladovou zásobu nesledujete. Mřížky produktů v e-mailech vynechávají produkty s hodnotou 0.
statusstringactive, nebo archived. Nové produkty mají stav active. Archivované produkty se ve výchozím stavu nezobrazují ve výpisu produktů a mřížky produktů je vynechávají.
metadataobjectVaše vlastní data ve tvaru dvojic klíč–hodnota, nejvýše 16 KB jako JSON. Odesláním metadata se uložený objekt nahradí.
Odpověď
201 Created s objektem produktu, když je produkt nový, nebo 200 OK, když se upravil existující produkt. Pokud je některé pole neplatné, vrací 422.
{
"object": "product",
"id": "prd_3r6HHUGUSl8yjYDscEA6aYA8wrA",
"external_id": "8123456789",
"sku": "TRS-BLU-42",
"title": "Trail running shoe",
"description": null,
"url": "https://shop.example.com/products/trail-running-shoe",
"image_url": "https://shop.example.com/images/trail-running-shoe.jpg",
"price": 89,
"compare_at_price": 119,
"currency": "USD",
"categories": [
"Shoes",
"Running"
],
"brand": "Acme Outdoors",
"inventory_quantity": 34,
"status": "active",
"metadata": {},
"created_at": "2026-10-08T14:21:07.512Z",
"updated_at": "2026-10-08T14:21:07.512Z"
}{
"message": "Validation failed. price: must not be negative",
"errors": {
"price": [
"must not be negative"
]
}
}Načtení produktu
Načte produkt podle jeho ID v Emailitu nebo podle ID produktu ve vašem obchodě. Vyžaduje API klíč s oprávněním full.
/products/{id}Parametry v cestě
idstringPovinnéID produktu (prd_...), nebo ID produktu ve vašem obchodě (external_id). ID z obchodu, která obsahují speciální znaky, zakódujte pro URL.
Objekt produktu
objectstringVždy product.
idstringID produktu v Emailitu (prd_...).
external_idstringID produktu ve vašem obchodě: id, které jste poslali. Položky objednávek a košíků odkazují na produkty tímto ID.
skustring | nullSkladové číslo (SKU).
titlestringNázev produktu.
descriptionstring | nullPopis produktu.
urlstring | nullStránka produktu ve vašem obchodě.
image_urlstring | nullObrázek produktu.
pricenumber | nullAktuální cena.
compare_at_pricenumber | nullCena před slevou. Produkt je ve slevě, když je compare_at_price vyšší než price.
currencystring | nullTřípísmenný kód ISO 4217 měny cen.
categoriesstring[]Názvy kategorií.
brandstring | nullNázev značky.
inventory_quantityinteger | nullPočet kusů skladem. null znamená, že se skladová zásoba nesleduje. Mřížky produktů v e-mailech vynechávají produkty s hodnotou 0.
statusstringactive, nebo archived. Mřížky produktů v e-mailech archivované produkty vynechávají.
metadataobjectVaše vlastní data ve tvaru dvojic klíč–hodnota.
created_atstringKdy byl produkt přidán, ve formátu ISO 8601 v UTC.
updated_atstringKdy se produkt naposledy změnil, ve formátu ISO 8601 v UTC.
{
"object": "product",
"id": "prd_3r6HHUGUSl8yjYDscEA6aYA8wrA",
"external_id": "8123456789",
"sku": "TRS-BLU-42",
"title": "Trail running shoe",
"description": "Lightweight shoe with a grippy sole for wet trails.",
"url": "https://shop.example.com/products/trail-running-shoe",
"image_url": "https://shop.example.com/images/trail-running-shoe.jpg",
"price": 89,
"compare_at_price": 119,
"currency": "USD",
"categories": [
"Shoes",
"Running"
],
"brand": "Acme Outdoors",
"inventory_quantity": 34,
"status": "active",
"metadata": {
"color": "blue"
},
"created_at": "2026-10-02T08:15:22.418Z",
"updated_at": "2026-10-08T14:21:07.512Z"
}{
"error": "Product not found",
"message": "Product not found."
}Úprava produktu
Upraví produkt, který už je v katalogu. Změní se jen pole, která pošlete. ID produktu ve vašem obchodě se změnit nedá: id v těle požadavku se ignoruje. Vyžaduje API klíč s oprávněním full, nebo events. S klíčem s oprávněním events obsahuje odpověď jen object, id a external_id.
Pokud chcete produkty vytvářet i upravovat stejným voláním, použijte Vytvoření nebo úprava produktu.
/products/{id}Parametry v cestě
idstringPovinnéID produktu (prd_...), nebo ID produktu ve vašem obchodě.
Tělo požadavku
Kterékoli z polí endpointu Vytvoření nebo úprava produktu kromě id: title, sku, description, url, image_url, price, compare_at_price, currency, categories, brand, inventory_quantity, status a metadata. Platí stejná pravidla. categories a metadata se nahrazují celé.
Odpověď
200 OK s upraveným objektem produktu. Pokud parametru id neodpovídá žádný produkt, vrací 404, a pokud je některé pole neplatné, vrací 422.
{
"object": "product",
"id": "prd_3r6HHUGUSl8yjYDscEA6aYA8wrA",
"external_id": "8123456789",
"sku": "TRS-BLU-42",
"title": "Trail running shoe",
"description": "Lightweight shoe with a grippy sole for wet trails.",
"url": "https://shop.example.com/products/trail-running-shoe",
"image_url": "https://shop.example.com/images/trail-running-shoe.jpg",
"price": 79,
"compare_at_price": 119,
"currency": "USD",
"categories": [
"Shoes",
"Running"
],
"brand": "Acme Outdoors",
"inventory_quantity": 20,
"status": "active",
"metadata": {
"color": "blue"
},
"created_at": "2026-10-02T08:15:22.418Z",
"updated_at": "2026-10-09T10:02:41.205Z"
}{
"error": "Product not found",
"message": "Product not found."
}{
"message": "Validation failed. image_url: must be an http(s) URL",
"errors": {
"image_url": [
"must be an http(s) URL"
]
}
}Výpis produktů
Vypíše produkty z katalogu, nejnovější jako první. Bez status se vypisují jen aktivní produkty. Vyžaduje API klíč s oprávněním full.
/productsParametry dotazu
pageintegerČíslo stránky pro stránkování (nejméně 1, výchozí hodnota 1).
limitintegerPočet produktů, které se vrátí (nejméně 1, nejvýše 100, výchozí hodnota 25).
searchstringHledá v názvu, v ID produktu ve vašem obchodě (external_id) nebo v SKU bez ohledu na velikost písmen.
categorystringJen produkty v této kategorii. Název musí přesně odpovídat, včetně velikosti písmen.
statusstringactive (výchozí), archived nebo all. Když filtrujete podle klíče status níže, použijte all, protože výchozí hodnota už výpis omezuje na aktivní produkty.
idsstringSeznam až 100 ID produktů oddělených čárkami. Každé může být ID v Emailitu (prd_...), nebo ID produktu ve vašem obchodě.
matchstringall (výchozí) vyžaduje shodu všech filtrů key.condition. U or stačí shoda kteréhokoli z nich. Viz Filtrování a řazení.
sortstringKlíč řazení: created_at (výchozí), updated_at, title nebo price.
orderstringSměr řazení: asc, nebo desc (výchozí).
Filtry
Filtry výpisů jsou jedna úroveň parametrů dotazu ve tvaru key.condition=value. Parametry match, order a direction a seznam podmínek pro každý typ najdete na stránce Filtrování.
Klíče filtrů
| Klíč | Typ | Podmínky | Poznámky |
|---|---|---|---|
title | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
external_id | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
sku | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
brand | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
currency | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
price | number | exact, not_exact, gt, gte, lt, lte, empty, not_empty | |
inventory_quantity | number | exact, not_exact, gt, gte, lt, lte, empty, not_empty | |
status | enum | exact, not_exact | Hodnoty: active, archived |
created_at | date | exact, before, after, empty, not_empty | |
updated_at | date | exact, before, after, empty, not_empty |
Klíče řazení
Tento endpoint řadí podle parametru sort s jedním z těchto klíčů a parametru order s hodnotou asc, nebo desc (order=<key> tu vrací 400): created_at, updated_at, title, price
U tohoto endpointu přijímá order jen asc, nebo desc. Klíč řazení předejte v sort, například sort=price&order=asc.
Odpověď
Stránka objektů produktů v poli data a k tomu total_records, next_page_url a previous_page_url. URL stránek nesou jen page a limit, takže když na ně přejdete, přidejte znovu své vyhledávání a filtry.
{
"data": [
{
"object": "product",
"id": "prd_3r6HHUGUSl8yjYDscEA6aYA8wrA",
"external_id": "8123456789",
"sku": "TRS-BLU-42",
"title": "Trail running shoe",
"description": "Lightweight shoe with a grippy sole for wet trails.",
"url": "https://shop.example.com/products/trail-running-shoe",
"image_url": "https://shop.example.com/images/trail-running-shoe.jpg",
"price": 89,
"compare_at_price": 119,
"currency": "USD",
"categories": [
"Shoes",
"Running"
],
"brand": "Acme Outdoors",
"inventory_quantity": 34,
"status": "active",
"metadata": {
"color": "blue"
},
"created_at": "2026-10-02T08:15:22.418Z",
"updated_at": "2026-10-08T14:21:07.512Z"
}
],
"total_records": 1,
"next_page_url": null,
"previous_page_url": null
}Hromadné vytvoření nebo úprava produktů
Pošle až 1 000 produktů v jednom požadavku, například při importu katalogu nebo při jeho pravidelné synchronizaci. Každý produkt se řídí pravidly endpointu Vytvoření nebo úprava produktu: vytvoří se, nebo upraví podle svého id, nový produkt potřebuje title a pole se zapisují, jen když je pošlete. Vyžaduje API klíč s oprávněním full, nebo events. S klíčem s oprávněním events obsahuje odpověď jen object, id a external_id.
Neplatné produkty se přeskočí a vypíšou v rejected; ostatní se uloží. Požadavek přesto vrátí 200.
/products/batchTělo požadavku
productsobject[]Povinné1 až 1 000 produktů, každý s poli endpointu Vytvoření nebo úprava produktu.
Odpověď
createdintegerPočet nových produktů.
updatedintegerPočet existujících produktů, které se upravily.
rejectedobject[]Produkty, které se neuložily. Každá položka má index produktu ve vašem poli products a errors s klíči podle cesty k poli, například products.3.price.
Pokud je products prázdné nebo má víc než 1 000 položek, vrací 422.
{
"created": 1,
"updated": 1,
"rejected": [
{
"index": 2,
"errors": {
"products.2.title": [
"is required"
]
}
}
]
}{
"message": "Validation failed. products: Send 1 to 1000 products.",
"errors": {
"products": [
"Send 1 to 1000 products."
]
}
}Výpis kategorií produktů
Vypíše kategorie, které používají aktivní produkty, v abecedním pořadí, s počtem aktivních produktů v každé z nich. Archivované produkty se nepočítají. Vrací až 1 000 kategorií a nestránkuje se. Vyžaduje API klíč s oprávněním full.
Kategorie pocházejí z categories jednotlivých produktů. Název kategorie použijte v parametru category endpointu Výpis produktů.
/products/categories{
"data": [
{
"name": "Accessories",
"products": 18
},
{
"name": "Running",
"products": 12
},
{
"name": "Shoes",
"products": 27
}
]
}Smazání produktu
Odebere produkt z katalogu. Objednávky, které ho obsahují, si ponechají své položky, protože ty si ukládají vlastní název, cenu a ID produktu. Pokud chcete produkt skrýt, aniž byste ho smazali, nastavte místo toho jeho status na archived. Vyžaduje API klíč s oprávněním full.
Pokud měřicí skript nahlásí zobrazení smazaného produktu s jeho názvem, produkt se do katalogu znovu přidá z dat stránky.
/products/{id}Parametry v cestě
idstringPovinnéID produktu (prd_...), nebo ID produktu ve vašem obchodě.
{
"object": "product",
"id": "prd_3r6HHUGUSl8yjYDscEA6aYA8wrA",
"deleted": true
}{
"error": "Product not found",
"message": "Product not found."
}