Skip to content

Server API quickstart

Base URL https://api.tryyoursize.com
Authentication Authorization: Bearer sk_test_… (or a restricted key rk_…)
Version TYS-Version: 2026-10-25 (see Versioning)
Errors { error, status, code, doc_url, request_id } plus the X-Request-ID header (see Errors)
Retries Idempotency-Key on POST (see Idempotency)
Lists limit + cursor → { data, has_more, next_cursor } (see Pagination)

Catalog paths take a TryYourSize product ID or your SKU. The catalog is shared by test and live mode: test answers drafts, live answers published versions.

Terminal window
npm install @tryyoursize/node
import TryYourSize from "@tryyoursize/node";
const tys = new TryYourSize(process.env.TYS_SECRET_KEY!);
const product = await tys.products.create(
{ external_id: "CREW-TSHIRT", name: "Crew T-shirt", category: "tshirt" },
{ idempotencyKey: crypto.randomUUID() },
);
// Your shop's labels for each Studio size: recommendations come back in these labels.
await tys.products.sizeMap.save("CREW-TSHIRT", {
entries: [
{ studio_size: "S", shop_value: "Small" },
{ studio_size: "M", shop_value: "Medium" },
{ studio_size: "L", shop_value: "Large" },
],
});
for await (const p of tys.products.list({ limit: 50 })) {
console.log(p.id, p.external_id);
}

Field names and bodies are in the API reference.

Node Python Endpoint
tys.recommendations.create({ handle, products }) tys.recommendations.create(...) POST /v1/recommendations
tys.products.list / create / retrieve / update same /v1/products, /v1/products/{product}
tys.products.sizeMap.retrieve / save tys.products.size_map.retrieve / save /v1/products/{product}/size_map
tys.products.garments.list / createDraft tys.products.garments.list / create_draft /v1/products/{product}/garments
tys.garments.retrieve / updateDraft / publish tys.garments.retrieve / update_draft / publish /v1/garments/{garment_id}
tys.fitGroups.list / create / retrieve / linkProducts tys.fit_groups.list / create / retrieve / link_products /v1/fit_groups
tys.orders.create tys.orders.create POST /v1/orders
tys.returns.create tys.returns.create POST /v1/returns
tys.auditEvents.list tys.audit_events.list GET /v1/audit_events
tys.webhooks.constructEvent(rawBody, header, secret) tryyoursize.Webhook.construct_event(payload, sig_header, secret) Webhooks
import TryYourSize, { TryYourSizeError } from "@tryyoursize/node";
try {
await tys.products.retrieve("NO-SUCH-SKU");
} catch (err) {
if (err instanceof TryYourSizeError) {
console.error(err.code, err.docUrl, err.requestId); // "not_found", https://docs…/api/errors/#not_found, …
}
}

Was this page helpful?