cURL
curl --request GET \
--url https://api.cakto.com.br/public_api/disputes/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cakto.com.br/public_api/disputes/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cakto.com.br/public_api/disputes/', 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.cakto.com.br/public_api/disputes/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.cakto.com.br/public_api/disputes/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.get("https://api.cakto.com.br/public_api/disputes/")
.header("Authorization", "Bearer <token>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.cakto.com.br/public_api/disputes/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"refId": "Q7W2k9P",
"orderId": "5f2a1c3e-8b7d-4e21-9f10-3c6d7a2b9e41",
"kind": "chargeback",
"productName": "Curso de Exemplo",
"customerName": "Maria Souza",
"amount": "197.00",
"formattedAmount": "R$ 197,00",
"openedAt": "2026-10-19T10:12:40.118302-03:00",
"deadline": "2026-10-25T23:59:59-03:00",
"status": "awaiting_defense",
"statusLabel": "Aguardando defesa",
"canSubmit": true,
"submittedAt": null,
"decidedAt": null
}
],
"counts": {
"awaiting": 1,
"in_review": 0,
"won": 0,
"lost": 0,
"expired": 0,
"all": 1
},
"summary": {
"awaiting": 1,
"awaitingAmount": "197.00",
"awaitingFormattedAmount": "R$ 197,00",
"nextDeadline": "2026-10-25T23:59:59-03:00",
"inReview": 0,
"won90d": 0,
"decided90d": 0,
"recovered90d": "0.00",
"recoveredFormatted90d": "R$ 0,00",
"disputeRate30d": null,
"disputeRateLimit": "1.00"
}
}{
"detail": "As credenciais de autenticação não foram fornecidas."
}{
"detail": "Não foi possível falar com o serviço de pagamentos. Tente de novo em instantes."
}Chargeback e MED
Listar Chargebacks e MEDs
As contestações dos seus produtos e o estado da defesa de cada uma.
GET
/
public_api
/
disputes
/
cURL
curl --request GET \
--url https://api.cakto.com.br/public_api/disputes/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cakto.com.br/public_api/disputes/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cakto.com.br/public_api/disputes/', 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.cakto.com.br/public_api/disputes/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.cakto.com.br/public_api/disputes/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.get("https://api.cakto.com.br/public_api/disputes/")
.header("Authorization", "Bearer <token>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.cakto.com.br/public_api/disputes/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"refId": "Q7W2k9P",
"orderId": "5f2a1c3e-8b7d-4e21-9f10-3c6d7a2b9e41",
"kind": "chargeback",
"productName": "Curso de Exemplo",
"customerName": "Maria Souza",
"amount": "197.00",
"formattedAmount": "R$ 197,00",
"openedAt": "2026-10-19T10:12:40.118302-03:00",
"deadline": "2026-10-25T23:59:59-03:00",
"status": "awaiting_defense",
"statusLabel": "Aguardando defesa",
"canSubmit": true,
"submittedAt": null,
"decidedAt": null
}
],
"counts": {
"awaiting": 1,
"in_review": 0,
"won": 0,
"lost": 0,
"expired": 0,
"all": 1
},
"summary": {
"awaiting": 1,
"awaitingAmount": "197.00",
"awaitingFormattedAmount": "R$ 197,00",
"nextDeadline": "2026-10-25T23:59:59-03:00",
"inReview": 0,
"won90d": 0,
"decided90d": 0,
"recovered90d": "0.00",
"recoveredFormatted90d": "R$ 0,00",
"disputeRate30d": null,
"disputeRateLimit": "1.00"
}
}{
"detail": "As credenciais de autenticação não foram fornecidas."
}{
"detail": "Não foi possível falar com o serviço de pagamentos. Tente de novo em instantes."
}Escopo
read orders
O que esta chamada traz
Os chargebacks e MEDs dos seus produtos no período (period, 90 dias por padrão), contados pela data
da contestação. A aba awaiting, que é o padrão, é a fila do que ainda pode ser defendido, com o
prazo mais próximo primeiro. É a mesma lista de Minhas vendas › Chargeback e MED no painel.
O id da disputa é o orderId, o id do pedido. Use-o em Consultar,
Enviar defesa e Complementar.
O pré-chargeback não aparece: ele é um alerta, não uma contestação, e não comporta defesa. Veja o
guia de chargeback, pré-chargeback e MED.
Abas (status)
| Valor | O que entra |
|---|---|
awaiting | Aguardando defesa (awaiting_defense) ou com complemento pedido (needs_info) |
in_review | Com o Compliance da Cakto (submitted, in_review) ou no banco (sent) |
won | Revertidas a seu favor |
lost | Mantidas pelo banco ou não encaminhadas (declined) |
expired | O prazo de defesa terminou sem envio |
all | Todas |
counts traz o total de cada aba no período, e summary, os números do painel: quantas estão a
defender, o valor delas, o próximo prazo e o que foi revertido em 90 dias.
Para saber de uma contestação nova
Não é preciso consultar esta lista em intervalos. O webhookdispute_defense_requested avisa quando um chargeback ou MED abre prazo de
defesa, com o prazo no corpo do evento.Authorizations
Token de autenticação do tipo Bearer {access_token}, onde {access_token} é o token obtido no fluxo de autenticação.
Query Parameters
Itens por página. Default 10, máximo 50.
Página a retornar. Default 1.
Dias para trás, pela data da contestação. Default 90.
Available options:
30, 365, 90 refId do pedido, nome do produto ou nome ou e-mail do comprador.
Aba da lista. awaiting (default): aguardando defesa ou com complemento pedido. in_review: com o Compliance ou no banco. won, lost (inclui a não encaminhada), expired e all.
Available options:
all, awaiting, expired, in_review, lost, won Tipo da contestação. Default all.
Available options:
all, chargeback, med Response
Disputas da aba pedida. counts traz o total de cada aba, e summary, os números do painel (a defender, próximo prazo, revertidos em 90 dias).
Was this page helpful?