Create a scoped key in your printer’s API settings. Set HMI_BASE_URL to your printer origin and HMI_API_KEY in your server’s secret manager. Start with templates:read.
export HMI_BASE_URL="https://YOUR-PRINTER-HOST"
# Set HMI_API_KEY securely in your shell / secret manager.
curl --fail-with-body "$HMI_BASE_URL/api/v1/templates?per_page=10" \
-H "Authorization: Bearer $HMI_API_KEY" \
-H "Accept: application/json"
// Server-side JavaScript. Never ship this key to the browser.
const response = await fetch(`${process.env.HMI_BASE_URL}/api/v1/templates?per_page=10`, {
headers: {
Authorization: `Bearer ${process.env.HMI_API_KEY}`,
Accept: 'application/json',
},
});
if (!response.ok) throw new Error(`HeyMadeIt ${response.status}: ${await response.text()}`);
const { data } = await response.json();
console.log(data);
# Python standard library; run on your server.
import json, os, urllib.request
request = urllib.request.Request(
os.environ['HMI_BASE_URL'] + '/api/v1/templates?per_page=10',
headers={'Authorization': 'Bearer ' + os.environ['HMI_API_KEY'],
'Accept': 'application/json'},
)
with urllib.request.urlopen(request, timeout=30) as response:
print(json.load(response)['data'])
Runs on your server · No SDK required
The response contains data[] and pagination metadata. The public documentation hostname does not accept your printer’s merchant key.
02 / AUTHENTICATION
A key for your printer. Scopes for each job.
A
Server-to-server requests
Send Authorization: Bearer YOUR_API_KEY and Accept: application/json. Add Content-Type: application/json for JSON writes. Keys work only on their assigned printer hostname.
Every operation lists its required scope. Keep merchant keys on your server, rotate them, and revoke unused keys.
B
A safe handoff to the editor
Your backend creates an editor session for the authenticated customer’s design. Give the browser only the one-use session_token and load the embed SDK from your printer host.
Tokens last five minutes. Redeem by POST, never in a URL. Your exact webshop origin must be allowed on the embed key.
03 / THE INTEGRATION
From blank canvas to production.
01
Find a customer
Map your signed-in shopper to a printer customer.
GET /customers02
Start a design
Choose a template or create a document at your trim size.
POST /designs03
Open the editor
Hand off a short-lived session to your embedded studio.
POST /editor-sessions04
Export or order
Render a PDF, or create an order with an idempotency key.
POST /orders
Exports are asynchronous: queue, poll, then download with bearer auth. For external payments, verify payment on your server before marking an order paid. Read the full integration guide →
04 / EXPLORE THE CONTRACT
Every endpoint, in detail.
29 operations · v1
Search by path or summary. Expand an operation for parameters, example bodies, response schemas and required scopes.
You’re on a printer hostname. “Try it out” sends real requests to https://onprint-test.heymadeit.com. Authorize with a scoped key to execute. Tokens stay in memory for this page; reload to clear them.
Give your coding assistant the contract or the full documentation. Every REST operation, scope and request example comes from the same source as this reference.
Need your assistant to create designs or publish your printer’s templates? Connect it to https://YOUR-PRINTER-HOST/mcp with an authorized user account. MCP uses OAuth/access tokens, separate from merchant REST keys. Read the MCP guide →