Skip to content

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}"}
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 orders
orders = get_all_orders(status="CONFIRMED")
print(f"Fetched {len(orders)} confirmed orders")
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}")

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 units
result = 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"
)
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")
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")
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])