Stack~
18 October 2026 25 min Members api developer-experience receipts

They published an API and hid the door

A developer surface that exists, is priced, and cannot be found — and the traps that only show up after you build against it.

Verification date: October 2026. Re-verified for this draft: robots.txt, the anonymous OpenAPI spec, and the marketing homepage.

Labels used throughout

  • [FACT] — checkable against the primary source linked in the Receipts section. Where the only evidence is our own observation rather than a published document, it says so.
  • [OPINION] — the author’s view. Argued on top of the facts, never instead of them.
  • [UNVERIFIED] — could not be confirmed. Kept in the text only where the uncertainty matters.

One thing this piece does not do: it contains no instructions for scraping, evading rate limits, bypassing robots.txt, or violating any provider’s terms. Reading a public robots.txt and fetching a public spec is not a bypass. “The portal is hard to find” is the story. “Here is how to abuse it” is not.


I could not find the door, so I checked whether it existed

I run a small self-hosted storefront for a family apparel brand. No Shopify, no app stack, one Linux box and an order desk I wrote myself. That means I need a print-on-demand supplier with a real server-to-server API, and I picked Tapstitch for the fulfilment leg after comparing several.

Integrating it was not the hard part. Finding it was. [FACT] Their signup flow offers six store connectors (Shopify, Etsy, WooCommerce, Wix, Squarespace, BigCommerce), and the headless API is not one of the paths offered. On the marketing homepage as fetched (730 KB, HTTP 200), those six are the integrations named, the word “developer” appears zero times, and no link points at the developer portal. That last part is machine-checkable; the signup walkthrough is my own experience of their account flow, which a reader can reproduce in five minutes by making an account.

[FACT] Nothing on the homepage offers a human a route to the API. Its only “API” strings are internal front-end build variables inside the page source. There is no user-facing link.

Members only

This piece is part of the members' archive — $8 a month or $80 a year.

$8 / month · $80 / year

Sign in if you are already a member, or create an account.

Sign in · Create an account

The proof pack — attachments

Included with the piece — 23 files, 1.5 MB. Sign in as a member to download.

  • Reader brief — audit a public API surface without scraping 00-reader-brief.md · 6.6 KB · sha256 47834ad4
  • API notes — the spec, read honestly api-notes.md · 31.8 KB · sha256 5703f233
  • Raw design-areas capture — MB0048 capture-da2-mb0048-c001-v2.json · 3.6 KB · sha256 cfab0796
  • Raw design-areas capture — R00286 capture-da2-r00286-c001-v6.json · 5.2 KB · sha256 2c30c896
  • Raw design-areas capture — RT0034 capture-da2-rt0034-c001-v2.json · 3.5 KB · sha256 389b1530
  • Raw design-areas capture — RT0063 capture-da2-rt0063-c001-v5.json · 8.1 KB · sha256 9cf53e76
  • Raw design-areas capture — RT0076 capture-da2-rt0076-c001-v4.json · 9.3 KB · sha256 0ce7c937
  • Raw design-areas capture — RU0001 capture-da2-ru0001-c001-v3.json · 1.5 KB · sha256 d45b321f
  • Raw design-areas capture — RW0016 capture-da2-rw0016-c001-v3.json · 9.8 KB · sha256 8a489bfb
  • Raw design-areas capture — UT0231 capture-da2-ut0231-c001-v2.json · 4.1 KB · sha256 ea57331d
  • Raw design-areas capture — RW0016, DTG, international capture-design-areas-rw0016-c001-v3-dtg-international.json · 9.9 KB · sha256 3ba9f57a
  • The integration code — one client, signed webhooks integration-client.md · 4.6 KB · sha256 3ec44558
  • Licence — personal use licence.md · 0.5 KB · sha256 cd1f7f1c
  • The read-only probe (probe.py) probe.py · 9.5 KB · sha256 b3d59bb0
  • Receipts — every primary source used receipts.md · 13.3 KB · sha256 4ed78ef7
  • How to reproduce the integration evidence reproduce.md · 2.0 KB · sha256 6a9f430d
  • robots.txt as captured robots.txt · 0.3 KB · sha256 3d254876
  • The anonymous OpenAPI 3.0.1 spec — 20 paths, 77 schemas tapstitch-openapi-3.0.1.json · 105 KB · sha256 8b1f49fe