Documentacao da API v1

Integre seu sistema com a API do Bridge Link para criar pedidos, consultar rastreamento e baixar etiquetas.

Inicio Rapido

Siga estes passos para comecar a usar a API do Bridge Link em poucos minutos.

Obtenha suas credenciais

Entre em contato com a equipe Bridge Link para receber seu client_id e client_secret.

Obtenha o token de acesso

Use o endpoint POST /api/v1/oauth/token para obter seu idToken (valido por 24h).

Faca sua primeira requisicao

Use o endpoint POST /api/v1/orders com o header Authorization: Bearer {token}.

Acompanhe o pedido

Consulte o status e baixe as etiquetas usando os endpoints de consulta.

Ambiente de Producao: A URL base da API e https://bridgelink.com.br/api/v1

Autenticacao (OAuth2)

A API utiliza autenticacao OAuth2 com Bearer Token. Primeiro obtenha um token de acesso, depois use-o em todas as requisicoes.

Passo 1: Obter Token de Acesso

POST /api/v1/oauth/token Obter token de acesso

Request

cURL
curl -X POST "https://bridgelink.com.br/api/v1/oauth/token" \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": "bl_seu_client_id",
    "client_secret": "seu_client_secret"
  }'

Response

JSON Response
{
  "idToken": "eyJhbGciOiJIUzI1NiJ9.eyJjbGllbnRfaWQi...",
  "expiresIn": "86400"
}

Passo 2: Usar o Token nas Requisicoes

Headers Obrigatorios

Authorization: Bearer {seu_idToken}
Content-Type: application/json

Token TTL: O token e valido por 24 horas (86400 segundos). Apos expirar, solicite um novo token.

Importante: Mantenha suas credenciais em seguranca. Nunca compartilhe ou exponha seu client_secret em codigo publico.

Exemplo de Requisicao Autenticada

cURL
curl -X GET "https://bridgelink.com.br/api/v1/orders/ATN12345" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
  -H "Content-Type: application/json"

Criar Pedido

Crie um novo pedido/HAWB no sistema. O pedido sera processado e enviado para a transportadora automaticamente.

POST /api/v1/orders Cria um novo pedido

Parametros do Request

Parametro Tipo Descricao
shipTo* object Dados do destinatario (name, phone, federalTaxId, address)
shipTo.address.correios* object Endereco no formato Correios (logradouro, numero, bairro, cep, cidade, uf)
packages* array Lista de pacotes com peso e nota fiscal
packages[].weightG(opcional) number Peso do pacote em gramas
packages[].documentTypes.invoice(opcional) object Dados da nota fiscal (key, number, totalValue)

Exemplo de Request

JSON
{
  "shipTo": {
    "name": "Joao da Silva",
    "phone": "21988887777",
    "federalTaxId": "12345678901",
    "address": {
      "correios": {
        "logradouro": "Av. Atlantica",
        "numero": "500",
        "complemento": "Apto 1001",
        "bairro": "Copacabana",
        "cep": "22010000",
        "cidade": "Rio de Janeiro",
        "uf": "RJ"
      }
    }
  },
  "packages": [
    {
      "weightG": 1500,
      "documentTypes": {
        "invoice": {
          "key": "35240612345678000195550010000001011234567890",
          "number": "12345",
          "totalValue": 299.90
        }
      }
    }
  ]
}

Resposta de Sucesso

201 Created
JSON Response
{
  "packages": [
    {
      "trackingCode": "ATN123456789",
      "loggiKey": "bf7a1c2d-3e4f-5678-9abc-def012345678",
      "status": {
        "code": 2,
        "highLevelStatus": "IMPORTADO",
        "description": "Pedido importado na transportadora",
        "updatedTime": "2025-01-16T10:30:00Z"
      },
      "labelUrl": "https://bridgelink.com.br/api/v1/labels/ATN123456789",
      "flashLabelUrl": "https://webservice.flashpegasus.com.br/..."
    }
  ]
}

Exemplo cURL Completo

cURL
curl -X POST "https://bridgelink.com.br/api/v1/orders" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
  -H "Content-Type: application/json" \
  -d '{
    "shipTo": {
      "name": "Joao da Silva",
      "phone": "21988887777",
      "federalTaxId": "12345678901",
      "address": {
        "correios": {
          "logradouro": "Av. Atlantica",
          "numero": "500",
          "bairro": "Copacabana",
          "cep": "22010000",
          "cidade": "Rio de Janeiro",
          "uf": "RJ"
        }
      }
    },
    "packages": [
      {
        "weightG": 1500,
        "documentTypes": {
          "invoice": {
            "key": "35240612345678000195550010000001011234567890",
            "number": "12345",
            "totalValue": 299.90
          }
        }
      }
    ]
  }'

Consultar Pedido

Consulte os detalhes de um pedido existente usando o codigo de rastreamento.

GET /api/v1/orders/:tracking Consulta detalhes do pedido

Parametros da URL

Parametro Tipo Descricao
tracking* string Codigo de rastreamento do pedido (ex: ATN123456789)

Resposta de Sucesso

200 OK
JSON Response
{
  "orderId": "bf7a1c2d-3e4f-5678-9abc-def012345678",
  "externalId": "PED-2025-001",
  "status": "in_transit",
  "packages": [
    {
      "trackingCode": "ATN123456789",
      "logisticProvider": "flash_courier",
      "status": "in_transit",
      "weight": 1.5,
      "dimensions": {
        "width": 20,
        "height": 15,
        "depth": 10
      }
    }
  ],
  "sender": {
    "name": "Minha Loja LTDA",
    "address": { ... }
  },
  "recipient": {
    "name": "Joao da Silva",
    "address": { ... }
  },
  "createdAt": "2025-01-16T10:30:00Z",
  "updatedAt": "2025-01-16T14:45:00Z"
}

Exemplo cURL

cURL
curl -X GET "https://bridgelink.com.br/api/v1/orders/ATN123456789" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
  -H "Content-Type: application/json"

Rastreamento Detalhado

Obtenha o historico completo de rastreamento de um pedido, incluindo todos os eventos e movimentacoes.

GET /api/v1/tracking/:tracking Consulta rastreamento detalhado

Parametros da URL

Parametro Tipo Descricao
tracking* string Codigo de rastreamento do pacote

Resposta de Sucesso

200 OK
JSON Response
{
  "trackingCode": "ATN123456789",
  "status": "in_transit",
  "estimatedDelivery": "2025-01-18",
  "events": [
    {
      "timestamp": "2025-01-16T14:45:00Z",
      "status": "in_transit",
      "description": "Pacote em transito para o destino",
      "location": "CD Rio de Janeiro - RJ"
    },
    {
      "timestamp": "2025-01-16T10:30:00Z",
      "status": "picked_up",
      "description": "Pacote coletado",
      "location": "Sao Paulo - SP"
    },
    {
      "timestamp": "2025-01-16T08:00:00Z",
      "status": "created",
      "description": "Pedido criado no sistema",
      "location": "Sistema Bridge Link"
    }
  ]
}

Exemplo cURL

cURL
curl -X GET "https://bridgelink.com.br/api/v1/tracking/ATN123456789" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
  -H "Content-Type: application/json"

Etiquetas (Labels)

Baixe as etiquetas de envio em formato PDF codificadas em Base64.

GET /api/v1/labels/:tracking Baixa etiqueta em PDF

Parametros da URL

Parametro Tipo Descricao
tracking* string Codigo de rastreamento do pacote

Resposta de Sucesso

200 OK
JSON Response
{
  "orderId": "bf7a1c2d-3e4f-5678-9abc-def012345678",
  "packages": [
    {
      "trackingCode": "ATN123456789",
      "label": {
        "format": "pdf",
        "encoding": "base64",
        "content": "JVBERi0xLjQKJeLjz9MKNCAwIG9iago8PC9..."
      }
    }
  ]
}

Dica: O campo content contem o PDF codificado em Base64. Para visualizar ou salvar, decodifique o conteudo Base64.

Exemplo cURL

cURL
curl -X GET "https://bridgelink.com.br/api/v1/labels/ATN123456789" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
  -H "Content-Type: application/json"

Exemplo: Salvar PDF (Node.js)

JavaScript
// Decodificar e salvar o PDF
const fs = require('fs');

// response = resposta da API
const pdfBase64 = response.packages[0].label.content;
const pdfBuffer = Buffer.from(pdfBase64, 'base64');

fs.writeFileSync('etiqueta.pdf', pdfBuffer);
console.log('Etiqueta salva com sucesso!');

Codigos de Erro

A API utiliza codigos HTTP padrao para indicar o sucesso ou falha de uma requisicao.

200 OK
Requisicao bem-sucedida
201 Created
Recurso criado com sucesso
400 Bad Request
Dados invalidos na requisicao
401 Unauthorized
Credenciais invalidas ou ausentes
404 Not Found
Recurso nao encontrado
422 Unprocessable
Erro de validacao nos dados
429 Too Many Requests
Limite de requisicoes excedido
500 Server Error
Erro interno do servidor

Formato de Resposta de Erro

JSON Error Response
{
  "error": {
    "code": "validation_error",
    "message": "Dados do destinatario incompletos",
    "details": [
      {
        "field": "recipient.address.zipCode",
        "message": "CEP e obrigatorio"
      }
    ]
  }
}

Dica: Sempre verifique o campo details para obter informacoes especificas sobre erros de validacao.