Product API
Connect your shop to biznesebi.ge. There are two ways - pick whichever suits you.
Authentication
Create a key in the panel. Send it in either header:
Base URL
https://biznesebi.ge/api/v1
Authorization: Bearer bzn_live_xxxxxxxxxxxx_yyyy
# ან
X-API-Key: bzn_live_xxxxxxxxxxxx_yyyyIdempotency
external_id is your own product identifier. Sending the same external_id again updates the same record instead of creating a duplicate, which is what makes a retry after a timeout safe.
Endpoints
GET
/meანგარიშის და ლიმიტების მდგომარეობაGET
/categoriesკატეგორიების სია (?q= ძებნით)GET
/citiesქალაქების სიაGET
/productsთქვენი პროდუქცია (cursor-პაგინაცია)POST
/productsპროდუქციის დამატება/განახლება (batch)GET
/products/{external_id}ერთი პროდუქტიPATCH
/products/{external_id}ფასი / მარაგიDELETE
/products/{external_id}არქივში გადატანაPOST /products
curl -X POST https://biznesebi.ge/api/v1/products \
-H "Authorization: Bearer bzn_live_xxxxxxxxxxxx_yyyy" \
-H "Content-Type: application/json" \
-d '{
"products": [
{
"external_id": "SKU-1043",
"title": "ოფისის სავარძელი Ergo Pro",
"description": "ერგონომიული სავარძელი წელის საყრდენით.",
"price": 749.00,
"currency": "GEL",
"availability": "IN_STOCK",
"sku": "ERG-PRO-BLK",
"brand": "Ergo",
"product_url": "https://shop.ge/p/1043",
"images": ["https://shop.ge/img/1043.jpg"],
"specifications": [
{ "key": "მასალა", "value": "ბადე + ალუმინი" },
{ "key": "წონის ლიმიტი", "value": "130 კგ" }
]
}
]
}'200 / 201 / 207
{
"summary": { "created": 1, "updated": 0, "unchanged": 0, "skipped": 0, "failed": 0 },
"quota": { "limit": 1000, "used": 431, "remaining": 569 },
"results": [
{ "external_id": "SKU-1043", "status": "created", "id": "cm4x9..." }
]
}PATCH /products/{external_id}
curl -X PATCH https://biznesebi.ge/api/v1/products/SKU-1043 \
-H "Authorization: Bearer bzn_live_xxxxxxxxxxxx_yyyy" \
-H "Content-Type: application/json" \
-d '{ "price": 699.00, "availability": "IN_STOCK" }'Product fields
| ველი | ტიპი | Note |
|---|---|---|
external_idrequired | string | თქვენი საკუთარი ID - იდემპოტენტურობის გასაღები |
titlerequired | string | 2-200 სიმბოლო |
description | string | მაქს. 5000; თუ არ მიუთითებთ, გამოიყენება title |
type | PRODUCT | SERVICE | ნაგულისხმევი PRODUCT |
price | number | null | 0 ან null = შეთანხმებით |
price_max | number | null | თუ price-ზე მეტია, გამოჩნდება დიაპაზონი |
currency | GEL | USD | EUR | ნაგულისხმევი GEL |
availability | IN_STOCK | OUT_OF_STOCK | MADE_TO_ORDER | მარაგის სტატუსი |
category_id | string | GET /categories-იდან; არასავალდებულო |
city_id | string | GET /cities-იდან; არასავალდებულო |
sku | string | არტიკული / MPN |
brand | string | ავტომატურად ემატება მახასიათებლებში |
min_order_qty | integer | მინიმალური შეკვეთა |
price_unit | string | ცალი, კგ, მ2... |
delivery_info | string | მიწოდების პირობები |
product_url | url | ბმული თქვენს გვერდზე |
images | url[] | მაქს. 20; ჩვენს CDN-ზე გადმოვიტანთ |
specifications | {key, value}[] | მაქს. 50 |
publish | boolean | ნაგულისხმევი true |
Errors
Every error has the same shape. Branch on the code, not on the message - the message may change.
{
"error": {
"code": "batch_too_large",
"message": "This plan allows 100 products per request; 250 were sent."
},
"requestId": "0f2c1a64-..."
}Limits
Limits depend on your plan. The current state is always visible at GET /api/v1/me.
Worth knowing
- Images are copied to our own CDN rather than linked from your server. That protects visitors' privacy and keeps the photos working if your URLs change.
- DELETE does not delete - it archives. The URL, the stats and the inquiries stay.
- A listing created by hand in the panel cannot be overwritten by the API. That is deliberate.
- category_id is optional. Without it, the product is filed under your business's own category.
