Criar Produto
curl --request POST \
--url https://api.selltrust.com.br/api/v1/product \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"is_bundle": true,
"category_id": "<string>",
"title": "<string>",
"description": "<string>",
"images": [
"<string>"
],
"hide_product": true,
"chat_enabled": true,
"chat_welcome_message": "<string>",
"pricing": {},
"inventory_amount": 123,
"license_keys": [
"<string>"
],
"min_quantity": 123,
"instructions": "<string>",
"parent_id": "<string>"
}
'import requests
url = "https://api.selltrust.com.br/api/v1/product"
payload = {
"is_bundle": True,
"category_id": "<string>",
"title": "<string>",
"description": "<string>",
"images": ["<string>"],
"hide_product": True,
"chat_enabled": True,
"chat_welcome_message": "<string>",
"pricing": {},
"inventory_amount": 123,
"license_keys": ["<string>"],
"min_quantity": 123,
"instructions": "<string>",
"parent_id": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
is_bundle: true,
category_id: '<string>',
title: '<string>',
description: '<string>',
images: ['<string>'],
hide_product: true,
chat_enabled: true,
chat_welcome_message: '<string>',
pricing: {},
inventory_amount: 123,
license_keys: ['<string>'],
min_quantity: 123,
instructions: '<string>',
parent_id: '<string>'
})
};
fetch('https://api.selltrust.com.br/api/v1/product', 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.selltrust.com.br/api/v1/product",
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([
'is_bundle' => true,
'category_id' => '<string>',
'title' => '<string>',
'description' => '<string>',
'images' => [
'<string>'
],
'hide_product' => true,
'chat_enabled' => true,
'chat_welcome_message' => '<string>',
'pricing' => [
],
'inventory_amount' => 123,
'license_keys' => [
'<string>'
],
'min_quantity' => 123,
'instructions' => '<string>',
'parent_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$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.selltrust.com.br/api/v1/product"
payload := strings.NewReader("{\n \"is_bundle\": true,\n \"category_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"hide_product\": true,\n \"chat_enabled\": true,\n \"chat_welcome_message\": \"<string>\",\n \"pricing\": {},\n \"inventory_amount\": 123,\n \"license_keys\": [\n \"<string>\"\n ],\n \"min_quantity\": 123,\n \"instructions\": \"<string>\",\n \"parent_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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.selltrust.com.br/api/v1/product")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"is_bundle\": true,\n \"category_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"hide_product\": true,\n \"chat_enabled\": true,\n \"chat_welcome_message\": \"<string>\",\n \"pricing\": {},\n \"inventory_amount\": 123,\n \"license_keys\": [\n \"<string>\"\n ],\n \"min_quantity\": 123,\n \"instructions\": \"<string>\",\n \"parent_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.selltrust.com.br/api/v1/product")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"is_bundle\": true,\n \"category_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"hide_product\": true,\n \"chat_enabled\": true,\n \"chat_welcome_message\": \"<string>\",\n \"pricing\": {},\n \"inventory_amount\": 123,\n \"license_keys\": [\n \"<string>\"\n ],\n \"min_quantity\": 123,\n \"instructions\": \"<string>\",\n \"parent_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "uuid-do-produto",
"store_id": "uuid-da-loja",
"category_id": "uuid-da-categoria",
"title": "Elden Ring",
"slug": "elden-ring",
"description": "<p>Key Steam</p>",
"images": ["https://cdn.seudominio.com/elden-ring.jpg"],
"hide_product": false,
"is_bundle": false,
"price": 24.9,
"comparison_price": 49.9,
"min_quantity": null,
"inventory_amount": 10,
"parent_id": null,
"position": 0,
"sales_count": 0,
"chat_enabled": false,
"chat_welcome_message": null,
"instructions": null,
"created_at": "2024-01-01T00:00:00.000Z",
"updated_at": "2024-01-01T00:00:00.000Z"
}
Produtos
Criar Produto
POST
/
api
/
v1
/
product
Criar Produto
curl --request POST \
--url https://api.selltrust.com.br/api/v1/product \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"is_bundle": true,
"category_id": "<string>",
"title": "<string>",
"description": "<string>",
"images": [
"<string>"
],
"hide_product": true,
"chat_enabled": true,
"chat_welcome_message": "<string>",
"pricing": {},
"inventory_amount": 123,
"license_keys": [
"<string>"
],
"min_quantity": 123,
"instructions": "<string>",
"parent_id": "<string>"
}
'import requests
url = "https://api.selltrust.com.br/api/v1/product"
payload = {
"is_bundle": True,
"category_id": "<string>",
"title": "<string>",
"description": "<string>",
"images": ["<string>"],
"hide_product": True,
"chat_enabled": True,
"chat_welcome_message": "<string>",
"pricing": {},
"inventory_amount": 123,
"license_keys": ["<string>"],
"min_quantity": 123,
"instructions": "<string>",
"parent_id": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
is_bundle: true,
category_id: '<string>',
title: '<string>',
description: '<string>',
images: ['<string>'],
hide_product: true,
chat_enabled: true,
chat_welcome_message: '<string>',
pricing: {},
inventory_amount: 123,
license_keys: ['<string>'],
min_quantity: 123,
instructions: '<string>',
parent_id: '<string>'
})
};
fetch('https://api.selltrust.com.br/api/v1/product', 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.selltrust.com.br/api/v1/product",
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([
'is_bundle' => true,
'category_id' => '<string>',
'title' => '<string>',
'description' => '<string>',
'images' => [
'<string>'
],
'hide_product' => true,
'chat_enabled' => true,
'chat_welcome_message' => '<string>',
'pricing' => [
],
'inventory_amount' => 123,
'license_keys' => [
'<string>'
],
'min_quantity' => 123,
'instructions' => '<string>',
'parent_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$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.selltrust.com.br/api/v1/product"
payload := strings.NewReader("{\n \"is_bundle\": true,\n \"category_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"hide_product\": true,\n \"chat_enabled\": true,\n \"chat_welcome_message\": \"<string>\",\n \"pricing\": {},\n \"inventory_amount\": 123,\n \"license_keys\": [\n \"<string>\"\n ],\n \"min_quantity\": 123,\n \"instructions\": \"<string>\",\n \"parent_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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.selltrust.com.br/api/v1/product")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"is_bundle\": true,\n \"category_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"hide_product\": true,\n \"chat_enabled\": true,\n \"chat_welcome_message\": \"<string>\",\n \"pricing\": {},\n \"inventory_amount\": 123,\n \"license_keys\": [\n \"<string>\"\n ],\n \"min_quantity\": 123,\n \"instructions\": \"<string>\",\n \"parent_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.selltrust.com.br/api/v1/product")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"is_bundle\": true,\n \"category_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"hide_product\": true,\n \"chat_enabled\": true,\n \"chat_welcome_message\": \"<string>\",\n \"pricing\": {},\n \"inventory_amount\": 123,\n \"license_keys\": [\n \"<string>\"\n ],\n \"min_quantity\": 123,\n \"instructions\": \"<string>\",\n \"parent_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "uuid-do-produto",
"store_id": "uuid-da-loja",
"category_id": "uuid-da-categoria",
"title": "Elden Ring",
"slug": "elden-ring",
"description": "<p>Key Steam</p>",
"images": ["https://cdn.seudominio.com/elden-ring.jpg"],
"hide_product": false,
"is_bundle": false,
"price": 24.9,
"comparison_price": 49.9,
"min_quantity": null,
"inventory_amount": 10,
"parent_id": null,
"position": 0,
"sales_count": 0,
"chat_enabled": false,
"chat_welcome_message": null,
"instructions": null,
"created_at": "2024-01-01T00:00:00.000Z",
"updated_at": "2024-01-01T00:00:00.000Z"
}
Cadastra um produto simples, um combo (
Produto simples ou variação (
Nas respostas,
is_bundle: true) ou uma variação (parent_id do combo). O payload de variação é o mesmo de um produto simples — só muda o parent_id.
Veja o modelo completo em Produtos e variações.
string
required
Token no formato
Bearer <seu_token>.Campos comuns (todos os tipos)
boolean
required
false = produto simples ou variação. true = combo (agrupador, sem preço/estoque).uuid
required
Categoria folha (sem subcategorias).
string
required
2 a 255 caracteres.
string
required
HTML/texto, até 50.000 caracteres. Pode ser
null.string[]
required
Até 5 itens. Cada um é
uuid.extensão ou URL http(s)://…. Array vazio [] é permitido. URL externa é exibida como está, sem prefixo do CDN da SellTrust.boolean
required
true oculta na vitrine.boolean
required
Liga o chat do produto.
string
required
Mensagem automática (até 1000 caracteres) ou
null.Produto simples ou variação (is_bundle: false)
object
required
{ "price": number, "comparison": number | null }. comparison menor que price é rejeitado.integer
required
Estoque numérico (≥ 0) ou
null (sem controle). Ignorado se license_keys tiver itens — nesse caso o estoque vira o tamanho da lista.string[]
required
Chaves/contas para entrega. Pode ser
[]. Máx. 5.000 por request; cada string 1–255 caracteres.integer
required
Quantidade mínima no checkout, ou
null.string
required
Instruções pós-compra (até 30.000) ou
null.uuid
required
null para produto raiz. UUID do combo para criar uma variação.O pai em
parent_id precisa existir na loja e ter is_bundle: true. Caso contrário a API retorna 400/404.Exemplo: produto simples com imagem por URL e estoque
{
"is_bundle": false,
"category_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"title": "Elden Ring",
"description": "<p>Key Steam</p>",
"images": ["https://cdn.seudominio.com/elden-ring.jpg"],
"hide_product": false,
"chat_enabled": false,
"chat_welcome_message": null,
"pricing": { "price": 24.9, "comparison": 49.9 },
"inventory_amount": 10,
"license_keys": [],
"min_quantity": null,
"instructions": null,
"parent_id": null
}
Exemplo: combo
{
"is_bundle": true,
"category_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"title": "Pacote Steam",
"description": null,
"images": ["https://cdn.seudominio.com/pack.jpg"],
"hide_product": false,
"chat_enabled": false,
"chat_welcome_message": null
}
Exemplo: variação do combo (mesmo contrato do produto simples)
{
"is_bundle": false,
"parent_id": "uuid-do-combo",
"category_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"title": "Pacote Steam — 30 dias",
"description": null,
"images": ["https://cdn.seudominio.com/pack-30d.jpg"],
"hide_product": false,
"chat_enabled": false,
"chat_welcome_message": null,
"pricing": { "price": 19.9, "comparison": null },
"inventory_amount": 50,
"license_keys": ["KEY-001", "KEY-002"],
"min_quantity": 1,
"instructions": "Entrega no e-mail em até 5 minutos."
}
images vem como URL pronta para <img src>. Link externo permanece o que você enviou. No combo, chat_enabled e chat_welcome_message também são gravados.
{
"id": "uuid-do-produto",
"store_id": "uuid-da-loja",
"category_id": "uuid-da-categoria",
"title": "Elden Ring",
"slug": "elden-ring",
"description": "<p>Key Steam</p>",
"images": ["https://cdn.seudominio.com/elden-ring.jpg"],
"hide_product": false,
"is_bundle": false,
"price": 24.9,
"comparison_price": 49.9,
"min_quantity": null,
"inventory_amount": 10,
"parent_id": null,
"position": 0,
"sales_count": 0,
"chat_enabled": false,
"chat_welcome_message": null,
"instructions": null,
"created_at": "2024-01-01T00:00:00.000Z",
"updated_at": "2024-01-01T00:00:00.000Z"
}
