developers.edufacturing.com
One script tag and one custom element. The 3D Print Advisor asks six questions and returns three machines that actually fit — scored against the same rules core that powers our Shopify apps, our APIs and our books. No iframe to style around, no account for your visitors, no data leaving the page except the six answers.
Get a key Read the docs8.9 KBno dependencies
One file, no framework, no bundler. The advisor UI and the rules engine load lazily, only when a widget is actually on the page.
100calls / month
Enough to put the advisor on a shop and see whether it earns its place. No card to start.
4,128rules
Every recommendation carries the rule ids behind it. Where no rule covers a pairing, the widget says so instead of guessing.
The element below runs against this portal with a demo key that is allow-listed for this domain only. Copy it to your own page and it will refuse to load until your domain is on your own key.
<script type="module" src="https://cdn.edufacturing.com/embed.js" data-ef-api="https://developers.edufacturing.com"></script>
<ef-printer-advisor
ef-key="pk_ef_live_your_publishable_key"
ef-locale="en"
ef-theme="auto"></ef-printer-advisor>
The publishable key belongs in the HTML — that is the same model
as <stripe-pricing-table>. What protects it is the domain
allow-list on your key, not secrecy.
| Element | What it does | State |
|---|---|---|
<ef-printer-advisor> |
Six questions, three machines with an explanation and rule citations | Live |
<ef-quote-calculator> |
Instant print quote from an uploaded model | Reserved — enabled once the calculator URL is configured |
<ef-agent-chat> |
An EDi engineering agent in a chat panel | Reserved — enabled once the agent URL is configured |
| Key | Where it lives | What it opens |
|---|---|---|
pk_ef_live_… |
In your page’s HTML | Widget configuration, and only from the domains you list. Off-list requests get 403 and are not counted against your quota. |
sk_ef_live_… |
On your server only | Server-to-server calls. It is shown once, at creation, and never again — not in the dashboard, not in a log line, not in an error message. |
Sending a secret key to the widget endpoint is refused with a named error rather than quietly working — a key that leaks because it happened to work in the browser is worse than one that fails loudly on the first try.