Products
Retrieve the Deeline catalogue with reseller pricing, variants, and proxied images. Paginated, filterable by query or category.
Endpoint
GET /api/v1/productsAuthentication
Requires a Bearer key with role reseller or admin. See Authentication.
Authorization: Bearer dl_live_YOUR_KEY
Query parameters
| Param | Type | Default | Description |
|---|---|---|---|
q | string | — | Search text. Max 80 chars. |
category | string | — | Exact category name, case-insensitive. |
page | integer | 1 | Page number. 1–1000. |
pageSize | integer | 24 | Items per page. 1–50. |
Example request
cURL
curl -sS "https://deeline.com.ng/api/v1/products?page=1&pageSize=5&category=Rings" \ -H "Authorization: Bearer dl_live_YOUR_KEY"
JavaScript
const res = await fetch(
"https://deeline.com.ng/api/v1/products?page=1&pageSize=5&category=Rings",
{ headers: { Authorization: "Bearer dl_live_YOUR_KEY" } }
);
const data = await res.json();
if (!data.ok) throw new Error(data.error);
for (const p of data.products) {
console.log(p.name, p.priceNgn);
}Python
import requests
r = requests.get(
"https://deeline.com.ng/api/v1/products",
params={"page": 1, "pageSize": 5, "category": "Rings"},
headers={"Authorization": "Bearer dl_live_YOUR_KEY"},
timeout=30,
)
r.raise_for_status()
data = r.json()
assert data.get("ok"), data.get("error")
for p in data["products"]:
print(p["name"], p["priceNgn"])Response shape
{
"ok": true,
"products": [
{
"id": "cmw...",
"slug": "korean-minimalist-irregular-ring",
"name": "Korean Minimalist Irregular Ring",
"description": "…",
"category": "Rings",
"image": "/api/img?t=eyJhbGc…",
"images": ["/api/img?t=eyJhbGc…"],
"priceNgn": 3450.00,
"currency": "NGN",
"originCountry": "CN",
"variants": [
{
"id": "1797628372869189632",
"sku": "SKU-DEMO-001",
"priceNgn": 3450.00,
"attributes": { "color": "White Gold", "size": "Adjustable" }
}
]
}
],
"total": 3247,
"page": 1,
"pageSize": 5
}Field reference
| Field | Type | Notes |
|---|---|---|
products[].id | string | Deeline product ID. |
products[].priceNgn | number | Reseller price. |
products[].image | string | null | Proxied image URL. |
products[].variants[].id | string | Use as variantId. |
total | number | Total matching products. |
Pagination
GET /api/v1/products?page=1&pageSize=50 GET /api/v1/products?page=2&pageSize=50
Images
Image URLs are returned as /api/img?t=… — a Deeline proxy with a sealed token. The token is issued server-side and cannot be decoded to reveal its source. Prepend your base origin to serve on your site:
const imageUrl = "https://deeline.com.ng" + product.image; // → https://deeline.com.ng/api/img?t=eyJhbGc…
Full reference: Images.
Variants
Each product has one or more variants. Variant IDs are required at checkout.