Ecosource Trade
Ecosource Trade API
Connect the Ecosource catalogue, your trade pricing and live stock directly into your website, quoting tool or ERP.
Overview
The Ecosource Trade API v1 is a read-only JSON API. It gives approved Ecosource resellers programmatic access to the published Ecosource catalogue, their own trade pricing and current stock availability.
Base URL: https://www.ecosourcetrade.com/api/public/v1/{currency}
Every product is an Ecosource product, identified by its Ecosource code (for example ECO-3215). The API does not expose sourcing, manufacturing or supply-chain information of any kind.
Getting access
API access is granted separately from trade-account approval. Sign in to your Ecosource account, open API Access and submit a request telling us how you intend to use the API and which currencies you need.
Ecosource reviews every request manually. Once approved, your key is available in your account — we never send API keys by email. You can rotate your key at any time, which immediately revokes the previous one.
Authentication
Send your key as a bearer token on every request.
curl https://www.ecosourcetrade.com/api/public/v1/NZD/products \
-H "Authorization: Bearer eco_live_xxxxxxxxxxxxxxxx"An X-API-Key header is also accepted. Keys are stored hashed — treat yours as a password and never expose it in browser code.
Currencies & markets
The currency is part of the URL: NZD, AUD or USD. Each currency maps to the corresponding Ecosource trade market, so product availability and pricing always match that market.
Currency permissions are enforced on the server against your account. Requesting a currency you are not authorised for returns 403 currency_not_authorised — changing the URL can never widen your access.
Endpoints
GET /api/public/v1/{currency}/products — paginated product list.
Query parameters: page (default 1), limit (default 50, max 100), category, subcategory, search, is_new, updated_since (ISO date).
GET /api/public/v1/{currency}/products/{code} — a single product by Ecosource code.
GET /api/public/v1/{currency}/stock — current stock availability, optionally filtered with code.
{
"currency": "NZD",
"pagination": { "page": 1, "limit": 50, "total": 412, "total_pages": 9 },
"products": [ { "code": "ECO-3215", "name": "...", "...": "..." } ]
}Product object
{
"code": "ECO-3215",
"name": "Recycled cotton tote",
"short_description": "...",
"description": "...",
"category": { "name": "Bags", "slug": "bags" },
"subcategory": { "name": "Totes", "slug": "totes" },
"materials": [ { "name": "Recycled cotton", "slug": "recycled-cotton" } ],
"dimensions": "38 x 42 cm",
"weight_grams": 210,
"country_of_origin": "IN",
"moq": 50,
"colours": [ { "name": "Natural", "hex": "#E8E1D3" } ],
"variants": [ { "sku": "ECO-3215-NAT", "colour": "Natural", "stock": 1450,
"stock_updated_at": "2026-08-25T04:00:00Z" } ],
"images": [ { "url": ".../api/public/media/<id>", "alt": "...", "is_primary": true } ],
"documents": [ { "title": "Product specification", "type": "spec", "url": ".../api/public/media/<id>" } ],
"sustainability": { "recycled_content_percent": 100, "attributes": [], "certifications": [] },
"carbon_footprint": { "total_kg_co2e": 1.42, "methodology": "ISO 14067", "calculated_on": "2026-02-01" },
"branding": { "pricing_available": false, "options": [ { "position": "Front", "method": "Screen print" } ] },
"stock": { "status": "in_stock", "quantity": 1450, "updated_at": "2026-08-25T04:00:00Z" },
"pricing": { "currency": "NZD", "unit": "per_unit", "excludes": "branding, freight and tax",
"breaks": [ { "quantity": 50, "unit_price": 12.40 } ] },
"url": "https://www.ecosourcetrade.com/product/recycled-cotton-tote",
"updated_at": "2026-08-20T21:10:00Z"
}Pricing
Prices are your Ecosource trade prices in the requested currency, produced by the same pricing engine as the Ecosource website — the API and the site never disagree.
Prices are returned as a quantity ladder (50 / 100 / 250 / 500 / 1,000), per unit, and exclude branding, freight and tax. A null unit price means the product is not currently priceable at that quantity in that market. Branding pricing is not part of v1.
Prices are indicative and subject to confirmation on order.
Stock
Stock reflects the most recent Ecosource stock synchronisation, not a live warehouse query. Every product and variant carries its own updated_at timestamp so you can display freshness to your customers. Stock is not reserved until an order is placed.
Images & documents
All imagery and documents are served from Ecosource URLs under /api/public/media/. Hotlink these directly or cache them on your side. Only documents cleared for public use are returned.
Errors & rate limits
Errors use a consistent shape:
{ "error": { "code": "currency_not_authorised",
"message": "Your Ecosource Trade API access is not authorised for USD." } }401 missing, invalid, revoked or expired key · 403 access suspended or currency not authorised · 404 unknown product or unsupported currency · 429 rate limited · 500 server error.
Default limits are 60 requests per minute and 10,000 per day, adjustable per account. The daily quota resets at 00:00 UTC. Cache responses and use updated_since for incremental syncs.
Usage rules
Your API access is for your own business use. Trade pricing must not be published publicly, resold, or shared with other resellers. Ecosource may suspend access where usage breaches these terms or the Ecosource Terms of Trade.
Questions? Email hello@ecosourcetrade.com.
