Code Examples
import requests
BASE_URL = "https://api.prediko.io/api/v1"API_KEY = "pk_live_YOUR_API_KEY"HEADERS = {"Authorization": f"Bearer {API_KEY}"}const BASE_URL = "https://api.prediko.io/api/v1";const API_KEY = "pk_live_YOUR_API_KEY";const headers = { "Authorization": `Bearer ${API_KEY}` };Fetch All Orders
Section titled “Fetch All Orders”def get_all_orders(status=None): params = {} if status: params["order_status"] = status
response = requests.get( f"{BASE_URL}/orders", headers=HEADERS, params=params ) data = response.json() return data["data"]
# Get all confirmed ordersorders = get_all_orders(status="CONFIRMED")print(f"Fetched {len(orders)} confirmed orders")async function getAllOrders(status = null) { const params = new URLSearchParams(); if (status) params.append("order_status", status);
const response = await fetch( `${BASE_URL}/orders?${params}`, { headers } ); const data = await response.json(); return data.data;}
// Get all confirmed ordersconst orders = await getAllOrders("CONFIRMED");console.log(`Fetched ${orders.length} confirmed orders`);Create a Purchase Order
Section titled “Create a Purchase Order”def create_purchase_order(po_name, sku, warehouse, supplier, quantity, delivery_date): response = requests.post( f"{BASE_URL}/orders", headers={**HEADERS, "Content-Type": "application/json"}, json={ "data": [ { "sku": sku, "warehouse": warehouse, "quantity_ordered": quantity, "quantity_received": 0, "supplier": supplier, "purchase_order_name": po_name, "delivery": delivery_date, "status": "DRAFT" } ] } ) return response.json()
result = create_purchase_order( po_name="PO-2025-001", sku="SKU-ABC123", warehouse="Main Warehouse", supplier="Acme Corp", quantity=100, delivery_date="2025-03-01")print(f"PO created: {result}")async function createPurchaseOrder(poName, sku, warehouse, supplier, quantity, deliveryDate) { const response = await fetch(`${BASE_URL}/orders`, { method: "POST", headers: { ...headers, "Content-Type": "application/json" }, body: JSON.stringify({ data: [ { sku, warehouse, quantity_ordered: quantity, quantity_received: 0, supplier, purchase_order_name: poName, delivery: deliveryDate, status: "DRAFT" } ] }) }); return response.json();}
const result = await createPurchaseOrder( "PO-2025-001", "SKU-ABC123", "Main Warehouse", "Acme Corp", 100, "2025-03-01");console.log("PO created:", result);Record a Receipt
Section titled “Record a Receipt”Update a PO with received quantity (cumulative):
def record_receipt(po_name, sku, warehouse, supplier, quantity_ordered, quantity_received, delivery_date): # Determine status based on received quantity if quantity_received == 0: status = "DRAFT" elif quantity_received >= quantity_ordered: status = "FULLY_RECEIVED" else: status = "PARTIALLY_RECEIVED"
response = requests.post( f"{BASE_URL}/orders", headers={**HEADERS, "Content-Type": "application/json"}, json={ "data": [ { "sku": sku, "warehouse": warehouse, "quantity_ordered": quantity_ordered, "quantity_received": quantity_received, "supplier": supplier, "purchase_order_name": po_name, "delivery": delivery_date, "status": status } ] } ) return response.json()
# Record receiving 50 out of 100 unitsresult = record_receipt( po_name="PO-2025-001", sku="SKU-ABC123", warehouse="Main Warehouse", supplier="Acme Corp", quantity_ordered=100, quantity_received=50, delivery_date="2025-03-01")async function recordReceipt(poName, sku, warehouse, supplier, quantityOrdered, quantityReceived, deliveryDate) { // Determine status based on received quantity let status; if (quantityReceived === 0) { status = "DRAFT"; } else if (quantityReceived >= quantityOrdered) { status = "FULLY_RECEIVED"; } else { status = "PARTIALLY_RECEIVED"; }
const response = await fetch(`${BASE_URL}/orders`, { method: "POST", headers: { ...headers, "Content-Type": "application/json" }, body: JSON.stringify({ data: [ { sku, warehouse, quantity_ordered: quantityOrdered, quantity_received: quantityReceived, supplier, purchase_order_name: poName, delivery: deliveryDate, status } ] }) }); return response.json();}
// Record receiving 50 out of 100 unitsconst result = await recordReceipt( "PO-2025-001", "SKU-ABC123", "Main Warehouse", "Acme Corp", 100, 50, "2025-03-01");Get SKUs with Low Stock
Section titled “Get SKUs with Low Stock”def get_low_stock_skus(threshold_days=30): response = requests.post( f"{BASE_URL}/skus", headers={**HEADERS, "Content-Type": "application/json"}, params={"limit": 1000}, json={} ) data = response.json()
low_stock = [ sku for sku in data["data"] if sku.get("days_left") and sku["days_left"] < threshold_days ]
return low_stock
low_stock = get_low_stock_skus(threshold_days=30)for sku in low_stock: print(f"{sku['sku_name']}: {sku['days_left']} days left")async function getLowStockSkus(thresholdDays = 30) { const response = await fetch( `${BASE_URL}/skus?limit=1000`, { method: "POST", headers: { ...headers, "Content-Type": "application/json" }, body: JSON.stringify({}) } ); const data = await response.json();
return data.data.filter( sku => sku.days_left && sku.days_left < thresholdDays );}
const lowStock = await getLowStockSkus(30);lowStock.forEach(sku => { console.log(`${sku.sku_name}: ${sku.days_left} days left`);});Paginate Through SKUs
Section titled “Paginate Through SKUs”def get_all_skus(): skus = [] offset = 0 limit = 1000
while True: response = requests.post( f"{BASE_URL}/skus", headers={**HEADERS, "Content-Type": "application/json"}, params={"limit": limit, "offset": offset}, json={} ) data = response.json() skus.extend(data["data"])
if not data["pagination"]["has_more"]: break offset += limit
return skus
all_skus = get_all_skus()print(f"Fetched {len(all_skus)} SKUs")async function getAllSkus() { const skus = []; let offset = 0; const limit = 1000;
while (true) { const response = await fetch( `${BASE_URL}/skus?limit=${limit}&offset=${offset}`, { method: "POST", headers: { ...headers, "Content-Type": "application/json" }, body: JSON.stringify({}) } ); const data = await response.json(); skus.push(...data.data);
if (!data.pagination.has_more) break; offset += limit; }
return skus;}
const allSkus = await getAllSkus();console.log(`Fetched ${allSkus.length} SKUs`);List Suppliers and Warehouses
Section titled “List Suppliers and Warehouses”def get_suppliers(): response = requests.get(f"{BASE_URL}/suppliers", headers=HEADERS) return response.json()["data"]
def get_warehouses(): response = requests.get(f"{BASE_URL}/warehouses", headers=HEADERS) return response.json()["data"]
suppliers = get_suppliers()warehouses = get_warehouses()
print("Suppliers:", [s["name"] for s in suppliers])print("Warehouses:", [w["name"] for w in warehouses])async function getSuppliers() { const response = await fetch(`${BASE_URL}/suppliers`, { headers }); const data = await response.json(); return data.data;}
async function getWarehouses() { const response = await fetch(`${BASE_URL}/warehouses`, { headers }); const data = await response.json(); return data.data;}
const suppliers = await getSuppliers();const warehouses = await getWarehouses();
console.log("Suppliers:", suppliers.map(s => s.name));console.log("Warehouses:", warehouses.map(w => w.name));