Create product
curl --request POST \
--url https://api.ya.onl/v1/products \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"catalog_id": 123,
"name": "Polo Negro",
"description": "Polo de algodón pima de alta calidad",
"characteristics": "Material: 100% algodón pima. Peso: 180g/m².",
"status": "published"
}
'import requests
url = "https://api.ya.onl/v1/products"
payload = {
"catalog_id": 123,
"name": "Polo Negro",
"description": "Polo de algodón pima de alta calidad",
"characteristics": "Material: 100% algodón pima. Peso: 180g/m².",
"status": "published"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
catalog_id: 123,
name: 'Polo Negro',
description: 'Polo de algodón pima de alta calidad',
characteristics: 'Material: 100% algodón pima. Peso: 180g/m².',
status: 'published'
})
};
fetch('https://api.ya.onl/v1/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.ya.onl/v1/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 => json_encode([
'catalog_id' => 123,
'name' => 'Polo Negro',
'description' => 'Polo de algodón pima de alta calidad',
'characteristics' => 'Material: 100% algodón pima. Peso: 180g/m².',
'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"
payload := strings.NewReader("{\n \"catalog_id\": 123,\n \"name\": \"Polo Negro\",\n \"description\": \"Polo de algodón pima de alta calidad\",\n \"characteristics\": \"Material: 100% algodón pima. Peso: 180g/m².\",\n \"status\": \"published\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.ya.onl/v1/products")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"catalog_id\": 123,\n \"name\": \"Polo Negro\",\n \"description\": \"Polo de algodón pima de alta calidad\",\n \"characteristics\": \"Material: 100% algodón pima. Peso: 180g/m².\",\n \"status\": \"published\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ya.onl/v1/products")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"catalog_id\": 123,\n \"name\": \"Polo Negro\",\n \"description\": \"Polo de algodón pima de alta calidad\",\n \"characteristics\": \"Material: 100% algodón pima. Peso: 180g/m².\",\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>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"type": "<string>",
"detail": "<string>"
}Products
Create product
Create a new product for the authenticated merchant.
POST
/
v1
/
products
Create product
curl --request POST \
--url https://api.ya.onl/v1/products \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"catalog_id": 123,
"name": "Polo Negro",
"description": "Polo de algodón pima de alta calidad",
"characteristics": "Material: 100% algodón pima. Peso: 180g/m².",
"status": "published"
}
'import requests
url = "https://api.ya.onl/v1/products"
payload = {
"catalog_id": 123,
"name": "Polo Negro",
"description": "Polo de algodón pima de alta calidad",
"characteristics": "Material: 100% algodón pima. Peso: 180g/m².",
"status": "published"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
catalog_id: 123,
name: 'Polo Negro',
description: 'Polo de algodón pima de alta calidad',
characteristics: 'Material: 100% algodón pima. Peso: 180g/m².',
status: 'published'
})
};
fetch('https://api.ya.onl/v1/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.ya.onl/v1/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 => json_encode([
'catalog_id' => 123,
'name' => 'Polo Negro',
'description' => 'Polo de algodón pima de alta calidad',
'characteristics' => 'Material: 100% algodón pima. Peso: 180g/m².',
'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"
payload := strings.NewReader("{\n \"catalog_id\": 123,\n \"name\": \"Polo Negro\",\n \"description\": \"Polo de algodón pima de alta calidad\",\n \"characteristics\": \"Material: 100% algodón pima. Peso: 180g/m².\",\n \"status\": \"published\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.ya.onl/v1/products")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"catalog_id\": 123,\n \"name\": \"Polo Negro\",\n \"description\": \"Polo de algodón pima de alta calidad\",\n \"characteristics\": \"Material: 100% algodón pima. Peso: 180g/m².\",\n \"status\": \"published\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ya.onl/v1/products")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"catalog_id\": 123,\n \"name\": \"Polo Negro\",\n \"description\": \"Polo de algodón pima de alta calidad\",\n \"characteristics\": \"Material: 100% algodón pima. Peso: 180g/m².\",\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>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"type": "<string>",
"detail": "<string>"
}Autorizaciones
Merchant API key for authentication
Cuerpo
application/json
Catalog ID to associate the product with
Product name
Required string length:
3 - 250Ejemplo:
"Polo Negro"
Short product description
Required string length:
10 - 500Ejemplo:
"Polo de algodón pima de alta calidad"
Detailed product description or specifications
Maximum string length:
1000Ejemplo:
"Material: 100% algodón pima. Peso: 180g/m²."
Product 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

