Update product
curl --request PATCH \
--url https://api.ya.onl/v1/products/{product_id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "<string>",
"description": "<string>",
"characteristics": "<string>",
"status": "published"
}
'import requests
url = "https://api.ya.onl/v1/products/{product_id}"
payload = {
"name": "<string>",
"description": "<string>",
"characteristics": "<string>",
"status": "published"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
characteristics: '<string>',
status: 'published'
})
};
fetch('https://api.ya.onl/v1/products/{product_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.ya.onl/v1/products/{product_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'characteristics' => '<string>',
'status' => 'published'
]),
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.ya.onl/v1/products/{product_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"characteristics\": \"<string>\",\n \"status\": \"published\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.ya.onl/v1/products/{product_id}")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"characteristics\": \"<string>\",\n \"status\": \"published\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ya.onl/v1/products/{product_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"characteristics\": \"<string>\",\n \"status\": \"published\"\n}"
response = http.request(request)
puts response.read_body{
"categories": [
{
"id": 1,
"name": "Ropa"
},
{
"id": 2,
"name": "Polos"
}
],
"characteristics": "Material: 100% algodón pima. Peso: 180g/m². Cuello redondo reforzado.",
"created_at": "2026-01-15T10:00:00Z",
"description": "Polo de algodón pima de alta calidad",
"id": 9876,
"name": "Polo Negro",
"options": [
{
"id": 10,
"name": "Talla",
"values": [
{
"id": 100,
"name": "S"
},
{
"id": 101,
"name": "M"
},
{
"id": 102,
"name": "L"
}
]
}
],
"status": "available",
"variants": [
{
"base_price": 49.9,
"currency": "PEN",
"id": 500,
"media": [
{
"id": 1000,
"title": "Front view",
"url": "https://cdn.yavendio.com/products/9876/polo-negro-m-front.jpg"
}
],
"name": "Polo Negro - Talla M",
"status": "available"
}
]
}{
"type": "<string>",
"detail": "<string>"
}{
"type": "<string>",
"detail": "<string>"
}{
"type": "<string>",
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"type": "<string>",
"detail": "<string>"
}Products
Update product
Update an existing product for the authenticated merchant.
PATCH
/
v1
/
products
/
{product_id}
Update product
curl --request PATCH \
--url https://api.ya.onl/v1/products/{product_id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "<string>",
"description": "<string>",
"characteristics": "<string>",
"status": "published"
}
'import requests
url = "https://api.ya.onl/v1/products/{product_id}"
payload = {
"name": "<string>",
"description": "<string>",
"characteristics": "<string>",
"status": "published"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
characteristics: '<string>',
status: 'published'
})
};
fetch('https://api.ya.onl/v1/products/{product_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.ya.onl/v1/products/{product_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'characteristics' => '<string>',
'status' => 'published'
]),
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.ya.onl/v1/products/{product_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"characteristics\": \"<string>\",\n \"status\": \"published\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.ya.onl/v1/products/{product_id}")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"characteristics\": \"<string>\",\n \"status\": \"published\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ya.onl/v1/products/{product_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"characteristics\": \"<string>\",\n \"status\": \"published\"\n}"
response = http.request(request)
puts response.read_body{
"categories": [
{
"id": 1,
"name": "Ropa"
},
{
"id": 2,
"name": "Polos"
}
],
"characteristics": "Material: 100% algodón pima. Peso: 180g/m². Cuello redondo reforzado.",
"created_at": "2026-01-15T10:00:00Z",
"description": "Polo de algodón pima de alta calidad",
"id": 9876,
"name": "Polo Negro",
"options": [
{
"id": 10,
"name": "Talla",
"values": [
{
"id": 100,
"name": "S"
},
{
"id": 101,
"name": "M"
},
{
"id": 102,
"name": "L"
}
]
}
],
"status": "available",
"variants": [
{
"base_price": 49.9,
"currency": "PEN",
"id": 500,
"media": [
{
"id": 1000,
"title": "Front view",
"url": "https://cdn.yavendio.com/products/9876/polo-negro-m-front.jpg"
}
],
"name": "Polo Negro - Talla M",
"status": "available"
}
]
}{
"type": "<string>",
"detail": "<string>"
}{
"type": "<string>",
"detail": "<string>"
}{
"type": "<string>",
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"type": "<string>",
"detail": "<string>"
}Autorizaciones
Merchant API key for authentication
Parámetros de ruta
Unique product identifier
Cuerpo
application/json
Product name
Required string length:
1 - 250Short product description
Required string length:
1 - 500Detailed product description or specifications
Maximum string length:
1000Product status
Allowed value:
"published"Respuesta
Successful Response
Unique product identifier
Product name
Ejemplo:
"Polo Negro"
Short product description
Product status
Ejemplo:
"available"
Product categories
Show child attributes
Show child attributes
Configurable product options (e.g. size, color)
Show child attributes
Show child attributes
Product variants with pricing and availability
Show child attributes
Show child attributes
Date and time when the product was created (merchant's local timezone)
Detailed product description or specifications

