API Dokumentacija
Sve što trebate da integrirate Pricing API u svoju aplikaciju — autentikacija, endpointi, šeme i primeri.

Autentifikacija
Pricing API koristi API ključeve za autentikaciju. Svaki HTTP zahtev mora da sadrži vaš ključ u X-Api-Key headeru.
X-Api-Key: pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
API ključ generišete u Developer portalu. Plain vrednost ključa vidljiva je samo jednom pri generisanju — čuvajte je na sigurnom mestu.
Važno: Nikada ne ugrađujte API ključ direktno u frontend/mobilni kod. Koristite backend proxy koji dodaje header pri prosleđivanju zahteva ka Pricing API-ju.
Base URL
Svi endpointi su relativni na sledeći base URL:
https://pricing.rs/api/public/v1
API koristi HTTPS. HTTP zahtevi se automatski odbijaju. Sve vreme u responsu je UTC.
GET /productsFree
Pretraga i listanje proizvoda. Vraca paginiranu listu proizvoda sa najnovijim cenama.
Query parametri
| Parametar | Tip | Opis |
|---|---|---|
term | string | Tekst pretrage (naziv, brend, barkod) |
categoryId | int | Filtriranje po ID kategorije |
retailerId | int | Filtriranje po ID prodavnice |
page | int | Stranica (0-based, default: 0) |
perPage | int | Stavki po stranici (max 100, default: 20) |
Response — PublicProductPriceDTO
{
"total": 42,
"page": 0,
"perPage": 20,
"data": [
{
"id": 1234,
"name": "Mleko 3.2% 1L",
"barcode": "8600001234567",
"unit": "l",
"brandName": "Imlek",
"categoryName": "Mlečni proizvodi",
"imageUrl": "https://cdn.pricing.rs/products/1234.jpg",
"prices": [
{
"retailerId": 5,
"retailerName": "Idea",
"price": 139.99,
"currency": "RSD",
"offerStart": "2025-01-01T00:00:00Z",
"offerEnd": "2025-12-31T23:59:59Z"
}
],
"lowestPrice": 129.99,
"highestPrice": 149.99,
"updatedAt": "2025-06-17T00:00:00Z"
}
]
}cURL primer
curl -s "https://pricing.rs/api/public/v1/products?term=mleko&page=0&perPage=5" \ -H "X-Api-Key: pk_live_xxxx"
GET /products/{id}/pricesFree
Vraća detalje jednog proizvoda sa kompletnom istorijom cena po svim prodavnicama.
Path parametri
| Parametar | Tip | Opis |
|---|---|---|
id | int | ID proizvoda |
Query parametri
| Parametar | Tip | Opis |
|---|---|---|
days | int | Broj dana istorije (default: 30, max: 365) |
Response
{
"id": 1234,
"name": "Mleko 3.2% 1L",
"barcode": "8600001234567",
"unit": "l",
"brandName": "Imlek",
"categoryName": "Mlečni proizvodi",
"imageUrl": "https://cdn.pricing.rs/products/1234.jpg",
"priceHistory": [
{
"retailerId": 5,
"retailerName": "Idea",
"day": "2025-06-17",
"price": 139.99,
"currency": "RSD"
}
]
}cURL primer
curl -s "https://pricing.rs/api/public/v1/products/1234/prices?days=30" \ -H "X-Api-Key: pk_live_xxxx"
POST /optimizeDeveloper+
Optimizacioni endpoint — prima listu proizvoda i opcionalnu lokaciju korisnika, vraća koja kombinacija prodavnica daje najnižu ukupnu cenu korpe.
Request body
{
"items": [
{ "productId": 1234, "quantity": 2 },
{ "productId": 5678, "quantity": 1 }
],
"latitude": 44.8176,
"longitude": 20.4569,
"radiusKm": 5.0
}Response — PublicOptimizationResultDTO
{
"totalPrice": 459.97,
"currency": "RSD",
"retailerCount": 2,
"retailers": [
{
"retailerId": 5,
"retailerName": "Idea",
"storeName": "Idea Novi Beograd",
"storeAddress": "Jurija Gagarina 16",
"distanceKm": 1.2,
"subtotal": 279.98,
"items": [
{
"productId": 1234,
"productName": "Mleko 3.2% 1L",
"quantity": 2,
"unitPrice": 139.99,
"lineTotal": 279.98
}
]
}
],
"savings": 42.50,
"singleStoreBestPrice": 502.47,
"calculatedAt": "2025-06-17T12:00:00Z"
}Endpoint je dostupan samo za Developer i Business planove. Free plan dobija 403 Forbidden sa kodom API_ERROR_008.
cURL primer
curl -s -X POST "https://pricing.rs/api/public/v1/optimize" \
-H "X-Api-Key: pk_live_xxxx" \
-H "Content-Type: application/json" \
-d '{"items":[{"productId":1234,"quantity":2}],"latitude":44.82,"longitude":20.46}'GET /meta/quotaFree
Vraća informacije o trenutnoj potrošnji kvote za API ključ koji se koristi u zahtevu.
Response
{
"planSlug": "developer",
"planName": "Developer",
"dailyQuota": 10000,
"todayUsed": 342,
"todayRemaining": 9658,
"monthlyQuota": null,
"monthUsed": 8421,
"resetAtUtc": "2025-06-18T00:00:00Z",
"allowsOptimizationEngine": true
}cURL primer
curl -s "https://pricing.rs/api/public/v1/meta/quota" \ -H "X-Api-Key: pk_live_xxxx"
Kvote po planu
Dnevna kvota se resetuje svake ponoći (UTC). Kada je prekoračena, API vraća 429 do resetovanja.
| Plan | Zahteva / dan | Rate limit / min | API ključevi | /optimize | Cena |
|---|---|---|---|---|---|
| Free | 100 | 10 | 1 | — | Besplatno |
| Developer | 10.000 | 60 | 3 | ✓ | €29 / mes |
| Business | 100.000 | 300 | 10 | ✓ | €199 / mes |
Greške
API koristi standardne HTTP status kodove. Telo svake greške sadrži code i message polje.
HTTP/1.1 429 Too Many Requests
{
"code": "API_ERROR_005",
"message": "Dnevna kvota je prekoračena. Resetuje se 2025-06-18T00:00:00Z."
}| HTTP status | Kod | Opis |
|---|---|---|
| 401 | API_ERROR_001 | API ključ nedostaje ili nije validan |
| 401 | API_ERROR_002 | API ključ je opozvan (revoked) |
| 403 | API_ERROR_003 | Nalog je suspendovan |
| 429 | API_ERROR_005 | Dnevna kvota prekoračena |
| 429 | API_ERROR_006 | Rate limit — previše zahteva u minuti |
| 403 | API_ERROR_008 | Endpoint nije dostupan za vaš plan |
| 404 | API_ERROR_009 | Resurs nije pronađen |
| 400 | API_ERROR_010 | Nevalidan request body |
| 500 | API_ERROR_011 | Interna greška servera |
Spremni da počnete? Generišite besplatni API ključ za par sekundi.
Otvorite Developer portal