curl --request POST \
--url https://api.devdraft.ai/api/v0/products \
--header 'Content-Type: multipart/form-data' \
--header 'x-client-secret: <api-key>' \
--form 'name=Premium Software License' \
--form 'description=Annual license for our premium software suite with advanced features, priority support, and regular updates.' \
--form price=299.99 \
--form currency=USD \
--form type=DIGITAL \
--form weight=123 \
--form 'unit=<string>' \
--form quantity=123 \
--form stockCount=123 \
--form status=ACTIVE \
--form productType=PRODUCT \
--form 'images=<string>'import requests
url = "https://api.devdraft.ai/api/v0/products"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nPremium Software License\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\nAnnual license for our premium software suite with advanced features, priority support, and regular updates.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n299.99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nUSD\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"type\"\r\n\r\nDIGITAL\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"weight\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"unit\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stockCount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"status\"\r\n\r\nACTIVE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productType\"\r\n\r\nPRODUCT\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"images\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
headers = {
"x-client-secret": "<api-key>",
"Content-Type": "multipart/form-data"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const form = new FormData();
form.append('name', 'Premium Software License');
form.append('description', 'Annual license for our premium software suite with advanced features, priority support, and regular updates.');
form.append('price', '299.99');
form.append('currency', 'USD');
form.append('type', 'DIGITAL');
form.append('weight', '123');
form.append('unit', '<string>');
form.append('quantity', '123');
form.append('stockCount', '123');
form.append('status', 'ACTIVE');
form.append('productType', 'PRODUCT');
form.append('images', '<string>');
const options = {method: 'POST', headers: {'x-client-secret': '<api-key>'}};
options.body = form;
fetch('https://api.devdraft.ai/api/v0/products', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.devdraft.ai/api/v0/products",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nPremium Software License\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\nAnnual license for our premium software suite with advanced features, priority support, and regular updates.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n299.99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nUSD\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"type\"\r\n\r\nDIGITAL\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"weight\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"unit\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stockCount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"status\"\r\n\r\nACTIVE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productType\"\r\n\r\nPRODUCT\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"images\"\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"x-client-secret: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.devdraft.ai/api/v0/products"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nPremium Software License\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\nAnnual license for our premium software suite with advanced features, priority support, and regular updates.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n299.99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nUSD\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"type\"\r\n\r\nDIGITAL\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"weight\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"unit\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stockCount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"status\"\r\n\r\nACTIVE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productType\"\r\n\r\nPRODUCT\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"images\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-client-secret", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.devdraft.ai/api/v0/products")
.header("x-client-secret", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nPremium Software License\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\nAnnual license for our premium software suite with advanced features, priority support, and regular updates.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n299.99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nUSD\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"type\"\r\n\r\nDIGITAL\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"weight\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"unit\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stockCount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"status\"\r\n\r\nACTIVE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productType\"\r\n\r\nPRODUCT\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"images\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devdraft.ai/api/v0/products")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-client-secret"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nPremium Software License\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\nAnnual license for our premium software suite with advanced features, priority support, and regular updates.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n299.99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nUSD\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"type\"\r\n\r\nDIGITAL\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"weight\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"unit\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stockCount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"status\"\r\n\r\nACTIVE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productType\"\r\n\r\nPRODUCT\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"images\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_bodyCreate a new product
Creates a new product with optional image uploads.
This endpoint allows you to create products with detailed information and multiple images.
Use Cases
- Add new products to your catalog
- Create products with multiple images
- Set up product pricing and descriptions
Supported Image Formats
- JPEG/JPG
- PNG
- WebP
- Maximum 10 images per product
- Maximum file size: 5MB per image
Example Request (multipart/form-data)
name: "Premium Widget"
description: "High-quality widget for all your needs"
price: "99.99"
images: [file1.jpg, file2.jpg] // Optional, up to 10 images
Required Fields
name: Product nameprice: Product price (decimal number)
Optional Fields
description: Detailed product descriptionimages: Product images (up to 10 files)
curl --request POST \
--url https://api.devdraft.ai/api/v0/products \
--header 'Content-Type: multipart/form-data' \
--header 'x-client-secret: <api-key>' \
--form 'name=Premium Software License' \
--form 'description=Annual license for our premium software suite with advanced features, priority support, and regular updates.' \
--form price=299.99 \
--form currency=USD \
--form type=DIGITAL \
--form weight=123 \
--form 'unit=<string>' \
--form quantity=123 \
--form stockCount=123 \
--form status=ACTIVE \
--form productType=PRODUCT \
--form 'images=<string>'import requests
url = "https://api.devdraft.ai/api/v0/products"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nPremium Software License\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\nAnnual license for our premium software suite with advanced features, priority support, and regular updates.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n299.99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nUSD\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"type\"\r\n\r\nDIGITAL\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"weight\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"unit\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stockCount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"status\"\r\n\r\nACTIVE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productType\"\r\n\r\nPRODUCT\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"images\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
headers = {
"x-client-secret": "<api-key>",
"Content-Type": "multipart/form-data"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const form = new FormData();
form.append('name', 'Premium Software License');
form.append('description', 'Annual license for our premium software suite with advanced features, priority support, and regular updates.');
form.append('price', '299.99');
form.append('currency', 'USD');
form.append('type', 'DIGITAL');
form.append('weight', '123');
form.append('unit', '<string>');
form.append('quantity', '123');
form.append('stockCount', '123');
form.append('status', 'ACTIVE');
form.append('productType', 'PRODUCT');
form.append('images', '<string>');
const options = {method: 'POST', headers: {'x-client-secret': '<api-key>'}};
options.body = form;
fetch('https://api.devdraft.ai/api/v0/products', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.devdraft.ai/api/v0/products",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nPremium Software License\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\nAnnual license for our premium software suite with advanced features, priority support, and regular updates.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n299.99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nUSD\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"type\"\r\n\r\nDIGITAL\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"weight\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"unit\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stockCount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"status\"\r\n\r\nACTIVE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productType\"\r\n\r\nPRODUCT\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"images\"\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"x-client-secret: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.devdraft.ai/api/v0/products"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nPremium Software License\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\nAnnual license for our premium software suite with advanced features, priority support, and regular updates.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n299.99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nUSD\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"type\"\r\n\r\nDIGITAL\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"weight\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"unit\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stockCount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"status\"\r\n\r\nACTIVE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productType\"\r\n\r\nPRODUCT\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"images\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-client-secret", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.devdraft.ai/api/v0/products")
.header("x-client-secret", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nPremium Software License\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\nAnnual license for our premium software suite with advanced features, priority support, and regular updates.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n299.99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nUSD\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"type\"\r\n\r\nDIGITAL\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"weight\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"unit\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stockCount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"status\"\r\n\r\nACTIVE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productType\"\r\n\r\nPRODUCT\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"images\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devdraft.ai/api/v0/products")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-client-secret"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nPremium Software License\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\nAnnual license for our premium software suite with advanced features, priority support, and regular updates.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n299.99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nUSD\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"type\"\r\n\r\nDIGITAL\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"weight\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"unit\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stockCount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"status\"\r\n\r\nACTIVE\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productType\"\r\n\r\nPRODUCT\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"images\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_bodyAuthorizations
Your secret API key. Keep this secure and never expose it in client-side code.
Body
Product name as it will appear to customers. Should be clear and descriptive.
1 - 200"Premium Software License"
Detailed description of the product. Supports markdown formatting for rich text display.
2000"Annual license for our premium software suite with advanced features, priority support, and regular updates."
Product price in the specified currency. Must be greater than 0.
x >= 0.01299.99
Currency code for the price. Defaults to USD if not specified.
USD, EUR, GBP, CAD, AUD, JPY "USD"
Product type
"DIGITAL"
Weight of the product
Unit of measurement
Quantity available
Stock count
Product status
"ACTIVE"
Product type
"PRODUCT"
Array of image URLs
Response
The product has been successfully created.
Was this page helpful?
