curl --request PUT \
--url https://api.devdraft.ai/api/v0/products/{id} \
--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/{id}"
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.put(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: 'PUT', headers: {'x-client-secret': '<api-key>'}};
options.body = form;
fetch('https://api.devdraft.ai/api/v0/products/{id}', 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/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
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/{id}"
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("PUT", 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.put("https://api.devdraft.ai/api/v0/products/{id}")
.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/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.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_bodyUpdate a product
Updates an existing product’s information and optionally adds new images.
This endpoint allows you to modify product details and manage product images.
Use Cases
- Update product information
- Change product pricing
- Modify product images
- Update product description
Example Request (multipart/form-data)
name: "Updated Premium Widget"
description: "Updated description"
price: "129.99"
images: [file1.jpg, file2.jpg] // Optional, up to 10 images
Notes
- Only include fields that need to be updated
- New images will replace existing images
- Maximum 10 images per product
- Images are automatically optimized
curl --request PUT \
--url https://api.devdraft.ai/api/v0/products/{id} \
--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/{id}"
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.put(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: 'PUT', headers: {'x-client-secret': '<api-key>'}};
options.body = form;
fetch('https://api.devdraft.ai/api/v0/products/{id}', 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/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
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/{id}"
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("PUT", 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.put("https://api.devdraft.ai/api/v0/products/{id}")
.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/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.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.
Path Parameters
Product ID
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 updated.
Was this page helpful?
