Skip to content
WIKI · DEVELOPERS

Wyntek Agent API Reference

Wyntek's agent API is a small public REST API under https://wyntek.tech/api/agent. It returns the live catalog and dollar estimates as JSON, with no key or account, and mirrors the MCP server's tools for agents that prefer plain HTTP.

Updated 30 Sep 2026 · 3 min read · By Wyntek

Endpoints

Agent API endpoints
Method and pathPurpose
GET /api/agent/catalogProcesses, materials by plan, plans, file formats, and quantity limits. Cached for up to 5 minutes.
POST /api/agent/estimateA dollar estimate for one part design
GET /api/agent/openapi.jsonOpenAPI 3.1 description of this API
GET /.well-known/api-catalogAPI catalog linkset (RFC 9727) pointing to the OpenAPI file and llms.txt
GET /llms.txtPlain-text overview of Wyntek for language models

Get the catalog

Request
curl -s https://wyntek.tech/api/agent/catalog
Response, shortened to one process and material
{
  "provider": "Wyntek",
  "currency": "USD",
  "processes": [
    {
      "id": "fdm",
      "name": "FDM 3D printing",
      "typical_lead_time_days": 3,
      "materials": [
        {
          "id": "pla",
          "name": "PLA",
          "process": "fdm",
          "available_on_plans": [
            "free",
            "pro",
            "max",
            "enterprise"
          ]
        }
      ]
    }
  ],
  "file_formats": {
    "instant_estimate": [
      "stl",
      "obj"
    ],
    "manual_review": [
      "3mf",
      "step",
      "stp",
      "iges",
      "igs",
      "sldprt",
      "f3d",
      "dxf"
    ]
  },
  "quantity": {
    "min": 1,
    "max": 100
  },
  "ordering": {
    "summary": "Orders are placed by a signed-in person on wyntek.tech. Agents can prepare a prefilled order link; the person uploads the file, reviews the final price and submits.",
    "requires_account": true,
    "agent_payment_supported": false
  }
}

Estimate a price

Send JSON with process, material, an optional quantity, and exactly one of volume_cm3 or files. The arguments match the MCP estimate_price tool.

Request
curl -s -X POST https://wyntek.tech/api/agent/estimate \
  -H "Content-Type: application/json" \
  -d '{"process":"fdm","material":"pla","volume_cm3":8}'
Response
{
  "process": "fdm",
  "material": {
    "id": "pla",
    "name": "PLA"
  },
  "quantity": 1,
  "currency": "USD",
  "available_on_plans": [
    "free",
    "pro",
    "max",
    "enterprise"
  ],
  "typical_lead_time_days": 3,
  "order_url": "https://wyntek.tech/jobs/new?service=fdm&material=pla",
  "note": "Estimate only, excluding shipping. The binding price is calculated from the uploaded file when the order is submitted on wyntek.tech.",
  "status": "estimated",
  "volume_cm3": 8,
  "unit_price": {
    "amount_cents": 100,
    "formatted": "$1"
  },
  "total_price": {
    "amount_cents": 100,
    "formatted": "$1"
  }
}

To price a mesh, send it inline as base64. STL and OBJ files in millimetres are measured. 3MF, STEP, IGES, SLDPRT, F3D, and DXF come back with status manual_review and a reason, because those formats are priced after review.

Estimate from an STL file (macOS or Linux)
B64=$(base64 < bracket.stl | tr -d '\n')
curl -s -X POST https://wyntek.tech/api/agent/estimate \
  -H "Content-Type: application/json" \
  -d "{\"process\":\"fdm\",\"material\":\"petg\",\"quantity\":10,\"files\":[{\"name\":\"bracket.stl\",\"content_base64\":\"$B64\"}]}"

Every estimate includes an order_url, and you can build one yourself: https://wyntek.tech/jobs/new?service=fdm&material=pla&quantity=10. The person who opens it signs in, uploads the file, reviews the binding price, and submits. The API cannot place or pay for orders.

Errors and limits

Errors share one shape, an error object with a code and a message. CORS is open to any origin and no credentials are used, so the API can be called from a browser.

Error body (HTTP 400)
{
  "error": {
    "code": "unknown_material",
    "message": "Material \"unobtainium\" is not available for FDM. Available: pla, petg, abs, nylon"
  }
}
Agent API errors
StatusCodeMeaning
400invalid_request, unknown_material, unparseable_fileThe input failed validation, the material is not orderable for that process, or a mesh could not be measured
413too_largeBody over about 4.4 MB; inline files are limited to 3 MB
415invalid_requestContent-Type is not application/json
429rate_limitedAbout 30 estimates a minute per client; wait for the Retry-After header
503unavailablePricing is briefly unavailable; try again shortly

Sources

  1. OpenAPI Specification 3.1
  2. RFC 9727: api-catalog well-known URI
  3. The llms.txt proposal

STOP BUILDING LABS.
START BUILDING PRODUCTS.

GET STARTED

Free to start · no card required · 30-second signup