Dokumentacja API Maile Cargo

Zintegrowany REST API

Kompletna dokumentacja API do integracji wysyłki Maile Cargo. Dostęp do rezerwacji, stawek frachtowych, generowania etykiet i śledzenia przez ujednolicone API zarządzania transportem Cargoson.

Uzyskaj klucz API

Przegląd API Maile Cargo

To API zapewnia programowy dostęp do usług wysyłkowych Maile Cargo przez ujednoliconą platformę zarządzania transportem Cargoson. Zintegruj możliwości Maile Cargo, w tym rezerwację przesyłek, śledzenie, wyceny stawek i generowanie etykiet w swoich aplikacjach.

Możliwości API

  • Tworzenie i zarządzanie rezerwacjami przesyłek Maile Cargo
  • Śledzenie przesyłek i aktualizacje statusu
  • Pobieranie wycen stawek frachtowych i czasów tranzytu
  • Generowanie etykiet wysyłkowych w wielu formatach (PDF, PNG, ZPL)
  • Tworzenie etykiet zwrotnych dla logistyki zwrotnej
  • Wyszukiwanie lokalizacji paczkomatów i punktów odbioru
  • Lista dostępnych usług przewoźnika
  • Automatyczne zlecenia odbioru kurierskiego

Bazowy URL i uwierzytelnianie

Bazowy URL

https://www.cargoson.com/api/v1

Uwierzytelnianie

Wszystkie żądania muszą zawierać klucz API i prawidłowy nagłówek Accept:

Authorization: Bearer TWOJ_KLUCZ_API
Accept: application/vnd.api.v1

API rezerwacji Maile Cargo

Automatyzacja Cargoson
Ulepszenie Cargoson:

Maile Cargo nie udostępnia API rezerwacji. Cargoson automatycznie wysyła potwierdzenia rezerwacji e-mailem w Twoim imieniu, podczas gdy nadal korzystasz z tego samego ujednoliconego interfejsu API.

Twórz przesyłki Maile Cargo i pobieraj etykiety wysyłkowe za pomocą endpointu Queries. Rezerwacje są wysyłane do systemu przewoźnika w czasie rzeczywistym, a etykiety są generowane natychmiast.

Zapytanie vs bezpośrednia rezerwacja

Endpoint Queries obsługuje dwie metody rezerwacji:

  • Tryb zapytania - Utwórz zlecenie transportowe bez określania przewoźnika (jeszcze). Pozwala to na ręczne porównanie cen i czasów dostawy przewoźników, żądanie nowych wycen spot, wprowadzanie korekt/aktualizacji przesyłki i delegowanie wyboru przewoźnika innym osobom, zanim dokonasz ostatecznego wyboru przewoźnika w Cargoson.
  • Bezpośrednia rezerwacja - Określ ID usługi przewoźnika (z API Rate lub Services), aby zarezerwować bezpośrednio u Maile Cargo. Gwarantuje to, że Twoja przesyłka korzysta z dokładnie wybranej usługi.

Aby zarezerwować bezpośrednio u Maile Cargo, zawsze zdefiniuj direct_booking_service_id.

POST /queries

Utwórz zapytanie o przesyłkę lub bezpośrednią rezerwację dla Maile Cargo. Dołącz direct_booking_service_id, aby utworzyć natychmiastową rezerwację.

Request Parameters

collection_date string required

Data odbioru w formacie RRRR-MM-DD

collection_country string required

Kod kraju odbioru (ISO 3166-1 alpha-2)

collection_postcode string required

Kod pocztowy odbioru

collection_address_row_1 string required

Adres ulicy odbioru

collection_city string required

Miasto odbioru

collection_company_name string required

Nazwa firmy nadawcy

collection_contact_name string required

Osoba kontaktowa nadawcy

collection_contact_phone string required

Numer telefonu nadawcy

delivery_country string required

Kod kraju dostawy

delivery_postcode string required

Kod pocztowy dostawy

delivery_address_row_1 string required

Adres ulicy dostawy

delivery_city string required

Miasto dostawy

delivery_company_name string required

Nazwa firmy odbiorcy

delivery_contact_name string required

Osoba kontaktowa odbiorcy

delivery_contact_phone string required

Numer telefonu odbiorcy

rows_attributes array required

Tablica paczek/palet z ilością, typem opakowania, wagą i opisem

options[direct_booking_service_id] integer

ID usługi Maile Cargo dla bezpośredniej rezerwacji

Example: Direct Booking Request

{
  "collection_date": "2026-02-15",
  "collection_country": "DE",
  "collection_postcode": "10115",
  "collection_address_row_1": "Hauptstraße 123",
  "collection_city": "Berlin",
  "collection_company_name": "Demo GmbH",
  "collection_contact_name": "Max Mustermann",
  "collection_contact_phone": "+4930123456",
  "delivery_country": "SE",
  "delivery_postcode": "11122",
  "delivery_address_row_1": "Drottninggatan 45",
  "delivery_city": "Stockholm",
  "delivery_company_name": "Demo Sweden AB",
  "delivery_contact_name": "Erik Andersson",
  "delivery_contact_phone": "+46812345678",
  "rows_attributes": [
    {
      "quantity": 1,
      "package_type": "EUR",
      "weight": 100.0,
      "description": "Goods on EUR pallet"
    }
  ],
  "options": {
    "direct_booking_service_id": 1234
  }
}

Example Response

{
  "id": 12345,
  "reference": "CG12345",
  "status": "booked",
  "latest_status": "confirmed",
  "tracking_reference": "ABC1234567890",
  "tracking_url": "https://tracking.carrier.com/ABC1234567890",
  "label_url": "https://www.cargoson.com/labels/abc123.pdf",
  "confirmed_at": "2026-02-15T10:30:00Z"
}

Generowanie etykiet

Etykiety wysyłkowe Maile Cargo są automatycznie generowane podczas tworzenia rezerwacji. Etykiety są dostępne w wielu formatach, aby obsługiwać różne typy drukarek.

Obsługiwane formaty etykiet

a4 - Format PDF A4 dla drukarek biurowych (4 etykiety na stronę)
label_printer - Format PDF 4x6 cali (~10x15cm) dla drukarek termicznych

Etykiety są zawarte w odpowiedzi rezerwacji przez pole label_url. Pobierz i wydrukuj etykietę z podanego URL po rezerwacji.

API stawek Maile Cargo (wycena frachtu)

Silnik Cargoson
Ulepszenie Cargoson:

Maile Cargo nie udostępnia natywnego API stawek. Silnik stawek frachtowych Cargoson oblicza ceny przy użyciu przesłanych umów cenowych, zapewniając takie samo doświadczenie API jak przewoźnicy z natywnymi API stawek. Możesz przesłać stawki przewoźników w dowolnym formacie (Excel, PDF, nawet odręcznie pisane cenniki), a my je zdigitalizujemy.

Pobieraj stawki frachtowe Maile Cargo w czasie rzeczywistym przed rezerwacją. API Rate zwraca dostępne usługi, ceny i szacowane czasy dostawy.

POST /freightPrices/list

Pobierz wyceny stawek frachtowych od Maile Cargo i innych aktywowanych przewoźników na Twoim koncie.

Request Parameters

collection_date string required

Data odbioru w formacie RRRR-MM-DD

collection_country string required

Kod kraju odbioru (ISO 3166-1 alpha-2)

collection_postcode string required

Kod pocztowy odbioru

delivery_country string required

Kod kraju dostawy

delivery_postcode string required

Kod pocztowy dostawy

rows_attributes array required

Tablica paczek/palet z ilością, typem opakowania, wagą i opisem

Example Request

{
  "collection_date": "2026-02-15",
  "collection_postcode": "10115",
  "collection_country": "DE",
  "collection_with_tail_lift": true,
  "collection_prenotification": true,
  "delivery_postcode": "11122",
  "delivery_country": "SE",
  "delivery_with_tail_lift": true,
  "delivery_prenotification": true,
  "delivery_return_document": true,
  "delivery_to_private_person": true,
  "frigo": true,
  "adr": false,
  "rows_attributes": [
    {
      "quantity": 1,
      "package_type": "EUR",
      "weight": 100.0,
      "description": "Goods on EUR pallet"
    },
    {
      "quantity": 2,
      "package_type": "FIN",
      "weight": 300.0,
      "description": "Goods on two FIN pallets"
    }
  ],
  "request_external_partners": false
}

Example Response

{
  "status": 200,
  "object": {
    "prices": [
      {
        "carrier": "Maile Cargo SIA",
        "reg_no": "40203365428",
        "id": 3828,
        "service": "Main",
        "service_id": 85,
        "price": "19.13",
        "unit": "payable_weight",
        "type": "price_list"
      },
      {
        "carrier": "Maile Cargo SIA",
        "reg_no": "40203365428",
        "id": 3828,
        "service": "Express Service",
        "service_id": 123,
        "price": "32.50",
        "unit": "real_weight",
        "type": "online"
      },
      {
        "carrier": "Demo Logistics GmbH",
        "reg_no": "87654321",
        "id": 456,
        "service": "Main",
        "service_id": 555,
        "price": "20.00",
        "unit": "payable_weight",
        "type": "price_list"
      }
    ]
  }
}

API śledzenia Maile Cargo

Automatyzacja Cargoson
Ulepszenie Cargoson:

Maile Cargo nie udostępnia zdarzeń śledzenia przez API. Cargoson udostępnia portal śledzenia, w którym przewoźnik może ręcznie aktualizować status przesyłki, zapewniając Tobie i Twoim klientom spójne doświadczenie śledzenia.

Śledź przesyłki Maile Cargo używając numeru referencyjnego Cargoson. Uzyskaj aktualny status, aktualizacje lokalizacji i szacowany czas dostawy.

GET /bookings/{reference}

Pobierz szczegóły śledzenia przesyłki Maile Cargo używając numeru referencyjnego rezerwacji Cargoson.

Example Response

{
  "reference": "CG12345",
  "status": "in_transit",
  "latest_status": "collected",
  "tracking_reference": "ABC1234567890",
  "tracking_url": "https://tracking.carrier.com/ABC1234567890",
  "confirmed_at": "2026-02-15T10:30:00Z",
  "collected_at": "2026-02-15T14:20:00Z",
  "estimated_delivery": "2026-02-18T16:00:00Z"
}

API etykiet zwrotnych Maile Cargo

Napędzane przez Cargoson
Ulepszenie Cargoson:

Maile Cargo nie obsługuje natywnie etykiet zwrotnych. Cargoson generuje etykiety zwrotne i zarządza procesem logistyki zwrotnej przez naszą platformę.

Generuj etykiety wysyłkowe zwrotne dla przesyłek Maile Cargo. Etykiety zwrotne pozwalają klientom odsyłać przedmioty za pomocą opłaconej z góry wysyłki.

POST /bookings/{reference}/return_labels

Utwórz etykietę zwrotną dla istniejącej przesyłki Maile Cargo.

Request Parameters

label_format string

Format etykiety: a4 lub label_printer (domyślnie: a4)

Example Request

{
  "label_format": "a4"
}

Example Response

{
  "return_label_url": "https://www.cargoson.com/labels/return_abc123.pdf",
  "tracking_reference": "RETURN9876543210",
  "tracking_url": "https://tracking.carrier.com/RETURN9876543210"
}

Funkcje etykiet zwrotnych

  • Opłacone z góry etykiety wysyłkowe zwrotne
  • Te same opcje formatów co etykiety wychodzące (A4, termiczne)
  • Oddzielny numer śledzenia dla zwrotów
  • Bezproblemowa integracja z usługami zwrotów Maile Cargo

Zlecenia kurierskie Maile Cargo

Automatyzacja Cargoson

Cargoson automatyzuje zlecenia odbioru kurierskiego dla przesyłek Maile Cargo, co oznacza jedno zadanie mniej, o które musisz się martwić.

Jak Cargoson obsługuje zlecenia kurierskie

Wielu przewoźników wymaga osobnego tworzenia etykiet, a następnie ręcznego zlecania odbioru kurierskiego. Inni nie mają oddzielnego systemu etykiet i wezwania kuriera, a każda przesyłka jest kompletną, oddzielną przesyłką. Wierzymy, że powinien istnieć jeden standard API przewoźników, ale obecnie każdy przewoźnik tworzy swój własny unikalny system, co utrudnia użytkownikom zapamiętanie osobliwości i zawiłości każdego z nich. Cargoson upraszcza wezwania kurierskie, traktując każdą przesyłkę holistycznie: zlecenia kurierskie są automatycznie zarządzane jako część procesu rezerwacji.

Inteligentna optymalizacja odbioru

Cargoson optymalizuje wezwania kurierskie, aby zmniejszyć koszty i poprawić efektywność.

  • 1. Konsolidacja partiami - Wiele przesyłek z tej samej lokalizacji jest grupowanych w jedno zlecenie odbioru
  • 2. Obsługa specyficzna dla przewoźnika - Niektórzy przewoźnicy włączają odbiór w rezerwację, inni wymagają oddzielnych zleceń. Cargoson automatycznie obsługuje oba warianty za Ciebie
  • 3. Regularne harmonogramy odbioru - Skonfiguruj zaplanowane odbiory w określonych odstępach czasu (np. codziennie do mojego głównego magazynu o 15:00), a Cargoson całkowicie pominie indywidualne wezwania kurierskie

Korzyści

  • Nie musisz śledzić, którzy przewoźnicy wymagają oddzielnych zleceń kurierskich
  • Automatyczna optymalizacja zapobiega niepotrzebnym wezwaniom odbioru
  • Wsparcie dla regularnych harmonogramów odbioru
  • Uproszczony przepływ pracy wysyłkowej - po prostu utwórz rezerwację

Konfiguracja

Automatyzacja odbioru kurierskiego jest domyślnie włączona dla wszystkich przesyłek Maile Cargo. Aby skonfigurować regularne harmonogramy odbioru lub niestandardowe reguły optymalizacji odbioru, skontaktuj się z [email protected].

API usług Maile Cargo

Silnik Cargoson
Ulepszenie Cargoson:

API usług to funkcja udostępniana przez Cargoson, która zwraca ujednoliconą listę wszystkich dostępnych usług od Maile Cargo i innych przewoźników w Twojej sieci. Pozwala to dynamicznie wyświetlać opcje wysyłki klientom bez hardkodowania ID usług.

Pobierz listę dostępnych usług wysyłkowych Maile Cargo. Używaj ID usług podczas dokonywania bezpośrednich rezerwacji, aby upewnić się, że otrzymasz dokładnie tę usługę, której chcesz.

GET /services/list

Zwróć listę usług Maile Cargo dostępnych na koncie Twojej firmy.

Example Response

{
  "services": [
    {
      "carrier": {
        "id": 3828,
        "name": "Maile Cargo SIA",
        "short_name": "Maile Cargo",
        "reg_no": "40203365428"
      },
      "id": 85,
      "name": "Main",
      "service_type": "road_freight"
    },
    {
      "carrier": {
        "id": 3828,
        "name": "Maile Cargo SIA",
        "short_name": "Maile Cargo",
        "reg_no": "40203365428"
      },
      "id": 123,
      "name": "Express Service",
      "service_type": "express"
    }
  ]
}

Używanie ID usług

ID usług z tego endpointu mogą być używane z parametrem direct_booking_service_id podczas tworzenia rezerwacji, aby wybrać odpowiednią usługę i wysłać przesyłkę do systemu Maile Cargo.

Kompletne przykłady kodu

Poniżej znajdują się kompletne działające przykłady pokazujące pełny przepływ pracy: pobierz stawki, wybierz usługę, zarezerwuj przesyłkę i wyodrębnij informacje śledzące.

# Define the service ID you want to use
CARRIER_SERVICE_ID=85

# Step 1: Get freight prices for Maile Cargo
curl -X POST https://www.cargoson.com/api/v1/freightPrices/list \
  -H "Content-Type: application/json" \
  -H "Accept: application/vnd.api.v1" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "collection_date": "2026-02-15",
    "collection_country": "DE",
    "collection_postcode": "10115",
    "delivery_country": "SE",
    "delivery_postcode": "11122",
    "rows_attributes": [{
      "quantity": 1,
      "package_type": "EUR",
      "weight": 100.0,
      "description": "Goods on EUR pallet"
    }]
  }'

# Extract the price for your service from response:
# transport_price=$(echo "$response" | jq '.object.prices[] | select(.service_id==85) | .price')

# Step 2: Book shipment using the service_id
curl -X POST https://www.cargoson.com/api/v1/queries \
  -H "Content-Type: application/json" \
  -H "Accept: application/vnd.api.v1" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "collection_date": "2026-02-15",
    "collection_country": "DE",
    "collection_postcode": "10115",
    "collection_address_row_1": "Hauptstraße 123",
    "collection_city": "Berlin",
    "collection_company_name": "Demo GmbH",
    "collection_contact_name": "Max Mustermann",
    "collection_contact_phone": "+4930123456",
    "delivery_country": "SE",
    "delivery_postcode": "11122",
    "delivery_address_row_1": "Drottninggatan 45",
    "delivery_city": "Stockholm",
    "delivery_company_name": "Demo Sweden AB",
    "delivery_contact_name": "Erik Andersson",
    "delivery_contact_phone": "+46812345678",
    "rows_attributes": [{
      "quantity": 1,
      "package_type": "EUR",
      "weight": 100.0,
      "description": "Goods on EUR pallet"
    }],
    "options": {
      "direct_booking_service_id": '$CARRIER_SERVICE_ID'
    }
  }'

# Response contains:
# - reference: "CG12345"
# - tracking_url: "https://tracking.carrier.com/..."
# - label_url: "https://www.cargoson.com/labels/abc123.pdf"
const axios = require('axios');

const API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://www.cargoson.com/api/v1';
const CARRIER_SERVICE_ID = 85;

async function bookToMaileCargo() {
  try {
    // Step 1: Get freight prices
    const pricesResponse = await axios.post(`${BASE_URL}/freightPrices/list`, {
      collection_date: '2026-02-15',
      collection_country: 'DE',
      collection_postcode: '10115',
      delivery_country: 'SE',
      delivery_postcode: '11122',
      rows_attributes: [{
        quantity: 1,
        package_type: 'EUR',
        weight: 100.0,
        description: 'Goods on EUR pallet'
      }]
    }, {
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/vnd.api.v1',
        'Authorization': `Bearer ${API_KEY}`
      }
    });

    // Step 2: Find service by ID and extract price
    const prices = pricesResponse.data.object.prices;
    const selectedService = prices.find(p => p.service_id === CARRIER_SERVICE_ID);

    if (!selectedService) {
      throw new Error(`Service ID ${CARRIER_SERVICE_ID} not found in prices`);
    }

    const transportPrice = selectedService.price;
    console.log(`Selected service price: €${transportPrice}`);

    // Step 3: Book shipment using the service_id
    const bookingResponse = await axios.post(`${BASE_URL}/queries`, {
      collection_date: '2026-02-15',
      collection_country: 'DE',
      collection_postcode: '10115',
      collection_address_row_1: 'Hauptstraße 123',
      collection_city: 'Berlin',
      collection_company_name: 'Demo GmbH',
      collection_contact_name: 'Max Mustermann',
      collection_contact_phone: '+4930123456',
      delivery_country: 'SE',
      delivery_postcode: '11122',
      delivery_address_row_1: 'Drottninggatan 45',
      delivery_city: 'Stockholm',
      delivery_company_name: 'Demo Sweden AB',
      delivery_contact_name: 'Erik Andersson',
      delivery_contact_phone: '+46812345678',
      rows_attributes: [{
        quantity: 1,
        package_type: 'EUR',
        weight: 100.0,
        description: 'Goods on EUR pallet'
      }],
      options: {
        direct_booking_service_id: CARRIER_SERVICE_ID
      }
    }, {
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/vnd.api.v1',
        'Authorization': `Bearer ${API_KEY}`
      }
    });

    // Extract important fields
    const reference = bookingResponse.data.reference;
    const trackingUrl = bookingResponse.data.tracking_url;
    const labelUrl = bookingResponse.data.label_url;

    console.log('Shipment booked successfully!');
    console.log(`Reference: ${reference}`);
    console.log(`Tracking: ${trackingUrl}`);
    console.log(`Label: ${labelUrl}`);

    return { reference, trackingUrl, labelUrl };
  } catch (error) {
    console.error('Error:', error.response?.data || error.message);
  }
}

// Usage
bookToMaileCargo();
import requests

API_KEY = 'YOUR_API_KEY'
BASE_URL = 'https://www.cargoson.com/api/v1'
CARRIER_SERVICE_ID = 85

def book_to_maile_cargo():
    headers = {
        'Content-Type': 'application/json',
        'Accept': 'application/vnd.api.v1',
        'Authorization': f'Bearer {API_KEY}'
    }

    # Step 1: Get freight prices
    prices_data = {
        'collection_date': '2026-02-15',
        'collection_country': 'DE',
        'collection_postcode': '10115',
        'delivery_country': 'SE',
        'delivery_postcode': '11122',
        'rows_attributes': [{
            'quantity': 1,
            'package_type': 'EUR',
            'weight': 100.0,
            'description': 'Goods on EUR pallet'
        }]
    }

    prices_response = requests.post(
        f'{BASE_URL}/freightPrices/list',
        headers=headers,
        json=prices_data
    )
    prices_response.raise_for_status()

    # Step 2: Find service by ID and extract price
    prices = prices_response.json()['object']['prices']
    selected_service = next(
        (p for p in prices if p['service_id'] == CARRIER_SERVICE_ID),
        None
    )

    if not selected_service:
        raise ValueError(f'Service ID {CARRIER_SERVICE_ID} not found in prices')

    transport_price = selected_service['price']
    print(f'Selected service price: €{transport_price}')

    # Step 3: Book shipment using the service_id
    booking_data = {
        'collection_date': '2026-02-15',
        'collection_country': 'DE',
        'collection_postcode': '10115',
        'collection_address_row_1': 'Hauptstraße 123',
        'collection_city': 'Berlin',
        'collection_company_name': 'Demo GmbH',
        'collection_contact_name': 'Max Mustermann',
        'collection_contact_phone': '+4930123456',
        'delivery_country': 'SE',
        'delivery_postcode': '11122',
        'delivery_address_row_1': 'Drottninggatan 45',
        'delivery_city': 'Stockholm',
        'delivery_company_name': 'Demo Sweden AB',
        'delivery_contact_name': 'Erik Andersson',
        'delivery_contact_phone': '+46812345678',
        'rows_attributes': [{
            'quantity': 1,
            'package_type': 'EUR',
            'weight': 100.0,
            'description': 'Goods on EUR pallet'
        }],
        'options': {
            'direct_booking_service_id': CARRIER_SERVICE_ID
        }
    }

    booking_response = requests.post(
        f'{BASE_URL}/queries',
        headers=headers,
        json=booking_data
    )
    booking_response.raise_for_status()
    booking = booking_response.json()

    # Extract important fields
    reference = booking['reference']
    tracking_url = booking['tracking_url']
    label_url = booking['label_url']

    print('Shipment booked successfully!')
    print(f'Reference: {reference}')
    print(f'Tracking: {tracking_url}')
    print(f'Label: {label_url}')

    return {
        'reference': reference,
        'tracking_url': tracking_url,
        'label_url': label_url
    }

# Usage
if __name__ == '__main__':
    book_to_maile_cargo()
<?php
$apiKey = 'YOUR_API_KEY';
$baseUrl = 'https://www.cargoson.com/api/v1';

define('CARRIER_SERVICE_ID', 85);

function bookToMaileCargo($apiKey, $baseUrl) {
    $headers = [
        'Content-Type: application/json',
        'Accept: application/vnd.api.v1',
        'Authorization: Bearer ' . $apiKey
    ];

    // Step 1: Get freight prices
    $pricesData = [
        'collection_date' => '2026-02-15',
        'collection_country' => 'DE',
        'collection_postcode' => '10115',
        'delivery_country' => 'SE',
        'delivery_postcode' => '11122',
        'rows_attributes' => [[
            'quantity' => 1,
            'package_type' => 'EUR',
            'weight' => 100.0,
            'description' => 'Goods on EUR pallet'
        ]]
    ];

    $ch = curl_init($baseUrl . '/freightPrices/list');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($pricesData));
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $pricesResponse = curl_exec($ch);
    curl_close($ch);
    $prices = json_decode($pricesResponse, true)['object']['prices'];

    // Step 2: Find service by ID and extract price
    $selectedService = null;
    foreach ($prices as $price) {
        if ($price['service_id'] === CARRIER_SERVICE_ID) {
            $selectedService = $price;
            break;
        }
    }

    if (!$selectedService) {
        throw new Exception('Service ID ' . CARRIER_SERVICE_ID . ' not found in prices');
    }

    $transportPrice = $selectedService['price'];
    echo "Selected service price: €$transportPrice
";

    // Step 3: Book shipment using the service_id
    $bookingData = [
        'collection_date' => '2026-02-15',
        'collection_country' => 'DE',
        'collection_postcode' => '10115',
        'collection_address_row_1' => 'Hauptstraße 123',
        'collection_city' => 'Berlin',
        'collection_company_name' => 'Demo GmbH',
        'collection_contact_name' => 'Max Mustermann',
        'collection_contact_phone' => '+4930123456',
        'delivery_country' => 'SE',
        'delivery_postcode' => '11122',
        'delivery_address_row_1' => 'Drottninggatan 45',
        'delivery_city' => 'Stockholm',
        'delivery_company_name' => 'Demo Sweden AB',
        'delivery_contact_name' => 'Erik Andersson',
        'delivery_contact_phone' => '+46812345678',
        'rows_attributes' => [[
            'quantity' => 1,
            'package_type' => 'EUR',
            'weight' => 100.0,
            'description' => 'Goods on EUR pallet'
        ]],
        'options' => [
            'direct_booking_service_id' => CARRIER_SERVICE_ID
        ]
    ];

    $ch = curl_init($baseUrl . '/queries');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($bookingData));
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $bookingResponse = curl_exec($ch);
    curl_close($ch);
    $booking = json_decode($bookingResponse, true);

    // Extract important fields
    $reference = $booking['reference'];
    $trackingUrl = $booking['tracking_url'];
    $labelUrl = $booking['label_url'];

    echo "Shipment booked successfully!
";
    echo "Reference: $reference
";
    echo "Tracking: $trackingUrl
";
    echo "Label: $labelUrl
";

    return [
        'reference' => $reference,
        'tracking_url' => $trackingUrl,
        'label_url' => $labelUrl
    ];
}

// Usage
bookToMaileCargo($apiKey, $baseUrl);
?>
require 'net/http'
require 'json'

API_KEY = 'YOUR_API_KEY'
BASE_URL = 'https://www.cargoson.com/api/v1'
CARRIER_SERVICE_ID = 85

def book_to_maile_cargo
  headers = {
    'Content-Type' => 'application/json',
    'Accept' => 'application/vnd.api.v1',
    'Authorization' => "Bearer #{API_KEY}"
  }

  # Step 1: Get freight prices
  prices_uri = URI("#{BASE_URL}/freightPrices/list")
  prices_data = {
    collection_date: '2026-02-15',
    collection_country: 'DE',
    collection_postcode: '10115',
    delivery_country: 'SE',
    delivery_postcode: '11122',
    rows_attributes: [{
      quantity: 1,
      package_type: 'EUR',
      weight: 100.0,
      description: 'Goods on EUR pallet'
    }]
  }

  http = Net::HTTP.new(prices_uri.host, prices_uri.port)
  http.use_ssl = true

  prices_request = Net::HTTP::Post.new(prices_uri)
  headers.each { |k, v| prices_request[k] = v }
  prices_request.body = prices_data.to_json

  prices_response = http.request(prices_request)
  prices = JSON.parse(prices_response.body)['object']['prices']

  # Step 2: Find service by ID and extract price
  selected_service = prices.find { |p| p['service_id'] == CARRIER_SERVICE_ID }

  raise "Service ID #{CARRIER_SERVICE_ID} not found in prices" unless selected_service

  transport_price = selected_service['price']
  puts "Selected service price: €#{transport_price}"

  # Step 3: Book shipment using the service_id
  booking_uri = URI("#{BASE_URL}/queries")
  booking_data = {
    collection_date: '2026-02-15',
    collection_country: 'DE',
    collection_postcode: '10115',
    collection_address_row_1: 'Hauptstraße 123',
    collection_city: 'Berlin',
    collection_company_name: 'Demo GmbH',
    collection_contact_name: 'Max Mustermann',
    collection_contact_phone: '+4930123456',
    delivery_country: 'SE',
    delivery_postcode: '11122',
    delivery_address_row_1: 'Drottninggatan 45',
    delivery_city: 'Stockholm',
    delivery_company_name: 'Demo Sweden AB',
    delivery_contact_name: 'Erik Andersson',
    delivery_contact_phone: '+46812345678',
    rows_attributes: [{
      quantity: 1,
      package_type: 'EUR',
      weight: 100.0,
      description: 'Goods on EUR pallet'
    }],
    options: {
      direct_booking_service_id: CARRIER_SERVICE_ID
    }
  }

  booking_request = Net::HTTP::Post.new(booking_uri)
  headers.each { |k, v| booking_request[k] = v }
  booking_request.body = booking_data.to_json

  booking_response = http.request(booking_request)
  booking = JSON.parse(booking_response.body)

  # Extract important fields
  reference = booking['reference']
  tracking_url = booking['tracking_url']
  label_url = booking['label_url']

  puts 'Shipment booked successfully!'
  puts "Reference: #{reference}"
  puts "Tracking: #{tracking_url}"
  puts "Label: #{label_url}"

  {
    reference: reference,
    tracking_url: tracking_url,
    label_url: label_url
  }
end

# Usage
book_to_maile_cargo

Dlaczego warto używać API Cargoson do integracji Maile Cargo

Bezpośrednia integracja z natywnym API Maile Cargo oznacza zmaganie się z dokumentacją specyficzną dla przewoźnika, obsługę unikalnych formatów danych i utrzymywanie oddzielnego kodu dla każdego dostawcy. Cargoson oferuje jedno ujednolicone API RESTful, które obsługuje Maile Cargo i ponad 2000 przewoźników na rynkach europejskich i północnoamerykańskich, z nowymi integracjami dodawanymi co tydzień. Skracamy czas rozwoju z miesięcy do dni, automatycznie obsługujemy aktualizacje przewoźników i zarządzamy wyjątkami regionalnymi. Z Cargoson skupiasz się na rozwijaniu swojego biznesu zamiast zarządzania technicznymi złożonościami przewoźników.

Korzyści z integracji Maile Cargo przez API Cargoson

Jedno API dla wszystkich przewoźników

Zastąp dziesiątki oddzielnych integracji przewoźników jednym połączeniem z Maile Cargo i ponad 2000 innymi dostawcami przez API Cargoson. Koniec z utrzymywaniem wielu systemów uwierzytelniania, obsługą różnych formatów danych lub aktualizowaniem kodu, gdy przewoźnicy zmieniają swoje endpointy.

Przejrzysta dokumentacja i wsparcie

Dostęp do prostej dokumentacji API z działającymi przykładami kodu, szczegółowymi opisami parametrów i jasno zdefiniowanymi endpointami. Nasz zespół wsparcia zna branżę logistyczną i może pomóc szybko rozwiązać wyzwania integracyjne.

Przykłady kodu w wielu językach

Zacznij natychmiast z gotowymi do użycia przykładami kodu w cURL, JavaScript, Python, PHP i Ruby. Kopiuj, wklejaj i dostosowuj je do swojego stosu, nie musisz od zera rozwiązywać uwierzytelniania, formatowania żądań ani obsługi błędów.

Prawdziwe wsparcie od ekspertów logistycznych

Uzyskaj pomoc od osób, które rozumieją wysyłkę, a nie tylko API. Niezależnie od tego, czy rozwiązujesz problem z integracją, czy potrzebujesz porady dotyczącej najlepszego sposobu obsługi przesyłek międzynarodowych, nasz zespół jest tutaj, aby pomóc.

Najbardziej zaawansowany na świecie silnik wyceny frachtu

API wyceny frachtu Cargoson wykracza daleko poza proste wyszukiwanie stawek. Nasz silnik może czytać, analizować i digitalizować dowolny cennik przewoźnika niezależnie od formatu lub struktury, co czyni go najpotężniejszym rozwiązaniem do zarządzania stawkami frachtowymi w branży logistycznej.

Uniwersalne wsparcie formatów

Nasz silnik wyceny frachtu obsługuje dowolny format: strukturalne pliki Excel, złożone pliki PDF, wolny tekst, a nawet odręcznie pisane cenniki. Prześlij swoje umowy przewoźników w dowolnym formacie, a nasz silnik stawek frachtowych automatycznie przeanalizuje zasady cenowe, dopłaty i warunki.

Bezpośrednia integracja API przewoźnika

Dla przewoźników z nowoczesnymi systemami (zazwyczaj globalni przewoźnicy paczek i firmy transportowe zorientowane na technologię) pobieramy stawki bezpośrednio z ich API w czasie rzeczywistym. Gwarantuje to, że zawsze otrzymujesz najbardziej aktualne ceny bez ręcznych aktualizacji.

Publiczne ceny online

Nie masz jeszcze umowy z przewoźnikiem? Nie ma problemu. Cargoson może pobierać publiczne ceny online od przewoźników, umożliwiając porównanie opcji jeszcze przed nawiązaniem formalnych umów.

Zapytania o stawki spot

W przypadku złożonych przesyłek lub szczególnych przypadków poproś o stawki spot, gdzie przewoźnicy przeglądają Twoje konkretne wymagania i przedstawiają niestandardową wycenę. Wszystko zarządzane przez to samo ujednolicone API.

API wysyłki Maile Cargo: Uproszczona automatyzacja logistyki

Zautomatyzuj proces realizacji zamówień, integrując API wysyłki Cargoson z Maile Cargo i ponad 2000 przewoźnikami na całym świecie. Twórz etykiety wysyłkowe, rezerwuj odbiory i zarządzaj wszystkimi swoimi przewoźnikami z jednej platformy, zachowując jednocześnie wynegocjowane stawki z każdym dostawcą.

Automatyczne generowanie etykiet

Generuj zatwierdzone przez przewoźnika etykiety wysyłkowe w jednym żądaniu API. Wsparcie dla wielu formatów etykiet (A4, drukarka termiczna) i automatyczna dokumentacja celna dla przesyłek międzynarodowych oznacza mniej pracy ręcznej i mniej błędów wysyłkowych.

Porównanie stawek w czasie rzeczywistym

Porównaj stawki na żywo w Maile Cargo i innych aktywowanych przewoźnikach, aby wybrać najlepszą opcję na podstawie kosztu, szybkości i poziomu usług.

Zachowaj swoje wynegocjowane stawki

Połącz swoje istniejące konto Maile Cargo, aby zachować wynegocjowane stawki wysyłkowe. Cargoson po prostu zapewnia integrację techniczną: zachowujesz bezpośrednie relacje z przewoźnikami i niestandardowe umowy cenowe.

Bezpieczeństwo klasy korporacyjnej dla integracji API Maile Cargo

Infrastruktura API Cargoson spełnia europejskie standardy zgodności, które zapewniają bezpieczną, gotową do audytu integrację Maile Cargo dla Twojej firmy:

  • Zgodna z RODO obsługa i przechowywanie danych w całej Europie
  • Certyfikowane zarządzanie bezpieczeństwem informacji ISO 27001
  • Szyfrowanie end-to-end dla wszystkich komunikacji API

Gotowy do zintegrowania wysyłki Maile Cargo ze swoją platformą?

Zarezerwuj demo, aby zobaczyć, jak ujednolicone API Cargoson może uprościć Twoje operacje logistyczne

Zarezerwuj demo

Najczęściej zadawane pytania

Cargoson to TMS (System Zarządzania Transportem) dla europejskich i północnoamerykańskich producentów. Naszą główną wizją jest prostota: integracja wszystkich przewoźników i trybów frachtowych (drogowy, paczki, lotniczy, morski, kolejowy) w jednym oknie i jednym API. Niezależnie od tego, czy wysyłasz palety po Europie, czy kontenery za ocean, zarządzaj wszystkim z jednej platformy.

Rozpoczęcie jest proste. Najpierw zarejestruj konto Cargoson i uzyskaj klucz API. Następnie połącz swoje konto Maile Cargo w panelu Cargoson. Po zakończeniu możesz zacząć wysyłać żądania API, korzystając z naszej dokumentacji i przykładów kodu. Cała konfiguracja zazwyczaj zajmuje mniej niż godzinę.

Tak, będziesz potrzebować własnego konta Maile Cargo, aby korzystać z usług Maile Cargo przez Cargoson. Gwarantuje to zachowanie wynegocjowanych stawek i utrzymanie bezpośredniej relacji z Maile Cargo. Cargoson po prostu zapewnia warstwę integracji technicznej, która ułatwia pracę z Maile Cargo i innymi przewoźnikami przez jedno ujednolicone API.

Cargoson działa w oparciu o przejrzysty model miesięcznej subskrypcji bez opłat za przesyłkę ani prowizji, nigdy. Twój plan obejmuje dostęp do API, dokumentację, wsparcie i automatyczne aktualizacje, gdy przewoźnicy zmieniają swoje systemy. Płacisz Maile Cargo bezpośrednio za wysyłkę według wynegocjowanych stawek. Bez ukrytych kosztów, bez niespodzianek.

Absolutnie! To główna korzyść z używania Cargoson. Po zintegrowaniu naszego API możesz pracować z Maile Cargo i ponad 2000 innymi przewoźnikami, używając tych samych endpointów, uwierzytelniania i formatów danych. Dodawaj nowych przewoźników bez pisania nowego kodu integracyjnego, po prostu aktywuj ich w swoim panelu Cargoson.

Tak! Integrujemy każdego przewoźnika, którego potrzebujesz, bez dodatkowych kosztów. Jest to zawarte w Twojej subskrypcji Cargoson. Po prostu przedstaw nam kontakty swoich przewoźników, a my zajmiemy się integracją techniczną. Nowe integracje są dodawane codziennie na podstawie próśb klientów.

Tak, możemy skonfigurować webhooks, aby powiadamiać Twój system o zdarzeniach i wyzwalaczach w Cargoson, takich jak aktualizacje statusu przesyłki, potwierdzenia rezerwacji lub zmiany w Twoich przesyłkach. Skontaktuj się z naszym zespołem wsparcia lub zarezerwuj demo, aby omówić swoje wymagania dotyczące webhooków i konfigurację.

Cargoson może być przesadą, jeśli jesteś małą firmą wysyłającą tylko kilka razy w miesiącu z jednym przewoźnikiem. Prawdopodobnie możesz dobrze zarządzać tymi przesyłkami bez TMS. Nie jesteśmy również odpowiednim rozwiązaniem, jeśli jesteś przewoźnikiem lub spedytorem. Cargoson jest zbudowany specjalnie dla właścicieli ładunków (BCO), takich jak producenci i dystrybutorzy, którzy są właścicielami wysyłanych towarów. Jeśli szukasz TMS do zarządzania swoim biznesem spedycyjnym lub operacjami przewoźnika, nie jesteśmy zaprojektowani do tego przypadku użycia.

Nasze API zwraca jasne komunikaty o błędach z konkretnymi kodami błędów i opisami. Typowe problemy są udokumentowane z rozwiązaniami w naszej dokumentacji dla programistów. Jeśli utkniesz, nasz zespół wsparcia może pomóc w rozwiązywaniu problemów z integracją.

Wdrażamy rozsądne limity żądań, aby zapewnić stabilność systemu dla wszystkich klientów. Istnieją zarówno długookresowe limity żądań, jak i limity burst, z wartościami, które powinny być więcej niż wystarczające dla większości firm. Jeśli potrzebujesz wyższych limitów dla operacji na skalę korporacyjną, skontaktuj się z nami, aby omówić niestandardowe limity dla Twojego konta.

Zacznij używać API Maile Cargo

Uzyskaj dane uwierzytelniające API, aby rozpocząć integrację

Uzyskaj klucz API