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:
- 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
- Show user the status of the specific order: To keep users informed about the status of their order.
- Get a list of orders for a specific user: Alternatively, you can retrieve a list of orders associated with a specific user
GET/api/v2/ms-post/post/user-posts/{userId}
POST/api/v2/ms-machine-owner/demand/products
GET/api/v2/ms-machine-owner/demand/{id}
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
Required
optional
optional , default 5
optional , 3D_PRINTING, CNC_MACHINING, SHEET_METAL, optional, Electronics, Architecture, Mechanics, Automotive, others
optional , 3D_PRINTING, CNC_MACHINING, SHEET_METAL
optional , 3D_PRINTING, CNC_MACHINING, SHEET_METAL
optional , POST, STORY, PRODUCT
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
Required
Request Fields
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
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
Request Fields
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
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
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
Request Fields
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
Request Fields
Demand Statuses
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
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
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: 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.
- 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.
- 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.
- 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.
- 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
Request Fields
- 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.
- 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.
- 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.'
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
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
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
}
]
}