Une introduction à SeekMake
SeekMake se consacre à autonomiser les entreprises avec des technologies de pointe et des services personnalisés. Que ce soit pour prototyper un nouveau produit ou pour passer à l'échelle de la production, SeekMake offre une suite complète d'outils et de ressources pour répondre aux besoins de fabrication.
Que peut faire l'API SeekMake ?
L'API de devis instantané SeekMake permet aux utilisateurs de rationaliser leur processus de devis :
- Tarification en temps réel: Récupérez des informations de prix instantanées pour un large éventail de services de fabrication, y compris l'impression 3D, l'usinage CNC, le moulage par injection, et plus encore.
- Sélection des matériaux: Accédez à une base de données complète de matériaux pour chaque service de fabrication, permettant aux utilisateurs de spécifier le matériau préféré pour leur projet.
- Estimation de la quantité: Calculez les prix en fonction de la quantité d'unités à fabriquer, permettant aux utilisateurs d'ajuster les quantités et de voir les mises à jour des prix en temps réel.
- Personnalisation des dimensions: Fournissez les dimensions de la pièce à fabriquer, permettant aux utilisateurs de spécifier la taille de leur projet et de recevoir des informations de prix précises.
- Flexibilité d'intégration: Intégrez l'API de devis instantané SeekMake dans une variété de plateformes, y compris les marketplaces, les sites e-commerce, les applications personnalisées, et plus encore.
- Scalabilité: Gérez un volume élevé de requêtes avec aisance, assurant des performances fluides même pendant les périodes de forte affluence.
Démarrage
Notre documentation API bien structurée offre des conseils clairs et concis sur la façon d'intégrer et d'utiliser chacune de nos API. Vous y trouverez tout ce dont vous avez besoin pour commencer à développer sur SeekMake.
- Créer un compte fabricant : Pour accéder à nos API et les utiliser, vous aurez besoin d'un compte fabricant SeekMake. Inscrivez-vous. ici.
- Clé et jeton du plugin: Une fois que vous aurez votre compte fabricant, vous pourrez obtenir votre clé API unique, votre jeton et votre ID à partir d'ici.
Restez informé
Nous améliorons continuellement nos API et ajoutons de nouvelles fonctionnalités. Restez informé grâce à notre blog développeur et notre newsletter. Recevez les dernières mises à jour, astuces et meilleures pratiques directement dans votre boîte de réception.
Authentification des requêtes
L'API SeekMake utilise des clés API pour authentifier les requêtes. Vous pouvez consulter et gérer vos clés API dans le portail développeur. Vous devez être connecté avec un compte fabricant pour accéder à vos clés.
Nous utilisons deux clés : la première est le jeton d'autorisation (Authorization Bearer) et la seconde est le jeton d'authentification X-Auth-Token. Ces clés doivent être envoyées en tant qu'en-têtes dans votre requête HTTP.
Vos clés API confèrent de nombreux privilèges, assurez-vous de les conserver en toute sécurité. Ne partagez pas vos clés API secrètes dans des zones accessibles au public. Utilisez également l'URL de base de développement pendant le développement.
En-têtes
Authorization Bearer
***********************************
X-Auth-Token Auth-Token
*********************************
Remarque : Veuillez renseigner le jeton d'autorisation (bearer) et le jeton d'authentification générés dans le portail développeur pour toutes vos requêtes à l'API SeekMake.
Résumé de l'utilisation de l'API
- Configuration des en-têtes API
- Charger les publications/produits de SeekMake : Cette étape consiste à récupérer des publications ou des produits de la base de données de SeekMake en utilisant :
- Les afficher aux clients sur votre plateforme : Une fois que vous avez récupéré les publications ou les produits de SeekMake, vous devrez les afficher sur votre plateforme (site web, application, etc.) pour que les clients puissent les consulter et potentiellement les acheter.
- Après l'achat/paiement du produit par le client, créez une demande/commande : Lorsqu'un client effectue un achat ou paie un produit
- Afficher à l'utilisateur le statut de la commande spécifique : Pour tenir les utilisateurs informés de l'état de leur commande.
- Obtenir la liste des commandes pour un utilisateur spécifique : Alternativement, vous pouvez récupérer une liste des commandes associées à un utilisateur spécifique.
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
Produits / Articles
Ce point d'accès est destiné à la récupération de produits. Vous pouvez l'utiliser comme moyen programmatique pour visualiser tous les produits associés à votre entreprise.
Obtenir les publications
Requête
const posts = await fetch(
"/api/v2/ms-post/post/user-posts/{userId}",
{ method: "GET" }
);
Exemple de réponse
{
"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}
Paramètres
Requis
Facultatif
Facultatif, par défaut 5
Facultatif, Impression 3D, Usinage CNC, Tôlerie, Facultatif, Électronique, Architecture, Mécanique, Automobile, Autres
Facultatif, Impression 3D, Usinage CNC, Tôlerie
Facultatif, Impression 3D, Usinage CNC, Tôlerie
Facultatif, Publication, Histoire, Produit
Facultatif, Créé (croissant), Créé (décroissant), Vues (décroissant), Likes (décroissant)
Créer une publication
Étant donné que les produits seront gérés directement depuis le tableau de bord SeekMake, vous n'avez pas besoin d'utiliser ce point de terminaison. Il est inclus au cas où la décision de gérer les produits depuis le tableau de bord SeekMake changerait.
ÉTAPE 1 : Créer une publication
Requête
Const posts await fetch(
"/api/v2/ms-post/post/{userId}",
{method: "POST"}
)
Charge utile
{
"price": {
"priceMachine": "10",
"priceConception": 0,
"priceExtra": 0
},
"materials": [
{
"title": "Resin",
"type": "3D_PRINTING",
"price": 10,
"currency": "EUR"
}
],
"type": "PRODUCT",
"service": "3D_PRINTING"
}Exemple de réponse
{
"_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"
}Paramètres
Requis
Champs de la requête
ÉTAPE 2 : Télécharger le modèle
Requête
Const posts = await fetch(
"/api/v2/ms-post/post/upload",
{method: "POST"}
)
Charge utile
{
"files": []
}Exemple de réponse
[
{
"url": "sample url",
"originalName": "name"
}
]Champs requis
ÉTAPE 3 : Ajouter le modèle au produit
Requête
Const posts = await fetch(
"/api/v2/ms-post/post/upload",
{method: "POST"}
)
Charge utile
{
"objects3D": {
"price": 0,
"free": true,
"originalname": "name",
"files": [
{
"originalname": "name",
"url": "http://www.files.com"
}
]
}
}Exemple de réponse
{
"_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"
}Paramètres
Champs de la requête
Mettre à jour la publication
Pour mettre à jour des publications ou des produits, envoyez une requête PUT au point de terminaison fourni. Assurez-vous que toutes les mises à jour respectent les règles requises, car les modifications invalides entraîneront des erreurs. Pour plus de commodité et de fiabilité, il est recommandé de gérer les mises à jour via le tableau de bord SeekMake, sauf indication contraire.
Requête
Const posts = await fetch(
"/api/v2/ms-post/post/upload",
{method: "PUT"}
)
Charge utile
{
"service": "test"
}Exemple de réponse
{
"_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"
}Paramètres
Requis
Supprimer la publication
La suppression de publications ou de produits suit les mêmes conditions que leur création. Les produits étant généralement gérés via le tableau de bord SeekMake, les suppressions devraient également s'y effectuer. Cependant, ce point de terminaison est également une option disponible pour vous, soit par choix, soit en cas de changement d'accord.
Requête
Const posts = await fetch(
"/api/v2/ms-post/post/upload",
{method: "DELETE"}
)
Exemple de réponse → Renvoie la publication/le produit supprimé(e)
{
"_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"
}Paramètres
Requis
Demandes / Commandes
Créer des demandes / commandes
Ce point de terminaison vous permet d'adapter le niveau de détail des données de demande que vous fournissez. Vous pouvez choisir d'inclure uniquement des informations partielles, telles qu'un identifiant client au lieu des détails complets du client, ou d'omettre des éléments spécifiques tels que les adresses de facturation ou d'expédition si elles ne sont pas requises. Alternativement, vous pouvez choisir d'inclure toutes les informations disponibles, similaire à l'approche utilisée dans SeekMake.
POST /api/v2/ms-machine-owner/demand/create-demands
Requête
Const posts = await fetch(
"/api/v2/ms-machine-owner/demand/create-demands",
{method: "POST"}
)
Charge utile
[
{
"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"
}
]Exemple de réponse
[
{
"_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"
}
]Créer des demandes / commandes par ID produit
Ceci sert à créer une commande en utilisant un ID de produit/publication existant. Pour créer une nouvelle commande sur votre compte SeekMake après réception des paiements des clients, la charge utile attendue est celle indiquée ci-dessous. Il est important de fournir les champs fixes avec les valeurs exactes spécifiées.
NOTE: Veuillez enregistrer l'ID de la demande créée, car il sera nécessaire pour récupérer les demandes ultérieurement.
POST /api/v2/ms-machine-owner/demand/products
Requête
Const posts = await fetch(
"/api/v2/ms-machine-owner/demand/products?
long=en",
{method: "POST"}
)
Charge utile
[
{
"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"
}
}
]Exemple de réponse
[
{
"_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"
}
}
]Paramètres
Champs de la requête
Obtenir la liste des demandes / commandes
Une fois les commandes créées et en production, les fabricants peuvent changer. Il est essentiel de conserver les ID de chaque commande passée par l'utilisateur et d'utiliser ces ID pour récupérer les informations de commande ou de demande. Ce point de terminaison est conçu pour accepter une liste d'ID de commande ou de demande et renvoyer leurs détails.
Requête
Const posts = await fetch("/api/v2/ms-machine- owner/demand/list",
{method: "POST"}
)
Charge utile
{
"demands": [
"demand_id",
"demand_id"
]
}Exemple de réponse
[
{
"_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
Obtenir la demande / commande
Ce point de terminaison récupère des informations pour une commande ou une demande spécifique, qui peut être en cours, en attente de paiement, terminée ou en expédition. Il y a également une forte probabilité que le fabricant de la commande change avant le début de la production. Il est donc recommandé d'utiliser le point de terminaison 'Obtenir la liste des demandes' à la place.
Requête
Const posts = await fetch
("/api/v2/ms-machine-owner/demand/:id",
{method: "GET"}
)
Exemple de réponse
{
"_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
Paramètres
Champs de la requête
Statuts de la demande
Mettre à jour la demande / commande
Ce point de terminaison vous permet de mettre à jour les informations d'une commande ou d'une demande spécifique. Les commandes peuvent être à différents stades, tels qu'en cours, en attente de paiement, terminées ou en expédition. Les mises à jour pouvant affecter plusieurs aspects d'une commande, y compris son fabricant, il est donc important de noter qu'il existe certaines restrictions quant au type de mise à jour que vous pouvez effectuer, et le point de terminaison peut générer des erreurs si vous tentez une mise à jour illégale.
Requête
Const posts await fetch(
"/api/v2/ms-machine-owner/demand/{id}",
{method: "PUT"}
)
Charge utile
{
"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"
}
}Exemple de réponse
{
"_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 }
Paramètres
Supprimer la demande / commande
Étant donné que la plupart des demandes créées sont déjà payées de votre côté, évitez de supprimer les demandes, sauf s'il s'agit d'une erreur ou si la commande a été annulée avant le début de la production.
Requête
Const posts await fetch(
"/api/v2/ms-machine-owner/demand/{id}",
{method: "DELETE"}
)
Exemple de réponse
{
"_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
}
}
}Paramètres
Sécurité
Assurer la sécurité de notre API est une priorité absolue. Nous mettons en œuvre des mesures de sécurité robustes pour protéger vos données et maintenir l'intégrité de nos systèmes. Vous trouverez ci-dessous les aspects clés de la sécurité de notre API.
- Authentification: L'accès à notre API nécessite une authentification à l'aide de clés d'API, de jetons OAuth ou d'autres méthodes sécurisées. Cela garantit que seuls les utilisateurs et applications autorisés peuvent accéder à nos points de terminaison API.
- Autorisation: Nous appliquons des mécanismes de contrôle d'accès à granularité fine pour restreindre l'accès à des points de terminaison API et des données spécifiques en fonction des rôles, des autorisations et des portées des utilisateurs.
- Toutes les données transmises vers et depuis notre API sont chiffrées à l'aide de protocoles cryptographiques standard de l'industrie tels que TLS (Transport Layer Security) pour prévenir l'écoute clandestine et l'accès non autorisé.
- Nous maintenons des journaux complets des activités de l'API, y compris les données de requête et de réponse, les événements d'authentification et les messages d'erreur. Ces journaux sont régulièrement surveillés pour détecter toute activité suspecte et assurer la conformité avec les politiques de sécurité.
- Nos pratiques de sécurité d'API sont conformes aux normes et réglementations de l'industrie, telles que le RGPD (Règlement Général sur la Protection des Données) et le PCI DSS (Norme de sécurité des données de l'industrie des cartes de paiement). Nous effectuons des audits et des évaluations de sécurité périodiques pour garantir la conformité et le respect des meilleures pratiques.
- Nous effectuons des évaluations de sécurité régulières et des analyses de vulnérabilités pour identifier et corriger les vulnérabilités de sécurité potentielles dans notre infrastructure API et notre base de code.
Signalement des problèmes de sécurité
Si vous découvrez des vulnérabilités de sécurité ou suspectez un accès non autorisé à notre API, veuillez les signaler immédiatement à notre équipe de sécurité dédiée. Nous prenons tous les rapports au sérieux et nous nous efforçons de traiter et de résoudre rapidement toute préoccupation de sécurité.
Estimation de prix
Ce point de terminaison fournira le prix d'un modèle, compte tenu des paramètres nécessaires dans votre devise spécifiée. Vous devrez également transmettre la charge utile du modèle pour lequel vous avez l'intention d'obtenir une estimation de prix. Veuillez vous référer à la section Champs de requête de cette requête à votre droite pour les champs requis. Vos utilisations restantes pour ce point de terminaison aujourd'hui sont : 0
Requête
Const price = await fetch(
"/api/v2/ms-machine-learning/machine-learing/modelPriceEstimation/:businessId?currency=USD",
{ method: "POST"}
)
Charge utile
[
{
"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
}
}
]Exemple de réponse
[
{
"message": "Successfully calculated model price",
"data": {
"price": 16.249375300100002
}
}
]POST /api/v2/ms-machine-learning/machine-learing/modelPriceEstimation/:businessId?currency=USD
Paramètres
Champs de la requête
- width (number): Largeur du modèle en millimètres.
- height (number): Hauteur du modèle en millimètres.
- depth (number): Profondeur du modèle en millimètres.
- density (number): Densité du matériau en g/cm³.
- filament_length (number): Longueur de filament requise pour imprimer le modèle en millimètres.
- hours (number): Temps d'impression total estimé en heures.
- volume (string): Volume du modèle en millimètres cubes.
- weight (string): Poids du modèle en grammes.
- minimum_bounding_box (number): Volume de la plus petite boîte englobante pouvant contenir le modèle en millimètres cubes.
- convex_hull (number): Volume de l'enveloppe convexe entourant le modèle en millimètres cubes.
- total_print_area (number): Surface totale du modèle à imprimer en millimètres carrés.
- number_of_layers (number): Nombre total de couches nécessaires pour imprimer le modèle.
- refer (string): Identifiant de l'option, par exemple, 'infill'.
- name (string): Nom d'affichage de l'option.
- type (string): Type d'option, par exemple, 'price_multiplier'.
- priceMultiplier (number): Multiplicateur affectant le calcul du prix.
- fixedPrice (object):
- price (number): Valeur du prix.
- currency (string): Code de devise, par exemple, «TND».
- percentage (number): Pourcentage d'effet supplémentaire de l'option.
- isDefault (boolean): Indique si cette option est la valeur par défaut.
- created (string): Horodatage de la création de l'option.
- finishId, machineId, materialId (string | null): Références aux ressources associées ou null si non applicable.
- machine (string): Identifiant de la machine utilisée, par exemple, «678a62210b2a09a5c54451bd».
- _id (string): Identifiant unique du matériau.
- service (string): Type de service, par exemple, «3D_PRINTING».
- materials (string): Nom du matériau, par exemple, «ABS M30».
- price (number): Prix par unité de matériau.
- currency (string): Code de devise, par exemple, «TND».
- technology (string): Technologie d'impression compatible avec le matériau.
- descriptions (string): Description détaillée du matériau et des spécifications de la machine.
- colors (array): Couleurs disponibles pour le matériau. Vide si aucune couleur n'est spécifiée.
- description (string): Caractéristiques et propriétés du matériau, par exemple, «ABS M30 est un matériau résistant aux chocs et robuste».
- materialPhotoUrl (string): URL de la photo du matériau (actuellement vide).
- surfaceMachine (string): Dimensions de la surface d'impression de la machine, par exemple, «22x22x22».
- unitMachine (string): Unité de mesure pour les dimensions de la machine, par exemple, «mm».
- density (object):
- value (number): Densité du matériau, par exemple, 1.03.
- unit (string): Unité de densité, par exemple, «g/cm³».
- startupCost (object):
- price (number | null): Valeur du coût de démarrage.
- currency (string): Code de devise.
- unit (string): Unité de mesure des matériaux, par exemple, «kg».
- factor (string): Facteur de conversion ou d'échelle, par exemple, «2.1».
Accès au fichier
Ce point de terminaison renvoie une URL sécurisée contenant un jeton temporaire. Le lien accorde l'accès au fichier pendant 30 minutes, et seuls les utilisateurs possédant cette URL exacte peuvent l'ouvrir. Après 30 minutes, il expire automatiquement.
Requête
const response = await fetch(
"/api/v2/ms-machine-owner/demand/access-storage?fileLink=YOUR_FILE_LINK",
{
method: "GET",
}
)
Exemple de réponse
[
{
"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
Pour activer les notifications en temps réel et les flux de travail pilotés par les événements, vous pouvez demander l'accès à notre fonctionnalité de webhooks. Les webhooks fournissent un mécanisme pour recevoir des requêtes HTTP POST contenant des données d'événement lorsque des événements spécifiques se produisent dans notre système.
Créer un nouvel abonnement webhook
Ce point de terminaison vous permet de créer une intégration webhook pour recevoir des notifications d'événements.
Requête
const webhook = await fetch(
"/api/v2/integrations_ms/webhooks",
{method: "POST"}
)
Charge utile
{
"businessId": "4665759##744333va",
"url": "https://6r6v676gxprh449.app.dev/webhook",
"secret": "$jowhsow2##",
"events": [
"order_placed"
]
}Exemple de réponse
{
"message": "Webhook Created Successfully",
"data": [
{
"_id": "67g10f145f5314c086ab7cc8",
"url": "https://6r6v676gxprh449.app.dev/webhook",
"events": [
"order_placed"
],
"secret": "$jowhsow2##",
"useSecret": false
}
]
}Champs de la requête
Tester l'abonnement webhook
Vous trouverez ci-dessous un exemple simple de la façon dont vous pouvez utiliser le webhook pour recevoir des événements de SeekMake en temps réel, sous forme de requêtes HTTP.
Exemple de 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}`);
});
Obtenir les webhooks par ID fabricant
Ce point de terminaison récupère les webhooks pour votre entreprise en utilisant votre ID Fabricant.
Requête
const webhook = await fetch(
"/api/v2/integrations_ms/webhooks/{businessId}",
{method: "GET"}
)
Exemple de réponse
{
"message": "Webhooks Retrieved Successfully",
"data": [
{
"_id": "67g10f145f5314c086ab7cc8",
"url": "https://6r6v676gxprh449.app.dev/webhook",
"events": [
"order_placed"
],
"secret": "$jowhsow2##",
"useSecret": false
}
]
}Champs de la requête
Mettre à jour un abonnement webhook spécifique par ID fabricant et ID webhook
Ce point de terminaison vous permet de mettre à jour une intégration Webhook spécifique pour votre entreprise. Vous devez simplement passer votre ID fabricant et votre ID webhook en tant que paramètres de requête, puis passer la mise à jour que vous avez l'intention d'apporter à ce webhook en tant que corps de requête.
Requête
const webhook = await fetch(
"/api/v2/integrations_ms/webhooks/:businessId/:webhookId",
{method: "POST"}
)
Charge utile
{
"events": [
"order_placed",
"quote_request_recieved"
]
}Exemple de réponse
{
"message": "Webhooks Updated Successfully",
"data": [
{
"_id": "4665759##744333va",
"url": "https://6r6v676gxprh449.app.dev/webhook",
"events": [
"order_placed",
"quote_request_recieved"
],
"secret": "$jowhsow2##",
"useSecret": false
}
]
}