curl --request PUT \
--url https://api.dooki.com.br/v2/{alias}/pricing/promocodes/{id} \
--header 'Content-Type: application/json' \
--header 'User-Secret-Key: <api-key>' \
--header 'User-Token: <api-key>' \
--data '
{
"active": true,
"for_the_price_of": true,
"accumulate": true,
"once_per_customer": true,
"abandoned_cart": true,
"newsletter": true,
"free_shipment": true,
"ignore_promotion_products": true,
"value": 10,
"code": "10OFF",
"quantity": 100000,
"min_value": 99.99,
"start_at": "2025-06-01 00:00:00",
"end_at": "2025-08-10 00:00:00",
"freebie_id": 123,
"advertise": true
}
'import requests
url = "https://api.dooki.com.br/v2/{alias}/pricing/promocodes/{id}"
payload = {
"active": True,
"for_the_price_of": True,
"accumulate": True,
"once_per_customer": True,
"abandoned_cart": True,
"newsletter": True,
"free_shipment": True,
"ignore_promotion_products": True,
"value": 10,
"code": "10OFF",
"quantity": 100000,
"min_value": 99.99,
"start_at": "2025-06-01 00:00:00",
"end_at": "2025-08-10 00:00:00",
"freebie_id": 123,
"advertise": True
}
headers = {
"User-Token": "<api-key>",
"User-Secret-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'User-Token': '<api-key>',
'User-Secret-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
active: true,
for_the_price_of: true,
accumulate: true,
once_per_customer: true,
abandoned_cart: true,
newsletter: true,
free_shipment: true,
ignore_promotion_products: true,
value: 10,
code: '10OFF',
quantity: 100000,
min_value: 99.99,
start_at: '2025-06-01 00:00:00',
end_at: '2025-08-10 00:00:00',
freebie_id: 123,
advertise: true
})
};
fetch('https://api.dooki.com.br/v2/{alias}/pricing/promocodes/{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.dooki.com.br/v2/{alias}/pricing/promocodes/{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 => json_encode([
'active' => true,
'for_the_price_of' => true,
'accumulate' => true,
'once_per_customer' => true,
'abandoned_cart' => true,
'newsletter' => true,
'free_shipment' => true,
'ignore_promotion_products' => true,
'value' => 10,
'code' => '10OFF',
'quantity' => 100000,
'min_value' => 99.99,
'start_at' => '2025-06-01 00:00:00',
'end_at' => '2025-08-10 00:00:00',
'freebie_id' => 123,
'advertise' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"User-Secret-Key: <api-key>",
"User-Token: <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.dooki.com.br/v2/{alias}/pricing/promocodes/{id}"
payload := strings.NewReader("{\n \"active\": true,\n \"for_the_price_of\": true,\n \"accumulate\": true,\n \"once_per_customer\": true,\n \"abandoned_cart\": true,\n \"newsletter\": true,\n \"free_shipment\": true,\n \"ignore_promotion_products\": true,\n \"value\": 10,\n \"code\": \"10OFF\",\n \"quantity\": 100000,\n \"min_value\": 99.99,\n \"start_at\": \"2025-06-01 00:00:00\",\n \"end_at\": \"2025-08-10 00:00:00\",\n \"freebie_id\": 123,\n \"advertise\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("User-Token", "<api-key>")
req.Header.Add("User-Secret-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.dooki.com.br/v2/{alias}/pricing/promocodes/{id}")
.header("User-Token", "<api-key>")
.header("User-Secret-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"active\": true,\n \"for_the_price_of\": true,\n \"accumulate\": true,\n \"once_per_customer\": true,\n \"abandoned_cart\": true,\n \"newsletter\": true,\n \"free_shipment\": true,\n \"ignore_promotion_products\": true,\n \"value\": 10,\n \"code\": \"10OFF\",\n \"quantity\": 100000,\n \"min_value\": 99.99,\n \"start_at\": \"2025-06-01 00:00:00\",\n \"end_at\": \"2025-08-10 00:00:00\",\n \"freebie_id\": 123,\n \"advertise\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dooki.com.br/v2/{alias}/pricing/promocodes/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["User-Token"] = '<api-key>'
request["User-Secret-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"active\": true,\n \"for_the_price_of\": true,\n \"accumulate\": true,\n \"once_per_customer\": true,\n \"abandoned_cart\": true,\n \"newsletter\": true,\n \"free_shipment\": true,\n \"ignore_promotion_products\": true,\n \"value\": 10,\n \"code\": \"10OFF\",\n \"quantity\": 100000,\n \"min_value\": 99.99,\n \"start_at\": \"2025-06-01 00:00:00\",\n \"end_at\": \"2025-08-10 00:00:00\",\n \"freebie_id\": 123,\n \"advertise\": true\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"code": "TEST",
"description": "",
"customer_id": 123,
"active": true,
"expired": true,
"discount_type": "p",
"for_the_price_of": true,
"cart_default": true,
"type_increment_value": "",
"value": 10,
"price_products": 123,
"percent_products": 123,
"quantity": "100000",
"total_customers_used": "22",
"product_quantity": 123,
"product_max_quantity": 123,
"used": 22,
"items_count": 123,
"min_value": 99.99,
"use_percent": 0.02,
"shipment_percent": 123,
"accumulate": true,
"once_per_customer": true,
"abandoned_cart": true,
"newsletter": true,
"payments_ids": "[1, 2, 3, 4]",
"free_shipment": true,
"ignore_promotion_products": true,
"freebie_id": 123,
"advertise": true
}Atualizar cupom
Atualiza os detalhes de um cupom de desconto específico
curl --request PUT \
--url https://api.dooki.com.br/v2/{alias}/pricing/promocodes/{id} \
--header 'Content-Type: application/json' \
--header 'User-Secret-Key: <api-key>' \
--header 'User-Token: <api-key>' \
--data '
{
"active": true,
"for_the_price_of": true,
"accumulate": true,
"once_per_customer": true,
"abandoned_cart": true,
"newsletter": true,
"free_shipment": true,
"ignore_promotion_products": true,
"value": 10,
"code": "10OFF",
"quantity": 100000,
"min_value": 99.99,
"start_at": "2025-06-01 00:00:00",
"end_at": "2025-08-10 00:00:00",
"freebie_id": 123,
"advertise": true
}
'import requests
url = "https://api.dooki.com.br/v2/{alias}/pricing/promocodes/{id}"
payload = {
"active": True,
"for_the_price_of": True,
"accumulate": True,
"once_per_customer": True,
"abandoned_cart": True,
"newsletter": True,
"free_shipment": True,
"ignore_promotion_products": True,
"value": 10,
"code": "10OFF",
"quantity": 100000,
"min_value": 99.99,
"start_at": "2025-06-01 00:00:00",
"end_at": "2025-08-10 00:00:00",
"freebie_id": 123,
"advertise": True
}
headers = {
"User-Token": "<api-key>",
"User-Secret-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'User-Token': '<api-key>',
'User-Secret-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
active: true,
for_the_price_of: true,
accumulate: true,
once_per_customer: true,
abandoned_cart: true,
newsletter: true,
free_shipment: true,
ignore_promotion_products: true,
value: 10,
code: '10OFF',
quantity: 100000,
min_value: 99.99,
start_at: '2025-06-01 00:00:00',
end_at: '2025-08-10 00:00:00',
freebie_id: 123,
advertise: true
})
};
fetch('https://api.dooki.com.br/v2/{alias}/pricing/promocodes/{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.dooki.com.br/v2/{alias}/pricing/promocodes/{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 => json_encode([
'active' => true,
'for_the_price_of' => true,
'accumulate' => true,
'once_per_customer' => true,
'abandoned_cart' => true,
'newsletter' => true,
'free_shipment' => true,
'ignore_promotion_products' => true,
'value' => 10,
'code' => '10OFF',
'quantity' => 100000,
'min_value' => 99.99,
'start_at' => '2025-06-01 00:00:00',
'end_at' => '2025-08-10 00:00:00',
'freebie_id' => 123,
'advertise' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"User-Secret-Key: <api-key>",
"User-Token: <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.dooki.com.br/v2/{alias}/pricing/promocodes/{id}"
payload := strings.NewReader("{\n \"active\": true,\n \"for_the_price_of\": true,\n \"accumulate\": true,\n \"once_per_customer\": true,\n \"abandoned_cart\": true,\n \"newsletter\": true,\n \"free_shipment\": true,\n \"ignore_promotion_products\": true,\n \"value\": 10,\n \"code\": \"10OFF\",\n \"quantity\": 100000,\n \"min_value\": 99.99,\n \"start_at\": \"2025-06-01 00:00:00\",\n \"end_at\": \"2025-08-10 00:00:00\",\n \"freebie_id\": 123,\n \"advertise\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("User-Token", "<api-key>")
req.Header.Add("User-Secret-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.dooki.com.br/v2/{alias}/pricing/promocodes/{id}")
.header("User-Token", "<api-key>")
.header("User-Secret-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"active\": true,\n \"for_the_price_of\": true,\n \"accumulate\": true,\n \"once_per_customer\": true,\n \"abandoned_cart\": true,\n \"newsletter\": true,\n \"free_shipment\": true,\n \"ignore_promotion_products\": true,\n \"value\": 10,\n \"code\": \"10OFF\",\n \"quantity\": 100000,\n \"min_value\": 99.99,\n \"start_at\": \"2025-06-01 00:00:00\",\n \"end_at\": \"2025-08-10 00:00:00\",\n \"freebie_id\": 123,\n \"advertise\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dooki.com.br/v2/{alias}/pricing/promocodes/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["User-Token"] = '<api-key>'
request["User-Secret-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"active\": true,\n \"for_the_price_of\": true,\n \"accumulate\": true,\n \"once_per_customer\": true,\n \"abandoned_cart\": true,\n \"newsletter\": true,\n \"free_shipment\": true,\n \"ignore_promotion_products\": true,\n \"value\": 10,\n \"code\": \"10OFF\",\n \"quantity\": 100000,\n \"min_value\": 99.99,\n \"start_at\": \"2025-06-01 00:00:00\",\n \"end_at\": \"2025-08-10 00:00:00\",\n \"freebie_id\": 123,\n \"advertise\": true\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"code": "TEST",
"description": "",
"customer_id": 123,
"active": true,
"expired": true,
"discount_type": "p",
"for_the_price_of": true,
"cart_default": true,
"type_increment_value": "",
"value": 10,
"price_products": 123,
"percent_products": 123,
"quantity": "100000",
"total_customers_used": "22",
"product_quantity": 123,
"product_max_quantity": 123,
"used": 22,
"items_count": 123,
"min_value": 99.99,
"use_percent": 0.02,
"shipment_percent": 123,
"accumulate": true,
"once_per_customer": true,
"abandoned_cart": true,
"newsletter": true,
"payments_ids": "[1, 2, 3, 4]",
"free_shipment": true,
"ignore_promotion_products": true,
"freebie_id": 123,
"advertise": true
}Body
Estrutura de dados para criação e atualização de um cupom de desconto.
Ativação do cupom
Cupom para o preço de
Acumulação do cupom
Válido apenas uma vez por cliente
Cupom para carrinho abandonado
Cupom para assinatura de newsletter
Cupom para frete grátis
Ignorar produtos promocionais
Tipo de desconto
p, v Valor do desconto
10
Código do cupom
"10OFF"
Quantidade disponível do cupom
100000
Valor mínimo para aplicação do cupom
99.99
Data e hora de início
"2025-06-01 00:00:00"
Data e hora de término
"2025-08-10 00:00:00"
Brinde (rule 'promocode') concedido pelo cupom
Divulgar o cupom com brinde no checkout
Response
Cupom atualizado com sucesso
Representa um código promocional
ID do cupom.
Código digitado pelo cliente no carrinho para aplicar o cupom. Único na loja, com no mínimo 3 e no máximo 40 caracteres.
"TEST"
Descrição interna do cupom, com até 60 caracteres. Emojis são removidos ao salvar.
""
ID do cliente para quem o cupom é exclusivo. Quando nulo, o cupom vale para qualquer cliente.
Indica se o cupom está ativo.
Indica se a data de término do cupom já passou.
Tipo do desconto do cupom: p para percentual e v para valor fixo em reais.
p, v Indica se o cupom é do tipo 'pelo preço de', em que cada produto elegível passa a custar o valor de price_products.
Indica se o cupom é aplicado automaticamente no carrinho. Um cupom percentual de 100% ou mais nunca é tratado como padrão.
Tipo do desconto como está gravado no cupom, com os mesmos valores de discount_type (p ou v).
""
Valor do desconto: percentual quando discount_type for p, ou valor em reais quando for v.
10
Preço aplicado a cada produto elegível quando for_the_price_of for verdadeiro. Obrigatório nesse caso.
Percentual de desconto aplicado ao preço de cada produto elegível, usado em vez de price_products quando for maior que zero.
Quantidade total de usos disponíveis do cupom. O cupom deixa de valer quando used alcança esse número.
"100000"
Quantidade de clientes distintos que já usaram o cupom.
"22"
Quantidade de produtos elegíveis que o cupom 'pelo preço de' considera no cálculo do total.
Quantidade máxima de produtos elegíveis a que o cupom se aplica.
Quantidade de vezes que o cupom já foi usado.
22
Quantidade de itens do carrinho considerada na regra do cupom. Campo legado: é gravado e devolvido, mas nenhuma regra desta API o aplica.
Valor mínimo do subtotal do carrinho, em reais, para o cupom poder ser aplicado.
99.99
Proporção de uso do cupom, entre os usos já feitos e o total disponível.
0.02
Percentual de desconto aplicado ao frete, usado quando o cupom desconta no frete em vez de descontar nos produtos.
Indica se o cupom pode ser acumulado com outras promoções da loja.
Indica se cada cliente pode usar o cupom uma única vez.
Indica se o cupom está vinculado a alguma configuração de recuperação de carrinho abandonado.
Indica se o cupom é entregue ao cliente que se inscreve na newsletter da loja.
IDs dos meios de pagamento em que o cupom é aceito.
"[1, 2, 3, 4]"
Indica se o cupom concede frete grátis em vez de desconto no valor do pedido.
Indica se o cupom deixa de valer para produtos que já estão em promoção.
Brinde concedido pelo cupom
Divulgar o cupom com brinde no checkout
Was this page helpful?