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

Configuração na Wake

Para configurar esta integração no admin da Wake:

  1. Acesse o admin da Wake Commerce
  2. Navegue até Configurações → Fretes → Frete Customizado
  3. 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
  4. Salve e teste a integração

Documentação Adicional