The Inspire Applied API lets humans and AI agents submit manufacturing requests, get instant quotes, and communicate with the AI node (MakerAsAService) that runs the shop.
Base URL: https://makerasaservice.defyimpossible.tech
Content-Type: application/json (all endpoints except file upload)
Response: Always JSON. Always includes "ok": true on success.
All /api/agent/* endpoints require an API key. Public endpoints (contact form, file upload, chat widget) do not.
# All /api/agent/* requests must include: X-Agent-Key: your-api-key-here
Returns the node's current status, capabilities, and active endpoints. No request body required.
AUTH: Required
RESPONSE 200:
{
"node": "inspire-applied-north-andover",
"agent": "MakerAsAService",
"version": "1.0.0",
"status": "online",
"uptime_seconds": 72413,
"capabilities": [
"laser-cutting",
"laser-engraving",
"cnc-machining",
"fdm-3d-printing",
"resin-3d-printing",
"component-restoration",
"custom-acrylic-blanks",
"chat",
"file-intake",
"contact-form",
"pricing-calc"
],
"endpoints": {
"chat": "POST /api/agent/chat",
"query": "POST /api/agent/query",
"status": "GET /api/agent/status",
"pricing": "POST /api/agent/pricing"
},
"timestamp": "2026-05-23T15:30:00.000Z"
}
CURL:
curl -s https://makerasaservice.defyimpossible.tech/api/agent/status \
-H "X-Agent-Key: your-key" | python3 -m json.tool
Query the node for structured information. Use this for machine-to-machine discovery: capabilities, services, contact info, location.
AUTH: Required
REQUEST BODY:
| Field | Type | Description |
|---|---|---|
| query_type | string | "capabilities" | "services" | "contact" | "location" |
CURL (capabilities):
curl -s -X POST https://makerasaservice.defyimpossible.tech/api/agent/query \ -H "Content-Type: application/json" \ -H "X-Agent-Key: your-key" \ -d '{"query_type":"capabilities"}'
RESPONSE (capabilities):
{
"ok": true,
"node": "inspire-applied-north-andover",
"query_type": "capabilities",
"services": [
"Laser Cutting & Engraving (Fiber/CO2/Diode)",
"CNC Subtractive Machining",
"FDM & Resin 3D Printing",
"Powder Coating & Wet Spray Finishing",
"UV Direct Printing (CMYK-W-CMYK-Gloss)",
"Electroplating",
"POP4 3D Scanning & QC Deviation Reports",
"Component Recovery & Technical Restoration",
"Prototype-to-Production Bridge"
],
"materials": "304SS, mild steel, aluminum, acrylic (cast/extruded), plywood, PLA, PETG, ASA, ABS, resin",
"pricing_tiers": {
"proto-lite": "$99/part (up to 8x8\")",
"proto-standard": "$199/part",
"proto-qc": "$349/part (with 3D scan QC report)"
}
}
Send a message to the AI node and get an intelligent response. Use this for quoting, qualification, and general manufacturing Q&A.
AUTH: Required
REQUEST BODY:
| Field | Type | Required | Description |
|---|---|---|---|
| message | string | yes | The message to send to the AI node |
| context | string | no | Additional context (previous conversation, project details) |
| agent_id | string | no | Identifier for the calling agent/system |
| intent | string | no | "quote" | "info" | "status" | "support" |
EXAMPLE ▸ Requesting a quote:
curl -s -X POST https://makerasaservice.defyimpossible.tech/api/agent/chat \ -H "Content-Type: application/json" \ -H "X-Agent-Key: your-key" \ -d '{ "message": "I need 5 stainless steel brackets, 4\"x12\"x1/8\" thick, 304SS, laser cut + powder coated white + UV printed logo. Timeline: 2 weeks.", "agent_id": "acme-design-bot", "intent": "quote" }'
RESPONSE 200:
{
"ok": true,
"reply": "I can quote that. 5 brackets at 4\"x12\", 304SS 1/8\", powder coated white with UV printed logo. That's Proto-Standard tier: $199/part x 5 = $995. Includes laser cut, powder coat, UV print, and photo QC. Timeline: 3-7 business days after CAD approval. Want me to send a formal quote?",
"node": "inspire-applied-north-andover",
"timestamp": "2026-05-23T15:30:00.000Z"
}
Get a structured price quote based on part dimensions, material, quantity, and finish requirements.
AUTH: Required
REQUEST BODY:
| Field | Type | Required | Description |
|---|---|---|---|
| shape | string | yes | "rect" | "circle" | "custom" |
| width_in | number | no | Width in inches |
| height_in | number | no | Height in inches |
| diameter_in | number | no | Diameter (for circles) |
| thickness_in | number | no | Material thickness in inches |
| qty | number | yes | Quantity needed |
| material | string | no | "304ss" | "mild-steel" | "aluminum" | "acrylic-cast" | "acrylic-extruded" | "plywood" |
| finish | string | no | "none" | "powder-coat" | "wet-spray" | "electroplate" | "varnish" |
| uv_print | boolean | no | Include UV direct print graphics |
| qc_level | string | no | "photo" | "3d-scan" |
CURL:
curl -s -X POST https://makerasaservice.defyimpossible.tech/api/agent/pricing \ -H "Content-Type: application/json" \ -H "X-Agent-Key: your-key" \ -d '{ "shape": "rect", "width_in": 4, "height_in": 12, "thickness_in": 0.125, "qty": 5, "material": "304ss", "finish": "powder-coat", "uv_print": true, "qc_level": "3d-scan" }'
RESPONSE 200:
{
"ok": true,
"tier": "proto-qc",
"unit_price": 349,
"total": 1745,
"currency": "USD",
"includes": [
"Laser cut (Fiber), 304SS 0.125\"",
"Powder coat finish",
"UV direct print (CMYK-W)",
"POP4 3D scan + CAD-to-part deviation report",
"Traceable QC documentation"
],
"turnaround": "5-10 business days",
"next_step": "Submit CAD file via POST /api/upload for formal quote lock"
}
To submit a complete project with CAD files, use these two endpoints together. No API key required for the public contact path.
STEP 1 ▸ Upload CAD file:
# multipart/form-data POST curl -s -X POST https://makerasaservice.defyimpossible.tech/api/upload \ -F "file=@bracket.step"
{
"ok": true,
"filename": "bracket.step",
"path": "/home/node/.openclaw/uploads/2026-05-23T15-30-00-bracket.step"
}
STEP 2 ▸ Submit project info:
curl -s -X POST https://makerasaservice.defyimpossible.tech/api/contact \ -H "Content-Type: application/json" \ -d '{ "name": "Acme Corp", "email": "eng@acme.com", "services": ["proto-standard"], "quantity": "5", "timeline": "2-weeks", "message": "Laser cut 5 brackets from attached STEP file. 304SS 1/8\". Powder coat white. UV print our logo." }'
| Code | Meaning |
|---|---|
| 400 | Missing required field ▸ check your request body |
| 401 | Invalid or missing X-Agent-Key header |
| 413 | File too large ▸ 20MB max for uploads |
| 500 | Internal server error ▸ retry or contact support |
| 503 | Node temporarily unavailable ▸ retry in 60s |