Update a product
curl --request PUT \
--url https://api.example.com/products/{productId} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"description": "Ukelele",
"productKey": 60131324,
"price": 345.6,
"taxIncluded": true,
"taxability": "01",
"taxes": [],
"localTaxes": [],
"unitKey": "H87",
"unitName": "Elemento",
"sku": "UKL-001",
"livemode": true
}
'import requests
url = "https://api.example.com/products/{productId}"
payload = {
"description": "Ukelele",
"productKey": 60131324,
"price": 345.6,
"taxIncluded": True,
"taxability": "01",
"taxes": [],
"localTaxes": [],
"unitKey": "H87",
"unitName": "Elemento",
"sku": "UKL-001",
"livemode": True
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
description: 'Ukelele',
productKey: 60131324,
price: 345.6,
taxIncluded: true,
taxability: '01',
taxes: [],
localTaxes: [],
unitKey: 'H87',
unitName: 'Elemento',
sku: 'UKL-001',
livemode: true
})
};
fetch('https://api.example.com/products/{productId}', 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.example.com/products/{productId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'description' => 'Ukelele',
'productKey' => 60131324,
'price' => 345.6,
'taxIncluded' => true,
'taxability' => '01',
'taxes' => [
],
'localTaxes' => [
],
'unitKey' => 'H87',
'unitName' => 'Elemento',
'sku' => 'UKL-001',
'livemode' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <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.example.com/products/{productId}"
payload := strings.NewReader("{\n \"description\": \"Ukelele\",\n \"productKey\": 60131324,\n \"price\": 345.6,\n \"taxIncluded\": true,\n \"taxability\": \"01\",\n \"taxes\": [],\n \"localTaxes\": [],\n \"unitKey\": \"H87\",\n \"unitName\": \"Elemento\",\n \"sku\": \"UKL-001\",\n \"livemode\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
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.example.com/products/{productId}")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"Ukelele\",\n \"productKey\": 60131324,\n \"price\": 345.6,\n \"taxIncluded\": true,\n \"taxability\": \"01\",\n \"taxes\": [],\n \"localTaxes\": [],\n \"unitKey\": \"H87\",\n \"unitName\": \"Elemento\",\n \"sku\": \"UKL-001\",\n \"livemode\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/products/{productId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"description\": \"Ukelele\",\n \"productKey\": 60131324,\n \"price\": 345.6,\n \"taxIncluded\": true,\n \"taxability\": \"01\",\n \"taxes\": [],\n \"localTaxes\": [],\n \"unitKey\": \"H87\",\n \"unitName\": \"Elemento\",\n \"sku\": \"UKL-001\",\n \"livemode\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "590ce6c56d04f840aa8438af",
"organizationId": "org-uuid",
"livemode": false,
"description": "Ukelele",
"productKey": 60131324,
"price": 345.6,
"taxIncluded": true,
"taxability": "01",
"taxes": [
{
"type": "IVA",
"rate": 0.16,
"withholding": false,
"factor": "Tasa"
}
],
"localTaxes": [
{
"type": "IVA",
"rate": 0.16,
"withholding": false,
"factor": "Tasa"
}
],
"unitKey": "H87",
"unitName": "Elemento",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"sku": "UKL-001"
}products
Update a product
PUT
/
products
/
{productId}
Update a product
curl --request PUT \
--url https://api.example.com/products/{productId} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"description": "Ukelele",
"productKey": 60131324,
"price": 345.6,
"taxIncluded": true,
"taxability": "01",
"taxes": [],
"localTaxes": [],
"unitKey": "H87",
"unitName": "Elemento",
"sku": "UKL-001",
"livemode": true
}
'import requests
url = "https://api.example.com/products/{productId}"
payload = {
"description": "Ukelele",
"productKey": 60131324,
"price": 345.6,
"taxIncluded": True,
"taxability": "01",
"taxes": [],
"localTaxes": [],
"unitKey": "H87",
"unitName": "Elemento",
"sku": "UKL-001",
"livemode": True
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
description: 'Ukelele',
productKey: 60131324,
price: 345.6,
taxIncluded: true,
taxability: '01',
taxes: [],
localTaxes: [],
unitKey: 'H87',
unitName: 'Elemento',
sku: 'UKL-001',
livemode: true
})
};
fetch('https://api.example.com/products/{productId}', 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.example.com/products/{productId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'description' => 'Ukelele',
'productKey' => 60131324,
'price' => 345.6,
'taxIncluded' => true,
'taxability' => '01',
'taxes' => [
],
'localTaxes' => [
],
'unitKey' => 'H87',
'unitName' => 'Elemento',
'sku' => 'UKL-001',
'livemode' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <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.example.com/products/{productId}"
payload := strings.NewReader("{\n \"description\": \"Ukelele\",\n \"productKey\": 60131324,\n \"price\": 345.6,\n \"taxIncluded\": true,\n \"taxability\": \"01\",\n \"taxes\": [],\n \"localTaxes\": [],\n \"unitKey\": \"H87\",\n \"unitName\": \"Elemento\",\n \"sku\": \"UKL-001\",\n \"livemode\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
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.example.com/products/{productId}")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"Ukelele\",\n \"productKey\": 60131324,\n \"price\": 345.6,\n \"taxIncluded\": true,\n \"taxability\": \"01\",\n \"taxes\": [],\n \"localTaxes\": [],\n \"unitKey\": \"H87\",\n \"unitName\": \"Elemento\",\n \"sku\": \"UKL-001\",\n \"livemode\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/products/{productId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"description\": \"Ukelele\",\n \"productKey\": 60131324,\n \"price\": 345.6,\n \"taxIncluded\": true,\n \"taxability\": \"01\",\n \"taxes\": [],\n \"localTaxes\": [],\n \"unitKey\": \"H87\",\n \"unitName\": \"Elemento\",\n \"sku\": \"UKL-001\",\n \"livemode\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "590ce6c56d04f840aa8438af",
"organizationId": "org-uuid",
"livemode": false,
"description": "Ukelele",
"productKey": 60131324,
"price": 345.6,
"taxIncluded": true,
"taxability": "01",
"taxes": [
{
"type": "IVA",
"rate": 0.16,
"withholding": false,
"factor": "Tasa"
}
],
"localTaxes": [
{
"type": "IVA",
"rate": 0.16,
"withholding": false,
"factor": "Tasa"
}
],
"unitKey": "H87",
"unitName": "Elemento",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"sku": "UKL-001"
}Authorizations
apiKeybearer
API Key for authentication (format: sk_...)
Headers
Required for Supabase session auth. Ignored when authenticating with an API key (the organization resolves from the key).
Path Parameters
Body
application/json
Product or service description
Example:
"Ukelele"
SAT product/service key (clave de producto o servicio)
Example:
60131324
Unit price
Example:
345.6
Whether taxes are already included in the price
Example:
true
SAT taxability code (objeto de impuesto)
Example:
"01"
Applicable taxes
Show child attributes
Show child attributes
Applicable local taxes
Show child attributes
Show child attributes
SAT unit of measure key (clave de unidad)
Example:
"H87"
Unit of measure name
Example:
"Elemento"
Internal SKU or identifier
Example:
"UKL-001"
Whether this is a live mode product
Example:
true
Response
Example:
"590ce6c56d04f840aa8438af"
Example:
"org-uuid"
Example:
false
Example:
"Ukelele"
Example:
60131324
Example:
345.6
Example:
true
Example:
"01"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Example:
"H87"
Example:
"Elemento"
Example:
"UKL-001"