❄️❄️❄️❅❄️❅❄️❅❄️❄️❅❅❅❆❅❄️❄️❅❆❆❄️❄️❅❆❄️❅❆❅❄️❄️❄️❆❄️❄️❄️❄️❄️❄️❅❄️❆❄️❄️❄️❅❅❄️❆❆❄️❄️❅❄️❅❆❄️❆❄️❅❅
Instant chat with us on WhatsApp at :

An introduction to SeekMake

SeekMake is dedicated to empowering businesses with cutting-edge technologies and personalized services. Whether prototyping a new product or scaling production, SeekMake offers a comprehensive suite of tools and resources to meet manufacturing needs.

What can SeekMake API do?

SeekMake Instant Quoting API empowers users to streamline their quoting process:

  • Real-time Pricing: Retrieve instant pricing information for a wide range of manufacturing services, including 3D printing, CNC machining, injection molding, and more.
  • Material Selection: Access a comprehensive database of materials for each manufacturing service, allowing users to specify their preferred material for their project.
  • Quantity Estimation: Calculate pricing based on the quantity of units to be manufactured, enabling users to adjust quantities and see pricing updates in real-time.
  • Size Customization: Provide dimensions for the part to be manufactured, allowing users to specify the size of their project and receive accurate pricing information.
  • Integration Flexibility: Integrate the SeekMake Instant Quoting API into a variety of platforms, including marketplaces, e-commerce websites, custom applications, and more.
  • Scalability: Handle a high volume of requests with ease, ensuring smooth performance even during peak usage periods.

Getting Started

Our well-structured API documentation offers clear and concise guidance on how to integrate and use each of our APIs. You'll find everything you need to know to start building on SeekMake.

  • Create a Manufacturer Account: To access and use our APIs, you'll need a SeekMake Manufacturer account. Sign up here.
  • Plugin Key & Token: Once you have your Manufacturer account, you’ll be able get your unique API key, Token and ID from here.

Stay Updated

We're continuously improving our APIs and adding new features. Stay in the loop with our developer blog and newsletter. Get the latest updates, tips, and best practices delivered right to your inbox.

Authenticating Requests

The SeekMake API uses API keys to authenticate requests. You can view and manage your API keys in the developer portal. You need to be logged in with a manufacturer account to access your keys.

There are two keys we use: the first one is the Authorization Bearer and the second key is X-Auth-Token Authentication Token. These keys should be sent as headers in your HTTP request.

Your API keys carry many privileges, be sure to keep them secure. Do not share your secret API keys in publicly accessible areas. Also, use the development base URL during development.

Headers

Authorization Bearer
***********************************
X-Auth-Token Auth-Token
*********************************

Note: Please fill the bearer and auth token generated in the developers portal in all your requests to SeekMake API

API Usage Summary

  • Setup API headers
  • Load posts/products from SeekMake: This step involves retrieving posts or products from SeekMake's database using:
  • GET/api/v2/ms-post/post/user-posts/{userId}

  • Display them to customers on your side: Once you've fetched the posts or products from SeekMake, you'll need to display them on your platform (website, app, etc.) for customers to view and potentially purchase.
  • After customer buys/pays for the product, create a demand/order: When a customer makes a purchase or pays for a product
  • POST/api/v2/ms-machine-owner/demand/products

  • Show user the status of the specific order: To keep users informed about the status of their order.
  • GET/api/v2/ms-machine-owner/demand/{id}

  • Get a list of orders for a specific user: Alternatively, you can retrieve a list of orders associated with a specific user
  • POST/api/v2/ms-machine-owner/demand/list

Products / Posts

This endpoint is meant for product retrieval, you can use this as a programmatic way to view all the products associated with your business.

Get posts

Request

const posts = await fetch(
"/api/v2/ms-post/post/user-posts/{userId}",
{ method: "GET" }
);

Sample Response

{
"posts": [
{
"_id": "123",
"user": "user123",
"materials": [],
"type": "PRODUCT",
"price": {
"priceMachine": "10",
"priceConception": 0,
"priceExtra": 0
},
"service": "3D_PRINTING",
"models": [],
"gallery": [
{
"type": "image",
"url": "https://files.seekmake.com/file.jpeg",
"_id": "65c38b086f2c0dc513809040"
},
{
"type": "image",
"url": "https://files.seekmake.com/file2.jpeg",
"_id": "65c38b086f2c0dc513809041"
}
]
}
]
}

GET /api/v2/ms-post/post/user-posts/{userId}


Parameters

userId
This specifies a manufacturer id.
Required
currentPage
This specifies a current page to display the product.
optional
pageSize
This specifies the number of products displayed in the response.
optional , default 5
category
To search a product based on a category.
optional , 3D_PRINTING, CNC_MACHINING, SHEET_METAL, optional, Electronics, Architecture, Mechanics, Automotive, others
free
This specifies product state. It's either true or false.
optional , 3D_PRINTING, CNC_MACHINING, SHEET_METAL
service
3D_PRINTING, CNC_MACHINING and SHEET_METAL, views and likes it has.
optional , 3D_PRINTING, CNC_MACHINING, SHEET_METAL
type
This searches based on a type.,This field should always be PRODUCT
optional , POST, STORY, PRODUCT
tags
This searches for a product based on the tags.
formats
This searches for a product based on the format.
sortBy
This searches for a product based on the creation date, views, and likes it has.
optional , createdAtInc, createdAtDec, viewsDec, likesDec

Create Post

Since products will be managed directly from the SeekMake dashboard, you do not need to use this endpoint. It is included in case the decision to manage products from SeekMake dashboard changes.

STEP 1: Create Post

Request

Const posts await fetch(
"/api/v2/ms-post/post/{userId}",
{method: "POST"}
)

Payload

{
"price": {
"priceMachine": "10",
"priceConception": 0,
"priceExtra": 0
},
"materials": [
{
"title": "Resin",
"type": "3D_PRINTING",
"price": 10,
"currency": "EUR"
}
],
"type": "PRODUCT",
"service": "3D_PRINTING"
}

Sample Response

{
"_id": "123456",
"price": {
"priceMachine": "10",
"priceConception": 0,
"priceExtra": 0
},
"materials": [
{
"title": "Resin",
"type": "3D_PRINTING",
"price": 10,
"currency": "EUR"
}
],
"type": "PRODUCT",
"service": "3D_PRINTING",
"createdAt": "07/02/2024",
"updatedAt": "07/02/2024"
}

Parameters

userId
This specifies a manufacturer id.
Required

Request Fields

priceMachine
This specifies the machine fee cost.
priceConception
This specifies the design fee of the product.
priceExtra
This specifies the raw material cost.
materials.title
This specifies the material name.
materials.type
This specifies the material type.
materials.price
This specifies the material price.
materials.currency
This specifies the material currency. It's either EUR, USD, TND....
type
This searches based on a type.,This field should always be PRODUCT
service
3D_PRINTING, CNC_MACHINING and SHEET_METAL, views and likes it has.

STEP 2: Upload model

Request

Const posts = await fetch(
"/api/v2/ms-post/post/upload",
{method: "POST"}
)

Payload

{
"files": []
}

Sample Response

[
{
"url": "sample url",
"originalName": "name"
}
]

Required Fields

files
This specifies the files that need to be uploaded

STEP 3: Add Model to the Product

Request

Const posts = await fetch(
"/api/v2/ms-post/post/upload",
{method: "POST"}
)

Payload

{
"objects3D": {
"price": 0,
"free": true,
"originalname": "name",
"files": [
{
"originalname": "name",
"url": "http://www.files.com"
}
]
}
}

Sample Response

{
"_id": "postId",
"models": {
"price": 0,
"free": true,
"originalname": "name",
"files": [
{
"originalname": "name",
"url": "http://www.files.com"
}
]
},
"createdAt": "07/02/2024",
"updatedAT": "08/02/2024"
}

Parameters

postId
This specifies the product id.

Request Fields

price
This specifies the product price.
free
This specifies product state. It's either true or false.
originalName
This specifies the name of the product file.
files.url
This specifies the product model URL.
files.originalName
This specifies the product model name.

Update Post

To update posts or products, send a PUT request to the provided endpoint. Ensure all updates adhere to the required rules, as invalid changes will result in errors. For convenience and reliability, it’s recommended to manage updates through the SeekMake Dashboard unless otherwise specified.

Request

Const posts = await fetch(
"/api/v2/ms-post/post/upload",
{method: "PUT"}
)

Payload

{
"service": "test"
}

Sample Response

{
"_id": "123456",
"service": "test",
"price": {
"priceMachine": "10",
"priceConception": 0,
"priceExtra": 0
},
"materials": [
{
"title": "Resin",
"type": "3D_PRINTING",
"price": 10,
"currency": "EUR"
}
],
"type": "PRODUCT",
"models": {
"price": 0,
"free": true,
"originalname": "name",
"files": [
{
"originalname": "name",
"url": "http://www.files.com"
}
]
},
"createdAt": "07/02/2024",
"updatedAt": "08/02/2024"
}

Parameters

productId
This specifies the id of the product that was sold.
Required

Delete Post

Deleting posts or products follows the same conditions as creating them. Since products are typically managed through the SeekMake Dashboard, deletions should also occur there. However, this endpoint is also an available option for you either by choice or in case the agreement changes.

Request

Const posts = await fetch(
"/api/v2/ms-post/post/upload",
{method: "DELETE"}
)

Sample Response → It returns the deleted post/product

{
"_id": "123456",
"price": {
"priceMachine": "10",
"priceConception": 0,
"priceExtra": 0
},
"materials": [
{
"title": "Resin",
"type": "3D_PRINTING",
"price": 10,
"currency": "EUR"
}
],
"type": "PRODUCT",
"models": {
"price": 0,
"free": true,
"originalname": "name",
"files": [
{
"originalname": "name",
"url": "http://www.files.com"
}
]
},
"service": "test",
"createdAt": "07/02/2024",
"updatedAt": "08/02/2024"
}

Parameters

productId
This specifies the id of the product that was sold.
Required

Demands / Orders

Create Demands / Orders

This endpoint allows you to tailor the level of detail in the demand data you provide. You can choose to include only partial information, such as a customer ID instead of full customer details, or omit specific elements like billing or shipping addresses if they're not required. Alternatively, you can opt to include all available information, similar to the approach used in SeekMake.

POST /api/v2/ms-machine-owner/demand/create-demands

Request

Const posts = await fetch(
"/api/v2/ms-machine-owner/demand/create-demands",
{method: "POST"}
)

Payload

[
{
"quoteModel": [
{
"viewerType": "3D",
"discount": 50,
"quantity": 1,
"color": "Gray",
"colorHex": "#B8B8B8",
"priceCalculatorTool": "default",
"scale": 100,
"fileLink": "https://example.file.com/seekmake/example-file.stl",
"fileName": "example-file.stl",
"modelType": "stl",
"service": "CNC_MACHINING",
"technology": "",
"material": "6448eb512acb4edcd7a67f95",
"machine": "670d8b9b174ff458374f630a",
"priceMachine": "396.08",
"priceConception": 0,
"priceExtra": 0,
"price_min": 396.0809428479,
"priceWithMargin": 396.0809428479,
"pricePerPiece": 396.0809428479,
"currency": "EUR",
"startupCost": 0,
"priceEngine": 396.0809428479,
"discountAmount": 198.04
}
],
"minEstimatedPrice": 396.0809428479,
"maxEstimatedPrice": null,
"email": "client@example.com",
"country": "Germany",
"address": "example place in Germany",
"phone": "+49 123456789",
"zip": "11111",
"typeDelivery": "pickup directly",
"firstName": "client",
"lastName": "example",
"city": "Nordrhein-Westfalen",
"region": "example",
"isCompany": false,
"taxType": "VAT",
"shippingAddressDetails": {
"country": "Germany",
"city": "Nordrhein-Westfalen",
"region": "example",
"zip": "11111",
"address": "example place in Germany"
},
"billingAddressDetails": {
"country": "Germany",
"city": "Nordrhein-Westfalen",
"region": "example",
"zip": "11111",
"address": "example place in Germany"
},
"client": null,
"machineOwner": "66fa696f4f51a3f661b93cfd",
"business": "66fa696f4f51a3f661b93cfd",
"technique": "CNC_MACHINING",
"shippingMethod": {
"regionTo": "LOCAL",
"price": 0,
"currency": "EUR",
"daysToDeliver": 0
},
"currency": "EUR",
"remark": [
"unit : mm"
],
"type": "normal",
"status": "quote sent",
"fixedPrice": 0,
"priceDelivery": 0,
"fabricatedDate": "23/10/2025",
"priceMin": 0,
"priceMinPart": 0,
"draftId": "68f9f61de727a66f0d0afd47",
"referral": "seekmake"
}
]

Sample Response

[
{
"_id": "68f9f7cee727a66f0d0b309d",
"client": "68f9f774e727a66f0d0b06f2",
"machineOwner": "66fa696f4f51a3f661b93cfd",
"business": "66fa696f4f51a3f661b93cfd",
"technique": "CNC_MACHINING",
"remark": [
"unit : mm"
],
"tracking": [
{
"status": "quote sent",
"date": 1761212366053
}
],
"paymentStatus": "PENDING_PAYMENT",
"quoteModel": [
{
"viewerType": "3D",
"discount": 50,
"quantity": 1,
"color": "Gray",
"colorHex": "#B8B8B8",
"priceCalculatorTool": "default",
"scale": 100,
"fileLink": "https://example.file.com/seekmake/example-file.stl",
"fileName": "example-file.stl",
"modelType": "stl",
"service": "CNC_MACHINING",
"material": "6448eb512acb4edcd7a67f95",
"machine": "670d8b9b174ff458374f630a",
"priceMachine": "396.08",
"priceConception": 0,
"priceExtra": 0,
"price_min": 396.0809428479,
"priceWithMargin": 396.0809428479,
"pricePerPiece": 396.0809428479,
"currency": "EUR",
"startupCost": 0,
"priceEngine": 396.0809428479,
"discountAmount": 198.04
}
],
"draftId": "68f9f61de727a66f0d0afd47",
"email": "client@example.com",
"phone": "+49 123456789",
"address": "example place in Germany",
"country": "Germany",
"city": "Nordrhein-Westfalen",
"region": "example",
"zip": "11111",
"firstName": "client",
"lastName": "example",
"isCompany": false,
"taxType": "VAT",
"referral": "seekmake",
"type": "normal",
"typeDelivery": "pickup directly",
"status": "quote sent",
"priceToClient": "238.11",
"priceToMachnieOwner": "238.11",
"priceTotal": 198.04,
"taxPaid": 40.07,
"platformFee": 0,
"minEstimatedPrice": 396.0809428479,
"maxEstimatedPrice": null,
"currency": "EUR",
"priceDelivery": 0,
"priceMin": 0,
"priceMinPart": 0,
"priceSurcharge": 0,
"fixedPrice": 0,
"stripeExtraFees": 0,
"fabricatedDate": "23/10/2025",
"shippingMethod": {
"regionTo": "LOCAL",
"price": 0,
"currency": "EUR",
"daysToDeliver": 0
},
"billingAddressDetails": {
"country": "Germany",
"city": "Nordrhein-Westfalen",
"region": "example",
"zip": "11111",
"address": "example place in Germany"
},
"shippingAddressDetails": {
"country": "Germany",
"city": "Nordrhein-Westfalen",
"region": "example",
"zip": "11111",
"address": "example place in Germany"
},
"orderNumber": 1,
"createdAt": "2025-10-23T09:39:26.057Z",
"updatedAt": "2025-10-23T09:39:26.057Z"
}
]

Create Demands / Orders By Product Id

This is for creating an order using an existing product/post ID. To create a new order to your Seekmake account after receiving payments from customers, the expected payload is as shown below. It is important to provide the fixed fields with exact values specified.

NOTE: Please save the id of the created demand as it will be needed for retrieving the demands in future.

POST /api/v2/ms-machine-owner/demand/products

Request

Const posts = await fetch(
"/api/v2/ms-machine-owner/demand/products?
long=en",
{method: "POST"}
)

Payload

[
{
"productId": "id",
"referral": "t7d",
"material": "Resin",
"resolution": "",
"filling": 0,
"quantity": 0,
"color": "White",
"thickness": 0,
"tolerance": "",
"shippingMethod": {
"method": "",
"currency": "EUR",
"type": "",
"price": 0
},
"shippingAddress": {
"address": "Nebul",
"vat": "",
"firstName": "Adel",
"lastName": "Ayari",
"email": "adel@ayari.com",
"phone": "+1234567",
"city": "Ariana",
"country": "Tunisia",
"zip": "8064"
}
}
]

Sample Response

[
{
"_id": "65c36e67d8ed59997b6fc3f2",
"referral": "t7d",
"material": "Resin",
"resolution": "",
"filling": 0,
"quantity": 1,
"color": "White",
"thickness": 0,
"tolerance": "",
"shippingMethod": {
"method": "",
"currency": "EUR",
"type": "",
"price": 0
},
"shippingAddress": {
"address": "Nebul",
"vat": "",
"firstName": "Adel",
"lastName": "Ayari",
"email": "adel@ayari.com",
"phone": "+1234567",
"city": "Ariana",
"country": "Tunisia",
"zip": "8064"
}
}
]

Parameters

lang en, fr, de, es

Request Fields

productId
This specifies the id of the product that was sold.
referral
This is a fixed value.
resolution
This specifies the quality, or level of detail, of the 3D model (optional).
filling
This specifies the structure and shape of the material inside the 3D model.
quantity
This specifies the product quantity that needs to be produced.
color
This specifies product color.
thickness
This specifies the thickness of laser cutting operation.
tolerance
This specifies the required level of precision in CNC manufacturing.
shippingMethod
This specifies the shipping method for the product that includes method, currency, type and price (deliver price for the product).
clientInfo
This specifies the client information.

Get a list of Demand/Orders

Once orders are created and in production, manufacturers might change. It’s essential to preserve the IDs for each order made by the user and use these IDs to retrieve order or demand information. This endpoint is designed to accept a list of order or demand IDs and returns their details.

Request

Const posts = await fetch("/api/v2/ms-machine- owner/demand/list",
{method: "POST"}
)

Payload

{
"demands": [
"demand_id",
"demand_id"
]
}

Sample Response

[
{
"_id": "63e356401c91cd5376e10ead",
"remark": [],
"thickness": null,
"tolerance": null,
"quantity": 1,
"typeDelivery": "home delivery",
"priceDelivery": 0,
"client": {},
"machineOwner": {},
"technique": "3D_PRINTING",
"file": "",
"email": "",
"phone": "",
"country": "",
"city": "",
"zip": "",
"status": "cancelled",
"priceToClient": "",
"priceMachine": "",
"priceConception": 0,
"priceExtra": 0,
"priceToMachnieOwner": "string",
"settings": {
"notification": {
"user": true,
"machineOwner": true
}
}
},
{},
{},
{}
]

POST /api/v2/ms-machine-owner/demand/list

Get Demand / Order

This endpoint retrieves information for a specific order or demand, which could be ongoing, pending payment, completed, or in shipping. There’s also a significant chance the order’s manufacturer may change before production begins. Using the Get List of Demands endpoint is recommended instead.

Request

Const posts = await fetch
("/api/v2/ms-machine-owner/demand/:id",
{method: "GET"}
)

Sample Response

{
"_id": "63e356401c91cd5376e10ead",
"remark": [],
"thickness": null,
"tolerance": null,
"quantity": 1,
"typeDelivery": "home delivery",
"priceDelivery": 0,
"client": {},
"machineOwner": {},
"technique": "3D_PRINTING",
"file": "",
"email": "",
"phone": "",
"country": "",
"city": "",
"zip": "",
"status": "cancelled",
"priceToClient": "",
"priceMachine": "",
"priceConception": 0,
"priceExtra": 0,
"priceToMachnieOwner": "string",
"settings": {
"notification": {
"user": true,
"machineOwner": true
}
}
}

GET /api/v2/ms-machine-owner/demand/:id



Parameters

id
Required




Request Fields

_id
This specifies the demand id.
remark
This specifies a comment to the demand.
thickness
This specifies the thickness of the product.
tolerance
This specifies the tolerance level.
quantity
This specifies the product quantity that needs to be produced.
typeDelivery
This specifies delivery type of product. It's either home delivery or pickup directly.
_priceDelivery
This specifies the price paid for a delivery.
user
This specifies the user information.
technique
This specifies the chosen technique for the product. It's either 3D_PRINTING, CNC_MACHINING and SHEET_METAL.
File
This specifies file URL.
Email
phone
country
zip
city
This specifies the client information.
status
This specifies the status of the product.
priceToClient
This specifies the total price for the product including charge by SeekMake.
priceMachine
This specifies the fee paid based on the number of time the machine spends to produce the item.
priceConception
This specifies the design fee.
priceExtra
This specifies the raw material cost.
priceToMachineOwner
This specifies the total price of the product without SeekMake charge.
settings
This specifies whether the user or machine owner wants to receive a notification/email from SeekMake.

Demand Statuses

Cancelled
This specifies the demand is canceled.
In Shipping
This specifies the delivery for the demand has started.
Special Verified
This specifies the demand is pending and in review.
Quote Sent
This specifies the demand is sent to the manufacturer.
Special Accepted
This specifies the demand is in production.
Done
This specifies the demand ready to be shipped.
Delivered
This specifies the demand is delivered.

Update Demand / Order

This endpoint allows you to update information for a specific order or demand. Orders may be in various stages, such as ongoing, pending payment, completed, or in shipping. Since updates can affect multiple aspects of an order, including its manufacturer, it is therefore important to note that there are some restrictions to the kind of update you can do, and the endpoint might throw some errors if you try to do an illegal update.

Request

Const posts await fetch(
"/api/v2/ms-machine-owner/demand/{id}",
{method: "PUT"}
)

Payload

{
"material": "Resin",
"resolution": "",
"filling": 0,
"quantity": 0,
"color": "White",
"thickness": 0,
"tolerance": "",
"shippingAddress": {
"address": "Nebul",
"vat": "",
"firstName": "Adel",
"lastName": "Ayari",
"email": "adel@ayari.com",
"phone": "+1234567",
"city": "Ariana",
"country": "Tunisia",
"zip": "8064"
}
}

Sample Response

{
"_id": "123456",
"material": "Resin",
"resolution": "",
"filling": 0,
"quantity": 0,
"color": "White",
"thickness": 0,
"tolerance": "",
"shippingAddress": {
"address": "Nebul",
"vat": "",
"firstName": "Adel",
"lastName": "Ayari",
"email": "adel@ayari.com",
"phone": "+1234567",
"city": "Ariana",
"country": "Tunisia",
"zip": "8064"
}
}

PUT /api/v2/ms-machine-owner/demand/ { id }



Parameters

demandId
Required

Delete Demand / Order

Since most of the demands that will be created are already paid for from your side, avoid deleting demands unless it was a mistake or the order was canceled before production starts.

Request

Const posts await fetch(
"/api/v2/ms-machine-owner/demand/{id}",
{method: "DELETE"}
)

Sample Response

{
"_id": "63e356401c91cd5376e10ead",
"remark": [],
"thickness": null,
"tolerance": null,
"quantity": 1,
"typeDelivery": "home delivery",
"priceDelivery": 0,
"client": {},
"machineOwner": {},
"technique": "3D_PRINTING",
"file": "",
"email": "",
"phone": "",
"country": "",
"city": "",
"zip": "",
"status": "cancelled",
"priceToClient": "",
"priceMachine": "",
"priceConception": 0,
"priceExtra": 0,
"priceToMachnieOwner": "string",
"settings": {
"notification": {
"user": true,
"machineOwner": true
}
}
}

Parameters

demandId
* Required

Security

Ensuring the security of our API is a top priority. We implement robust security measures to protect your data and maintain the integrity of our systems. Below are some key aspects of our API security.

Authentication and Authorization
  • Authentication: Access to our API requires authentication using API keys, OAuth tokens, or other secure methods. This ensures that only authorized users and applications can access our API endpoints.
  • Authorization: We enforce fine-grained access control mechanisms to restrict access to specific API endpoints and data based on user roles, permissions, and scopes.
Encryption
  • All data transmitted to and from our API is encrypted using industry-standard cryptographic protocols such as TLS (Transport Layer Security) to prevent eavesdropping and unauthorized access.
Logging and Monitoring
  • We maintain comprehensive logs of API activities, including request and response data, authentication events, and error messages. These logs are regularly monitored for suspicious activity and compliance with security policies.
Compliance and Auditing
  • Our API security practices comply with industry standards and regulations, such as GDPR (General Data Protection Regulation) and PCI DSS (Payment Card Industry Data Security Standard). We undergo periodic security audits and assessments to ensure compliance and adherence to best practices.
Vulnerability Management
  • We conduct regular security assessments and vulnerability scans to identify and remediate potential security vulnerabilities in our API infrastructure and codebase.

Reporting Security Issues

If you discover any security vulnerabilities or suspect unauthorized access to our API, please report them immediately to our dedicated Security Team. We take all reports seriously and strive to promptly address and resolve any security concerns.

Price Estimation

This endpoint will provide the price of a model, given the necessary parameters in your specified currency. You will also need to pass in the payload for the model you intend to get a price estimate for. Please adhere to the Request Fields section of this request to your right for required fields. Your remaining uses for this endpoint for today are: 0

Request

Const price = await fetch(
"/api/v2/ms-machine-learning/machine-learing/modelPriceEstimation/:businessId?currency=USD",
{ method: "POST"}
)

Payload

[
{
"model": {
"priceCalculatorTool": "custom",
"viewerType": "3D",
"discount": 0,
"bulkPricing": [],
"quantity": 1,
"postProduction": [],
"machineCanPrint": false,
"color": "Gray",
"colorHex": "#B8B8B8",
"colorNameKey": "COLOR.GRAY",
"scale": 100,
"coordinates": {
"x_index": 100,
"y_index": 86.6,
"z_index": 45.3
},
"volume": "19961.54",
"dfmData": {
"anomalies": [],
"coloredSvg": "",
"scaledFile": ""
},
"tolerance": "",
"fileLink": "https://somefilelink.com/path/to/example-file.stl",
"fileName": "example-file.stl",
"modelType": "stl",
"isSupported": true,
"position": 0,
"modelSizes": {
"width": 0,
"height": 0,
"depth": 0,
"scale": 100
},
"service": "3D_PRINTING",
"technology": "FDM",
"material": {
"machine": "678a62210b233haa5c54451bd",
"_id": "6448essmme2acb4edcd7a67f68",
"service": "3D_PRINTING",
"materials": "ABS M30",
"price": 3000,
"currency": "USD",
"technology": "FDM",
"descriptions": "Machine type : fdm makina,\n\t\t\t\t\t\t\t\t\t\t Machine size : 22x22x22 mm",
"colors": [],
"description": "ABS M30 is a high impact resistant and tough material: it has a glass transition temperature of about 105°C.",
"MatrialPhotoUrl": "",
"surfaceMachine": "22x22x22",
"unitMachine": "mm",
"density": {
"value": 1.03,
"unit": "g/cm3"
},
"startupCost": {
"price": null,
"currency": "TND"
},
"unit": "kg",
"factor": "2.1"
},
"selectedOptions": [
{
"refer": "infill",
"name": "0%",
"type": "price_multiplier",
"priceMultiplier": 1,
"fixedPrice": {
"price": 0,
"currency": "TND"
},
"percentage": 1,
"isDeffault": true,
"created": "2024-12-26T17:00:27.264Z",
"finishId": null,
"machineId": null,
"materialId": null
},
{
"refer": "precision",
"name": "0.4mm",
"type": "price_multiplier",
"priceMultiplier": 1,
"fixedPrice": {
"price": 0,
"currency": "TND"
},
"percentage": 0.4,
"isDeffault": true,
"created": "2024-12-26T17:00:27.264Z",
"finishId": null,
"machineId": null,
"materialId": null
},
{
"refer": "lead_time",
"name": "Standard",
"type": "price_multiplier",
"priceMultiplier": 1,
"fixedPrice": {
"price": 10,
"currency": "TND"
},
"percentage": 3,
"isDeffault": true,
"created": "2025-01-17T13:15:46.356Z",
"finishId": null,
"machineId": null,
"materialId": ""
}
],
"slicingData": {
"width": 100,
"height": 86.6,
"depth": 45.3,
"density": 1.03,
"filament_length": 4696.8,
"hours": 5.218666666666667,
"volume": "19961.54",
"weight": "20560.38",
"minimum_bounding_box": 392320.5,
"convex_hull": 106740.38,
"total_print_area": 22198.33,
"number_of_layers": 87
},
"machine": {
"_id": "678a62210b233haa5c54451bd",
"machineOwner": "678a62210b233haa5c54451bd",
"business": "678a62210b233haa5c54451bd",
"typeMachine": "3D_PRINTING",
"currency": "TND",
"status": false,
"surfaceMachine": "22x22x22",
"marginMachine": 0,
"materials": [
{
"price": 2,
"currency": "TND",
"name": "ABS M30",
"keyFeatures": "High resistance,Toughness,suitable for 3d printing,durable and stronger layer bonding",
"description": "ABS M30 is a high impact resistant and tough material: it has a glass transition temperature of about 105°C.",
"MatrialPhotoUrl": "",
"factor": "2.1",
"colors": [],
"density": {
"value": 1.03,
"unit": "g/cm3"
},
"unit": "kg",
"startupCost": {
"price": null,
"currency": "TND"
},
"_id": "678a62210b233haa5c54451bd"
}
],
"mark": "fdm makina",
"technology": "FDM",
"unit": "mm",
"createdAt": "2025-01-17T13:58:57.265Z",
"updatedAt": "2025-01-17T13:58:57.265Z",
"__v": 0,
"order": ""
},
"note": "",
"price_min": 444.0411207724,
"pricePerPiece": 444.0411207724,
"startupCost": 0,
"priceWithMargin": 0.04112077240000001,
"equationResult": 0.04112077240000001,
"postProductionIncluded": true,
"startupCostIncluded": false,
"leadTimeIncluded": true,
"quantityIncluded": false,
"marginIncluded": false,
"currency": "TND",
"priceMachine": "",
"priceConception": 0,
"priceExtra": 0
}
}
]

Sample Response

[
{
"message": "Successfully calculated model price",
"data": {
"price": 16.249375300100002
}
}
]

POST /api/v2/ms-machine-learning/machine-learing/modelPriceEstimation/:businessId?currency=USD

Parameters

currency
Required

The currency query parameter is required. Available options for currency are: 'EUR', 'USD', 'CNY', 'GBP', 'TND', 'ZAR', 'GHS', 'NGN', 'XAF', 'KES', 'KWD', 'MAD', 'AED', 'EGP', 'DZD', 'CAD', 'AUD', 'INR', 'MXN', 'CZK', 'SGD', 'MYR'

Request Fields

slicingData
Required
This object contains detailed metrics about the 3D model after slicing, which are essential for estimating the printing process:
  • width (number): Width of the model in millimeters.
  • height (number): Height of the model in millimeters.
  • depth (number): Depth of the model in millimeters.
  • density (number): Material density in g/cm³.
  • filament_length (number): Length of filament required to print the model in millimeters.
  • hours (number): Estimated total printing time in hours.
  • volume (string): Volume of the model in cubic millimeters.
  • weight (string): Weight of the model in grams.
  • minimum_bounding_box (number): Volume of the smallest bounding box that can contain the model in cubic millimeters.
  • convex_hull (number): Volume of the convex hull surrounding the model in cubic millimeters.
  • total_print_area (number): Total surface area of the model that needs to be printed in square millimeters.
  • number_of_layers (number): Total number of layers required to print the model.
selectedOptions
Required
This array lists additional options chosen for the 3D printing process. Each option impacts the cost or quality of the print:
  • refer (string): Identifier for the option, e.g., 'infill.'
  • name (string): Display name of the option.
  • type (string): Type of option, e.g., 'price_multiplier.'
  • priceMultiplier (number): Multiplier affecting the price calculation.
  • fixedPrice (object):
    • price (number): Price value.
    • currency (string): Currency code, e.g., 'TND.'
  • percentage (number): Additional percentage effect of the option.
  • isDefault (boolean): Indicates whether this option is the default.
  • created (string): Timestamp of when the option was created.
  • finishId, machineId, materialId (string | null): References to associated resources or null if not applicable.
material
Required
Describes the material properties and associated details for the 3D printing process:
  • machine (string): Identifier for the machine used, e.g., '678a62210b2a09a5c54451bd.'
  • _id (string): Unique material identifier.
  • service (string): Service type, e.g., '3D_PRINTING.'
  • materials (string): Name of the material, e.g., 'ABS M30.'
  • price (number): Price per unit of material.
  • currency (string): Currency code, e.g., 'TND.'
  • technology (string): Printing technology compatible with the material.
  • descriptions (string): Detailed description of the material and machine specifications.
  • colors (array): Available colors for the material. Empty if no colors are specified.
  • description (string): Characteristics and properties of the material, e.g., 'ABS M30 is a high impact resistant and tough material.'
  • materialPhotoUrl (string): URL for the material's photo (currently empty).
  • surfaceMachine (string): Surface area dimensions of the printing machine, e.g., '22x22x22.'
  • unitMachine (string): Unit of measurement for the machine dimensions, e.g., 'mm.'
  • density (object):
    • value (number): Material density, e.g., 1.03.
    • unit (string): Unit for density, e.g., 'g/cm³.'
  • startupCost (object):
    • price (number | null): Startup cost value.
    • currency (string): Currency code.
  • unit (string): Unit for material measurement, e.g., 'kg.'
  • factor (string): Conversion or scaling factor, e.g., '2.1.'
postProduction
Required
This array lists any post-production steps or options applied to the printed model. No post-production steps are included by default, so the array can be empty.
service
Required
Defines the type of service being performed. Possible values include: 3D_PRINTING, CNC_MACHINING, SHEET_METAL
technology
Required
Specifies the printing technology used for the model. Possible values include: SLA, FDM, SLS, CNC, DEFAULT
viewerType
Required
Indicates the type of model viewer available for the file. Possible values includ: 3D, 2D
quantity
Required
The number of copies of the model to be printed.

File Access

This endpoint returns a secure URL containing a temporary token. The link grants access to the file for 30 minutes, and only users with this exact URL can open it. After 30 minutes, it expires automatically.

Request

const response = await fetch(
"/api/v2/ms-machine-owner/demand/access-storage?fileLink=YOUR_FILE_LINK",
{
method: "GET",
}
)

Sample Response

[
{
"url": "https://example.blob.core.windows.net/seekmake/example-file.stl?sv=2023-01-03&st=2025-10-23T09%3A30%3A00Z&se=2025-10-23T10%3A00%3A00Z&sr=b&sp=r&sig=SAMPLE_SIGNATURE",
"token": "sv=2023-01-03&st=2025-10-23T09%3A30%3A00Z&se=2025-10-23T10%3A00%3A00Z&sr=b&sp=r&sig=SAMPLE_SIGNATURE"
}
]

Webhooks

To enable real-time notifications and event-driven workflows, you can request access to our webhook functionality. Webhooks provide a mechanism for receiving HTTP POST requests containing event data when specific events occur within our system.

Create New Webhook Subscription

This endpoint allows you to create a webhook integration for receiving event notifications.

Request

const webhook = await fetch(
"/api/v2/integrations_ms/webhooks",
{method: "POST"}
)

Payload

{
"businessId": "4665759##744333va",
"url": "https://6r6v676gxprh449.app.dev/webhook",
"secret": "$jowhsow2##",
"events": [
"order_placed"
]
}

Sample Response

{
"message": "Webhook Created Successfully",
"data": [
{
"_id": "67g10f145f5314c086ab7cc8",
"url": "https://6r6v676gxprh449.app.dev/webhook",
"events": [
"order_placed"
],
"secret": "$jowhsow2##",
"useSecret": false
}
]
}

Request Fields

businessId
Your Manufacturer ID
url
The URL to which the event notifications will be sent.
secret
A secret key for secure communication. This will be sent through the headers with the key seekmake-signature.
events
The list of events you want to receive on this url. Applicable events are: order_placed, quote_request_received, product_purchased, quote_request_updated, order_updated
useSecret
(Optional) Whether to use the secret in the sent event. Defaults to false if absent.

Testing Webhook Subscription

Below is a simple example of how you can use the webhook to receive events from SeekMake in real-time, as http requests.

Sample Code


const express = require("express");
const bodyParser = require("body-parser");

const app = express();
const PORT = 4000;

// Middleware to parse JSON
app.use(bodyParser.json());

// Webhook endpoint
app.post("/webhook", (req, res) => {
const event = req.body;

// Log incoming headers and event
console.log("Received headers: ", req.headers);
console.log("Received event:", event);

// Simulate processing the event
if (event.type === "order_placed") {
console.log("Processing order:", event.data);
}

// Send a response back to the sender
res.status(200).send({ message: "Event received successfully" });
});

// Start the server
app.listen(PORT, () => {
console.log(`Webhook listener running at http://localhost:${PORT}`);
});

Get Webhooks by Manufacturer Id

This endpoint retrieves the webhooks for your business using your manufacturer ID.

Request

const webhook = await fetch(
"/api/v2/integrations_ms/webhooks/{businessId}",
{method: "GET"}
)

Sample Response

{
"message": "Webhooks Retrieved Successfully",
"data": [
{
"_id": "67g10f145f5314c086ab7cc8",
"url": "https://6r6v676gxprh449.app.dev/webhook",
"events": [
"order_placed"
],
"secret": "$jowhsow2##",
"useSecret": false
}
]
}

Request Fields

businessId
Your Manufacturer ID

Update a specific Webhook Subscription by Manufacturer and Webhook Id

This endpoint allows you to update a specific webhook integration for your business. You just need to pass in your manufacturer ID and webhook ID as request parameters, and then pass in the update you intend to make to that webhook as the request body.

Request

const webhook = await fetch(
"/api/v2/integrations_ms/webhooks/:businessId/:webhookId",
{method: "POST"}
)

Payload

{
"events": [
"order_placed",
"quote_request_recieved"
]
}

Sample Response

{
"message": "Webhooks Updated Successfully",
"data": [
{
"_id": "4665759##744333va",
"url": "https://6r6v676gxprh449.app.dev/webhook",
"events": [
"order_placed",
"quote_request_recieved"
],
"secret": "$jowhsow2##",
"useSecret": false
}
]
}

Request Fields

url
The URL to which the event notifications will be sent.
secret
A secret key for secure communication. This will be sent through the headers with the key seekmake-signature.
events
The list of events you want to receive on this url. Applicable events are: order_placed, quote_request_received, product_purchased, quote_request_updated, order_updated
useSecret
(Optional) Whether to use the secret in the sent event. Defaults to false if absent.
We have detected an issue
This might limit your use of SeekMake. To resolve it, you can:
  • Click "Clear Cache" (Note: This will log you out)
  • Contact Us for further assistance