Every page under vaybel.com/blanks is rendered from one imported garment research record. The same record is served as JSON and Markdown from the public API so an assistant, a script or a spreadsheet can read exactly what the page shows, with the sources attached.
No authentication
Read-only, anonymous, cached for an hour. Rate limited per IP like every anonymous endpoint.
Snapshot data
Prices are timestamped observations of standard public rates, never quotes. Missing values are null; empty arrays mean nothing was captured, not that nothing exists.
Endpoints
Base URL: https://api.vaybel.com.
| Method | Path | Returns |
|---|---|---|
GET | /garments/ | Published records as index cards. Filters: unit (branded_blank, printful_native, printify_native), category, q. |
GET | /garments/<slug>/ | Identity, thumbnail and links to both projections. |
GET | /garments/<slug>/vaybel.json | Seller projection: identity, materials, colors, sizes, measurements, construction, decoration, provider listings, standard offers, price components, shipping, reviews, certifications, sourcing, decisions, sources, claims, conflicts, gaps, page copy, catalog images. |
GET | /garments/<slug>/vaybel.md | The seller page as cited Markdown with a claim-to-source register. |
GET | /garments/<slug>/beforewear.json | Technical projection (assets, capabilities, manufacturing; no pricing or reviews), also rendered at beforewear.com/garments. |
GET | /garments/schema.json | JSON Schema (draft 2020-12) for the projection payload, garment-access/2.4.0. |
Slugs are the page paths: bella-canvas-3001, gildan-5000, printful-257-aop-tee-m.
curl -s https://api.vaybel.com/garments/bella-canvas-3001/vaybel.json | jq '.data.offers[] | select(.vaybel_public_price_eligible) | {provider_listing_id, base_amount_minor, observed_at}'Reading a projection
data.<section>holds rows with stable ids (mat-001,color-014,offer-pf-base). Rows reference each other by id: a color points at itsmaterial_profile_id, an offer at itsprovider_listing_idandincluded_placement_ids.claimssupport every populated fact.targetsare JSON Pointers intodata(for example/data/measurements/measure-012/value);referencesname thesourcesentries and a locator inside them.verificationtells you whether a source was checked, corroborated by an independent source, or left as a single report.conflictslist targets where sources disagree. An unresolved conflict keeps the valuenull.gapssay what was not found, why, and what would close it.requires_live_quoteon pricing means the provider publishes no standard price and you need a configuration-specific quote.pageis the cited copy used on the web page; each item lists theclaim_idsbehind it.imagesare Vaybel catalog renders of the blank (showcase= sample design on the garment,blank= enhanced garment views).catalog.launch_urlopens the design flow on that blank for signed-in sellers.
Prices are in minor units: base_amount_minor: 1192 with minor_unit_exponent: 2 is 11.92 USD. Only offers with vaybel_public_price_eligible: true are standard, undiscounted prices; the page shows nothing else.
What is not in the public record
Raw provider API payloads, internal audit notes and workspace file paths stay private. The research method is described in each record's research block.
Versions
schema_version on every payload is garment-access/2.4.0. Records carry a record_revision (bella-canvas-3001.2026-09-16.r1); a refreshed research run publishes a new revision and never rewrites an older one in place. Fetch the schema at /garments/schema.json to validate responses.
With an assistant
The Vaybel MCP server exposes the catalog to agents and can generate designs, mockups and listings on any blank here. For read-only research, the Markdown and JSON links need no token: point your agent at https://api.vaybel.com/garments/<slug>/vaybel.md.
Choosing a blank
Both projections include the same selection_summary: suitable_for and tradeoffs
contain garment-only guidance with claim_ids, plus explicit evidence limitations.
The Markdown endpoint includes this brief before the detailed research. Printing,
provider prices and shipping are separate decisions and are not garment rankings.
catalog.Product is the canonical product. The research JSON is its read-only
attachment. Import requires one existing canonical SKU; published attachments must
be withdrawn before replacement, then explicitly published again.
Choose a blank with an agent
The authenticated MCP surface uses the canonical catalog product UUID throughout:
catalog.list_blanksdiscovers products and indicates whether published research is attached.catalog.get_blank(product_id, section)returns one product, its Launch Product link, and the cited when to choose it summary and tradeoffs. Start withoverview; requestmaterials,sizing, orconstructionfor more detail. Sizing includes raw catalog measurement tables.catalog.compare_blanks(product_ids, section)returns the same section for two to four distinct products, in the requested order.
Detail responses return ten rows per research section; comparisons return three. Follow next_offset using the offset argument to continue facts, evidence, conflicts or gaps. Compact claims link to the complete public research register; absence from one page does not mean a fact is undocumented.
These read-only tools require catalog:read and Starter or above. They respect the same connected-provider catalog scope as discovery. Research is a snapshot, not current stock or a price quote. Missing research does not make a published catalog product unavailable. Material profiles keep their color scopes; body measurements and finished garment measurements must not be mixed.
Ask the agent to explain suitability against your fit, fabric, weight, size and color needs. It should cite the evidence, state unknowns, and keep print quality and shipping separate. The tools do not assign a universal quality score or make a selection on your behalf.
Brand Assistant uses these same tools. Choose Find a blank in its conversation starters, or Choose with Brand Assistant on Launch Product. The prompt is editable before sending; choosing a returned blank opens the existing design step. Selecting a blank does not generate a design or spend generation credits.