Developers
Swagg Merch Catalogue API.
Put our full range — live stock, trade pricing, colours, branding and templates — straight onto your own website.
1. Your key
Each reseller receives a private key that looks like swg_1a2b3c4d_…. Send it on every request as an X-Api-Key header. Keep it server-side — never expose it in browser JavaScript.
curl -H "X-Api-Key: YOUR_KEY" \
"https://www.swaggmerch.com/api/public/v1/AUD/products?page=1&limit=50"2. Currencies
Choose the currency in the URL. Prices exclude tax (GST is added at checkout: 10% AU, 15% NZ).
- https://www.swaggmerch.com/api/public/v1/AUD/products
- https://www.swaggmerch.com/api/public/v1/NZD/products
- https://www.swaggmerch.com/api/public/v1/USD/products
3. Endpoints
| Endpoint | Returns | Query options |
|---|---|---|
| GET /{currency}/products | Paginated catalogue: identity, images, colours, variants, live stock, trade price ladder, branding options and template links. | page, limit (max 200), category, search, in_stock=true, updated_since=ISO date, branding=false, format=csv |
| GET /{currency}/products/{code} | One product by Swagg item code (SWG-BAG-6862) or product slug. | — |
| GET /{currency}/stock | Lightweight live stock feed per variant — poll this often instead of the full catalogue. | page, limit (max 500) |
Add &format=csv to the products endpoint for a spreadsheet/importer-friendly export (one row per product colour).
4. Example response
{
"currency": "AUD",
"pagination": { "page": 1, "limit": 50, "total": 4412, "next_page": 2 },
"products": [
{
"code": "SWG-BAG-6862",
"name": "Tempest Vacuum Travel Backpack",
"url": "https://www.swaggmerch.com/product/tempest",
"description": { "short": "...", "full": "..." },
"material": "600D polyester",
"moq": 50,
"measurements": { "size_summary": "30 x 45 x 15 cm", "weight_grams": 620 },
"packaging": { "units_per_carton": 20, "carton_weight_kg": 13.2 },
"images": [{ "url": "https://...", "kind": "main", "colour": "Navy" }],
"colours": [{ "name": "Navy", "hex": "#16213F", "images": ["https://..."], "stock_on_hand": 840 }],
"sizes": ["S", "M", "L"],
"variants": [{ "sku": "...", "colour": "Navy", "size": null, "stock_on_hand": 840, "incoming_eta": "2026-09-01" }],
"stock": { "total_on_hand": 1240, "status": "in_stock" },
"pricing": {
"currency": "AUD",
"tax": "excluding tax",
"tiers": [{ "quantity": 50, "unit_price": 42.5, "total_price": 2125 }]
},
"branding": {
"template_url": "https://www.swaggmerch.com/branding-template/tempest",
"options": [{ "method": "Screen print", "position": "Front", "setup_fee": 65, "price_per_unit": 1.2, "max_colours": 4 }]
}
}
]
}5. Good practice
- Sync the full catalogue nightly, then poll
/stockhourly for stock changes. - Use
updated_sincefor incremental syncs. - Cache image URLs for no more than 7 days — they are refreshed regularly.
- Default rate limit is 120 requests per minute; a 429 response means slow down.
- Prices are your trade cost. Apply your own retail margin before publishing.
Need a key?
Email hello@swaggmerch.com with your business name, website and the currency you sell in.
