Skip to content

Catalog: products and categories

PUT/api/v1/catalog/products

Inserts or updates by item_ref (upsert). A product whose content did not change is not rewritten or re-embedded (unchanged). Up to 1000 items per batch; the same item_ref cannot appear twice in one request (422 duplicate_key). With full=true, products missing from the list are deactivated.

  • Authentication: Authorization: Bearer rz_live_…
  • Scope: ingest:catalog
  • Plan feature: none (available on every plan)
  • Idempotency-Key: optional (recommended for retries)
NameInTypeLimitsMeaning
fullquerybooleandefault falsetrue: records missing from the list are deactivated (ek- hand-added knowledge rows are kept). Send the full list in one request (≤1000).

Fields marked * are required. Unknown fields are rejected with 422.

ProductBatch

FieldTypeLimitsMeaning
items *ApiProduct[]min items 1, max items 10001–1000 records.

ApiProduct

FieldTypeLimitsMeaning
item_ref *stringmin 1, max 200Permanent product/variant id on your site.
urun_adi *stringmin 1, max 500Product name.
urun_kodustring | nullmax 2000SKU; defaults to item_ref.
model_adistring | nullmax 2000Model name; derived from the name if missing.
markastring | nullmax 2000Brand.
kategoristring | nullmax 2000Category path, Parent > Child.
fiyatnumber | string | null≥ 0, ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Selling price (TRY).
normal_fiyatnumber | string | null≥ 0, ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Price before discount.
indirimdeboolean | nullWhether it is on sale.
stoktabooleandefault trueIn stock (default true).
stokstring | nullmax 2000Stock text read to the customer.
renkstring | nullmax 2000Colour.
depolamastring | nullmax 2000Storage.
bellekstring | nullmax 2000Memory.
islemcistring | nullmax 2000Processor.
ekranstring | nullmax 2000Screen.
uyumlulukstring | nullmax 4000Compatible models.
durumstring | nullmax 2000sıfır (new) / ikinci el (used) / teşhir (display); derived if missing.
kargo_suresistring | nullmax 2000Shipping lead time.
urlstring | nullmax 2000Product page URL.
gorselstring | nullmax 2000Image URL.
kisa_aciklamastring | nullmax 4000Short description (HTML is converted to text).
Terminal window
curl -s -X PUT "$RZ_API/api/v1/catalog/products" \
-H "Authorization: Bearer $RZ_KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: urunler-2026-09-27-1" \
-d '{"items": [{"item_ref": "1234", "urun_adi": "Kablosuz Kulaklık X2", "marka": "Ornek",
"kategori": "Ses > Kulaklık", "fiyat": 1899.90, "normal_fiyat": 2199.90, "stokta": true,
"url": "https://magaza.example.com/urun/x2"}]}'

Schema: IngestResult

FieldTypeLimitsMeaning
dataset *string
inserted *integer
updated *integer
unchanged *integer
deactivated *integer
skipped *integer
{
"dataset": "urun",
"inserted": 1,
"updated": 0,
"unchanged": 0,
"deactivated": 0,
"skipped": 0
}

Error statuses: 401, 403, 404, 413, 422, 429 — see Errors and limits.


/api/v1/catalog/products/{item_ref} — DELETE

Section titled “/api/v1/catalog/products/{item_ref} — DELETE”
DELETE/api/v1/catalog/products/{item_ref}

The product is not deleted but deactivated: the assistant stops suggesting it. Sending the same item_ref again reactivates it. 404 not_found if it does not exist.

  • Authentication: Authorization: Bearer rz_live_…
  • Scope: ingest:catalog
  • Plan feature: none (available on every plan)
  • Idempotency-Key: optional (recommended for retries)
NameInTypeLimitsMeaning
item_ref *pathstringYour permanent product/variant id.
Terminal window
curl -s -X DELETE "$RZ_API/api/v1/catalog/products/1234" -H "Authorization: Bearer $RZ_KEY"

Schema: IngestResult

FieldTypeLimitsMeaning
dataset *string
inserted *integer
updated *integer
unchanged *integer
deactivated *integer
skipped *integer
{
"dataset": "urun",
"inserted": 0,
"updated": 0,
"unchanged": 0,
"deactivated": 1,
"skipped": 0
}

Error statuses: 401, 403, 404, 413, 422, 429 — see Errors and limits.


PUT/api/v1/catalog/categories

Upsert by kategori_id. If yol (path) is missing it is derived from parent categories in the same request (Parent > Child).

  • Authentication: Authorization: Bearer rz_live_…
  • Scope: ingest:catalog
  • Plan feature: none (available on every plan)
  • Idempotency-Key: optional (recommended for retries)
NameInTypeLimitsMeaning
fullquerybooleandefault falsetrue: records missing from the list are deactivated (ek- hand-added knowledge rows are kept). Send the full list in one request (≤1000).

Fields marked * are required. Unknown fields are rejected with 422.

CategoryBatch

FieldTypeLimitsMeaning
items *ApiCategory[]min items 1, max items 10001–1000 records.

ApiCategory

FieldTypeLimitsMeaning
kategori_id *stringmin 1, max 200Category id.
kategori_adi *stringmin 1, max 300Category name.
ust_kategori_idstring | nullmax 2000Parent category id.
yolstring | nullmax 2000Full path; derived if missing.
urun_sayisiinteger | null≥ 0Number of products.
Terminal window
curl -s -X PUT "$RZ_API/api/v1/catalog/categories?full=true" \
-H "Authorization: Bearer $RZ_KEY" -H "Content-Type: application/json" \
-d '{"items": [{"kategori_id": "1", "kategori_adi": "Ses"},
{"kategori_id": "12", "kategori_adi": "Kulaklık", "ust_kategori_id": "1", "urun_sayisi": 42}]}'

Schema: IngestResult

FieldTypeLimitsMeaning
dataset *string
inserted *integer
updated *integer
unchanged *integer
deactivated *integer
skipped *integer
{
"dataset": "kategori",
"inserted": 2,
"updated": 0,
"unchanged": 0,
"deactivated": 0,
"skipped": 0
}

Error statuses: 401, 403, 404, 413, 422, 429 — see Errors and limits.


/api/v1/catalog/categories/{kategori_id} — DELETE

Section titled “/api/v1/catalog/categories/{kategori_id} — DELETE”
DELETE/api/v1/catalog/categories/{kategori_id}

Deactivates the category; sending the same id again reactivates it. 404 not_found if it does not exist.

  • Authentication: Authorization: Bearer rz_live_…
  • Scope: ingest:catalog
  • Plan feature: none (available on every plan)
  • Idempotency-Key: optional (recommended for retries)
NameInTypeLimitsMeaning
kategori_id *pathstringCategory id.
Terminal window
curl -s -X DELETE "$RZ_API/api/v1/catalog/categories/12" -H "Authorization: Bearer $RZ_KEY"

Schema: IngestResult

FieldTypeLimitsMeaning
dataset *string
inserted *integer
updated *integer
unchanged *integer
deactivated *integer
skipped *integer
{
"dataset": "kategori",
"inserted": 0,
"updated": 0,
"unchanged": 0,
"deactivated": 1,
"skipped": 0
}

Error statuses: 401, 403, 404, 413, 422, 429 — see Errors and limits.