Getting started
The API is read-only and returns the same catalog shown on www.yorkn.com. All prices are final sell prices — freight and duties included to one location in the USA (USD) or Canada (CAD).
To get an API key, email info@yorkn.com with your
company name. Keys look like yk_live_… and are free for Yorkn customers and
distributor partners.
Authentication
Send your key with every request, either as a header (recommended) or bearer token:
curl -H "X-API-Key: YOUR_KEY" "https://api.yorkn.com/v1/products?per_page=5" curl -H "Authorization: Bearer YOUR_KEY" "https://api.yorkn.com/v1/products?per_page=5"
REST API reference
Base URL: https://api.yorkn.com — all responses are JSON (UTF-8), CORS enabled.
| Endpoint | Description |
|---|---|
GET/v1/products | List / search products (paginated) |
GET/v1/products/{sku} | One product by SKU |
GET/v1/categories | All categories with product counts |
GET/v1/health | Service health (no auth required) |
GET /v1/products — query parameters
| Parameter | Default | Description |
|---|---|---|
page | 1 | Page number |
per_page | 50 | Items per page (max 100) |
search | — | Free-text search over name, SKU, keywords, theme, category |
category | — | Exact category name (see /v1/categories) |
updated_since | — | YYYY-MM-DD — only products added or edited since this date. Use this for incremental catalog syncs. |
sort | newest | newest, name, price_asc, price_desc |
The list response wraps products with paging info:
{ "total": 18587, "page": 1, "per_page": 50, "total_pages": 372, "products": [ … ] }
Product object
{
"sku": "552999",
"name": "Lightweight Crossbody Shoulder Bag",
"description": "Plain-text description…",
"category": "Bags", "category_2": null,
"theme": "Gift,Household", "keywords": null,
"colors": "Black", "material": "Oxford Cloth",
"imprint_method": "Heat Transfer",
"imprint_size_in": { "length": 4, "width": 3 }, // inches, null if n/a
"product_size_in": { "length": 5.9, "width": 2, "height": 7.9 }, // inches
"min_quantity": 1000,
"pricing": {
"currency_note": "Prices include freight and duties to 1 location in the USA (USD) / Canada (CAD).",
"tiers": [
{ "quantity": 1000, "price_usd": 12.25, "price_cad": 17.15 },
{ "quantity": 2000, "price_usd": 11.63, "price_cad": 16.28 }
],
"setup_charge_usd": 166.67, // one-time decoration setup (USD)
"mold_charge_usd": null // replaces setup charge when custom mold required
},
"lead_time_days": 22, // production + transit
"ship_by": "Air", // Air or Boat
"template_url": null, // artwork template download when available
"images": [ { "url": "https://order.yorkn.com/…jpg", "thumbnail": "…" } ],
"updated_at": "2026-07-31",
"url": "https://www.yorkn.com/search?q=552999"
}
updated_since daily or weekly.Code examples
Python
import requests
API = "https://api.yorkn.com"
KEY = {"X-API-Key": "YOUR_KEY"}
# incremental sync of everything changed in the last 7 days
page, since = 1, "2026-08-19"
while True:
r = requests.get(f"{API}/v1/products",
params={"updated_since": since, "page": page, "per_page": 100},
headers=KEY).json()
for p in r["products"]:
print(p["sku"], p["name"], p["pricing"]["tiers"][0])
if page >= r["total_pages"]: break
page += 1
JavaScript / Node
const res = await fetch("https://api.yorkn.com/v1/products/552999", {
headers: { "X-API-Key": "YOUR_KEY" },
});
const product = await res.json();
PromoStandards services (for distributors)
For distributor systems that integrate via
PromoStandards, Yorkn exposes standard SOAP 1.1
endpoints. Use the standard PromoStandards WSDLs; authentication is the standard
id/password pair in each request body — password is your
Yorkn API key, id is your company name.
| Service | Version | Endpoint URL | Operations |
|---|---|---|---|
| Product Data | 2.0.0 | https://api.yorkn.com/promostandards/product-data/2.0.0 |
getProduct, getProductDateModified, getProductSellable, getProductCloseOut |
| Media Content | 1.1.0 | https://api.yorkn.com/promostandards/media-content/1.1.0 |
getMediaContent, getMediaDateModified |
| Product Pricing & Configuration | 1.0.0 | https://api.yorkn.com/promostandards/ppc/1.0.0 |
getConfigurationAndPricing, getFobPoints, getAvailableLocations, getAvailableCharges, getDecorationColors |
Data model notes
productId= Yorkn SKU; each product has a single part withpartId=productId.- Two FOB points:
US(currency USD) andCA(currency CAD) — prices are delivered, freight & duties included to one location in that country. - Pricing:
priceTypeis accepted but one price list applies (your delivered cost). Currencies:USD,CAD. - One decoration location ("Standard Location") with the product's default imprint method;
the setup or mold charge is returned as a
Setup-type charge. - No closeout program —
getProductCloseOutreturns an empty array.
Example request
curl -X POST https://api.yorkn.com/promostandards/product-data/2.0.0 \
-H "Content-Type: text/xml; charset=utf-8" \
-d '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://www.promostandards.org/WSDL/ProductDataService/2.0.0/"
xmlns:shar="http://www.promostandards.org/WSDL/ProductDataService/2.0.0/SharedObjects/">
<soapenv:Body>
<ns:GetProductRequest>
<shar:wsVersion>2.0.0</shar:wsVersion>
<shar:id>YourCompany</shar:id>
<shar:password>YOUR_KEY</shar:password>
<shar:localizationCountry>US</shar:localizationCountry>
<shar:localizationLanguage>en</shar:localizationLanguage>
<shar:productId>552999</shar:productId>
</ns:GetProductRequest>
</soapenv:Body>
</soapenv:Envelope>'
Errors & rate limits
| Status | Meaning |
|---|---|
401 | Missing, invalid, or revoked API key |
404 | Product / endpoint not found |
429 | Rate limit exceeded — 120 requests per minute per key. Honor the Retry-After header. |
500 | Server error — retry with backoff; contact us if persistent |
PromoStandards operations return spec-standard ServiceMessage /
ErrorMessage elements (105 = auth failed, 120 = missing field, 130 = product not
found) inside a normal 200 response.