POST /api/wake/cotacao
API de cotação de frete em tempo real para integração com a plataforma Wake Commerce.
Timeout: 5 segundos - A Wake cancela requisições que demoram mais que 5 segundos.
API URL
https://flashcalculador.com.br/api/wake/cotacao
Informações da Requisição
| Método HTTP | POST |
| Formato da Requisição | JSON (application/json) |
| Formato da Resposta | JSON (Array direto) |
| Requer Autenticação? | Sim, através do header X-API-Key |
Autenticação
A autenticação é feita através do header HTTP:
| X-API-Key | Chave fornecida pela Flash Courier. |
| obrigatório | Valor de exemplo: f865a036e2f760aa2919b1ab22f094084071d786e1 |
Parâmetros do Request Body (JSON)
A requisição deve enviar um JSON com a seguinte estrutura:
pacote (obrigatório)
| pacote.produto | Array de produtos a serem enviados |
| pacote.produto[].peso | Peso do produto em gramas (obrigatório) |
| pacote.destino.cep | CEP de destino (obrigatório) |
Exemplo de Requisição
POST https://flashcalculador.com.br/api/wake/cotacao
Content-Type: application/json
X-API-Key: f865a036e2f760aa2919b1ab22f094084071d786e1
{
"loja": "Minha Loja",
"centroDistribuicaoId": 1,
"pacote": {
"produto": [
{
"id": 1,
"nome": "Produto Teste",
"sku": "SKU-001",
"peso": 1500,
"altura": 10.0,
"largura": 20.0,
"comprimento": 30.0,
"valor": 100.00
},
{
"id": 2,
"nome": "Outro Produto",
"sku": "SKU-002",
"peso": 800,
"altura": 5.0,
"largura": 15.0,
"comprimento": 20.0,
"valor": 50.00
}
],
"destino": {
"cep": "01310100",
"logradouro": "Av. Paulista",
"numero": "1000",
"bairro": "Bela Vista",
"cidade": "São Paulo",
"estado": "SP"
}
}
}
Resposta de exemplo
Em caso de sucesso
código HTTP 200 (Sucesso)
Importante: A resposta é um array direto (não um objeto). Cada item deve ter um campo "id" único.
[
{
"nome": "Flash Log",
"id": "flash-log-001",
"valor": 17.86,
"prazo": {
"minimo": 2,
"maximo": 5
}
},
{
"nome": "Flash Expresso",
"id": "flash-expresso-002",
"valor": 22.50,
"prazo": {
"minimo": 1,
"maximo": 3
}
}
]
Em caso de CEP não atendido
código HTTP 200 (Sucesso)
Quando o CEP não é atendido, retorna array vazio:
[]
Em caso de autenticação inválida
código HTTP 401 (Não autorizado)
[]
Em caso de parâmetros inválidos
código HTTP 400 (Bad Request)
[]
Estrutura da Resposta
Cada cotação no array deve conter:
| nome | Nome do serviço de entrega (máximo 100 caracteres) |
| obrigatório | Exemplo: "Flash Log" |
| id | Identificador único do serviço (obrigatório) |
| obrigatório | Exemplo: "flash-log-001" |
| valor | Valor do frete em reais |
| obrigatório | Exemplo: 17.86 |
| prazo | Objeto com prazo mínimo e máximo em dias úteis |
| obrigatório | Exemplo: {"minimo": 2, "maximo": 5} |
Integração
Alguns exemplos de código de integração com a API Wake.
Ruby
require 'net/http'
require 'json'
uri = URI('https://flashcalculador.com.br/api/wake/cotacao')
payload = {
loja: "Minha Loja",
centroDistribuicaoId: 1,
pacote: {
produto: [
{
id: 1,
nome: "Produto Teste",
peso: 1500,
altura: 10.0,
largura: 20.0,
comprimento: 30.0,
valor: 100.00
}
],
destino: {
cep: "01310100",
logradouro: "Av. Paulista",
numero: "1000",
bairro: "Bela Vista",
cidade: "São Paulo",
estado: "SP"
}
}
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true if uri.scheme == 'https'
request = Net::HTTP::Post.new(uri.path, {
'Content-Type' => 'application/json',
'X-API-Key' => 'sua_chave_api_aqui'
})
request.body = payload.to_json
response = http.request(request)
puts response.code
# => "200"
cotacoes = JSON.parse(response.body)
# => [{"nome"=>"Flash Log", "id"=>"flash-log-001", "valor"=>17.86, "prazo"=>{"minimo"=>2, "maximo"=>5}}]
Java
import java.io.*;
import java.net.*;
import org.json.*;
public class WakeIntegration {
public static void main(String[] args) throws Exception {
URL url = new URL("https://flashcalculador.com.br/api/wake/cotacao");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("X-API-Key", "sua_chave_api_aqui");
conn.setDoOutput(true);
String payload = "{\\"loja\\":\\"Minha Loja\\",\\"centroDistribuicaoId\\":1," +
"\\"pacote\\":{\\"produto\\":[{\\"id\\":1,\\"nome\\":\\"Produto\\",\\"peso\\":1500}]," +
"\\"destino\\":{\\"cep\\":\\"01310100\\"}}}";
OutputStream os = conn.getOutputStream();
os.write(payload.getBytes());
os.flush();
System.out.println(conn.getResponseCode());
// 200
BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line;
StringBuilder response = new StringBuilder();
while ((line = br.readLine()) != null) {
response.append(line);
}
br.close();
System.out.println(response.toString());
// [{"nome":"Flash Log","id":"flash-log-001","valor":17.86,"prazo":{"minimo":2,"maximo":5}}]
}
}
Javascript
const payload = {
loja: "Minha Loja",
centroDistribuicaoId: 1,
pacote: {
produto: [
{
id: 1,
nome: "Produto Teste",
peso: 1500,
altura: 10.0,
largura: 20.0,
comprimento: 30.0,
valor: 100.00
}
],
destino: {
cep: "01310100",
logradouro: "Av. Paulista",
numero: "1000",
bairro: "Bela Vista",
cidade: "São Paulo",
estado: "SP"
}
}
};
fetch("https://flashcalculador.com.br/api/wake/cotacao", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": "sua_chave_api_aqui"
},
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(cotacoes => {
console.log(cotacoes);
// [{"nome":"Flash Log","id":"flash-log-001","valor":17.86,"prazo":{"minimo":2,"maximo":5}}]
});
C#
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace WakeIntegration
{
class Program
{
static async Task Main(string[] args)
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "sua_chave_api_aqui");
var payload = new
{
loja = "Minha Loja",
centroDistribuicaoId = 1,
pacote = new
{
produto = new[]
{
new { id = 1, nome = "Produto", peso = 1500 }
},
destino = new { cep = "01310100" }
}
};
var json = JsonConvert.SerializeObject(payload);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(
"https://flashcalculador.com.br/api/wake/cotacao", content);
Console.WriteLine(response.StatusCode);
// 200
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
// [{"nome":"Flash Log","id":"flash-log-001","valor":17.86,"prazo":{"minimo":2,"maximo":5}}]
}
}
}
Python
import requests
import json
url = "https://flashcalculador.com.br/api/wake/cotacao"
headers = {
"Content-Type": "application/json",
"X-API-Key": "sua_chave_api_aqui"
}
payload = {
"loja": "Minha Loja",
"centroDistribuicaoId": 1,
"pacote": {
"produto": [
{
"id": 1,
"nome": "Produto Teste",
"peso": 1500,
"altura": 10.0,
"largura": 20.0,
"comprimento": 30.0,
"valor": 100.00
}
],
"destino": {
"cep": "01310100",
"logradouro": "Av. Paulista",
"numero": "1000",
"bairro": "Bela Vista",
"cidade": "São Paulo",
"estado": "SP"
}
}
}
response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
# 200
cotacoes = response.json()
print(cotacoes)
# [{'nome': 'Flash Log', 'id': 'flash-log-001', 'valor': 17.86, 'prazo': {'minimo': 2, 'maximo': 5}}]
PHP
"Minha Loja",
"centroDistribuicaoId" => 1,
"pacote" => [
"produto" => [
[
"id" => 1,
"nome" => "Produto Teste",
"peso" => 1500,
"altura" => 10.0,
"largura" => 20.0,
"comprimento" => 30.0,
"valor" => 100.00
]
],
"destino" => [
"cep" => "01310100",
"logradouro" => "Av. Paulista",
"numero" => "1000",
"bairro" => "Bela Vista",
"cidade" => "São Paulo",
"estado" => "SP"
]
]
];
$options = [
'http' => [
'header' => "Content-Type: application/json\r" .
"X-API-Key: sua_chave_api_aqui\r",
'method' => 'POST',
'content' => json_encode($payload)
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
// [{"nome":"Flash Log","id":"flash-log-001","valor":17.86,"prazo":{"minimo":2,"maximo":5}}]
$cotacoes = json_decode($result);
print_r($cotacoes);
/*
Array
(
[0] => stdClass Object
(
[nome] => Flash Log
[id] => flash-log-001
[valor] => 17.86
[prazo] => stdClass Object
(
[minimo] => 2
[maximo] => 5
)
)
)
*/
?>
Observações Importantes
- Timeout: A Wake cancela requisições que demoram mais de 5 segundos
- Formato da Resposta: Deve ser um array direto, não um objeto com chave
- Campo ID: É obrigatório e deve ser único para cada cotação
- Peso: Vem em gramas no campo "peso" de cada produto
- Múltiplos Produtos: O peso total é a soma dos pesos de todos os produtos
- Autenticação: Use o header X-API-Key com a chave fornecida pela Flash Courier
-
Health Check:
Endpoint disponível em
https://flashcalculador.com.br/api/wake/healthpara verificar se a API está funcionando
Configuração na Wake
Para configurar esta integração no admin da Wake:
- Acesse o admin da Wake Commerce
- Navegue até Configurações → Fretes → Frete Customizado
-
Configure:
-
URL do Endpoint:
https://flashcalculador.com.br/api/wake/cotacao - Método: POST
-
Header Customizado:
Nome:X-API-Key
Valor: sua chave API fornecida pela Flash Courier
-
URL do Endpoint:
- Salve e teste a integração