MapEx Cargo Customer API V1

MapEx Cargo API V1 Dokümantasyonu

Kendi ERP, e-ticaret veya WMS sisteminizden MapEx üzerinde gönderi oluşturabilir, takip bilgisini okuyabilir ve hazır etiketleri alabilirsiniz.

API istekleri HTTPS, Client ID, API Key, IP whitelist ve rate limit ile korunur. Panel giriş şifrenizi entegrasyon sistemleriyle paylaşmayın.

Base URL

https://api.mapcargo.com.tr
V1Gönderi ve takip servisleri
JSONStandart veri formatı
PDFEtiket indirme

Hızlı Başlangıç

Müşteri panelinizdeki API Entegrasyonu sayfasından bir API kaydı oluşturun. Size gösterilen API Key yalnızca bir kez görünür; bu değeri entegrasyon sisteminizde güvenli şekilde saklayın ve sunucu IP adresinizi whitelist alanına ekleyin.

curl -X GET "https://api.mapcargo.com.tr/v1/ping"

Kimlik Doğrulama

HeaderAçıklama
X-Mapex-Client-IdAPI Entegrasyonu sayfanızda oluşturulan Client ID.
X-Mapex-Api-KeyOluşturma veya yenileme anında bir kez gösterilen gizli API anahtarı.
Idempotency-KeySadece POST /v1/shipments için zorunlu. Aynı kargo bilgilerinin tekrar gönderilmesi halinde çift gönderi oluşmasını engeller.

Endpointler

MethodPathAçıklama
GET/v1/pingServis sağlık kontrolü.
POST/v1/shipmentsHesabınızda yeni gönderi oluşturur. Taşıyıcı seçimi ülke, paket ölçüleri ve hesabınızın fiyat seviyesine göre sistem tarafından otomatik yapılır.
GET/v1/shipmentsHesabınıza ait gönderileri listeler.
GET/v1/shipments/{shipment_no}Gönderi detayını döndürür.
GET/v1/shipments/{shipment_no}/trackingTakip olaylarını ve varsa paket görsellerini döndürür. Takip metinlerinde operasyon markası yerine taşıyıcı ifadesi kullanılır.
GET/v1/shipments/{shipment_no}/images/{image_id}Paket görselini döndürür. Görsel URLleri de aynı API headerları ile çağrılmalıdır.
GET/v1/shipments/{shipment_no}/labelVarsa taşıyıcı etiketi, yoksa varsayılan PDF etiketi döndürür. MapEx fallback etikette logo, müşteri hesabındaki QR Etikette Logo ayarına göre gösterilir.
DELETE/v1/shipments/{shipment_no}Sadece created durumundaki gönderiyi iptal eder.

Gönderi Oluşturma

Taşıyıcı kodu göndermeniz gerekmez. Sistem varış ülkesi, paket ölçüleri, toplam desi ve hesabınızın fiyat seviyesine göre uygun taşıyıcıyı otomatik seçer. Gönderi sisteme kaydedilir; AWB ve etiket işlemleri operasyon akışında ilerler.

Örnek Payload

{
    "external_reference": "CARGO-10001",
    "origin_country": "TR",
    "destination_country": "AE",
    "shipment_type": "SALE",
    "valuation_currency": "USD",
    "sender": {
        "entity_type": "COMPANY",
        "company_name": "Sender Company",
        "contact_name": "Sender Name",
        "phone_country_code": "+90",
        "phone": "5551112233",
        "address_line1": "Istanbul warehouse",
        "country_code": "TR",
        "city": "Istanbul",
        "postal_code": "34000"
    },
    "recipient": {
        "entity_type": "PERSON",
        "full_name": "Receiver Name",
        "phone_country_code": "+971",
        "phone": "501112233",
        "email": "receiver@example.com",
        "address_line1": "Business Bay",
        "country_code": "AE",
        "city": "Dubai",
        "postal_code": "00000"
    },
    "packages": [
        {
            "quantity": 1,
            "length_cm": 30,
            "width_cm": 20,
            "height_cm": 10,
            "weight_kg": 2.5
        }
    ],
    "products": [
        {
            "product_name_en": "Cotton T-Shirt",
            "product_name_tr": "Pamuk Tişört",
            "hs_code": "610910",
            "origin_country": "TR",
            "quantity": 2,
            "unit_price": 12.5,
            "currency": "USD"
        }
    ],
    "note": "Test gönderisi"
}

Gönderilecek Alanlar

Alan adı / tipiAçıklamaZorunluKısıtlar
external_reference (string)Entegrasyon sisteminizdeki benzersiz referans. Aynı gönderiyi kendi sisteminizle eşleştirmek için kullanılır.EvetEn fazla 120 karakter. Aynı müşteri için benzersiz olmalıdır.
origin_country (string)Çıkış ülkesi ISO-2 kodu.HayırV1 için varsayılan TR kabul edilir.
destination_country (string)Varış ülkesi ISO-2 kodu.Evet2 karakter. Örn: AE, CA, US.
shipment_type (string)Gönderi türü.HayırVarsayılan SALE. Kabul edilen değerler: SALE, SAMPLE, GIFT, MICRO_EXPORT.
valuation_currency (string)Ürün değerlerinin para birimi.HayırVarsayılan USD. Kullanılabilecek kodlar: USD - Amerikan Doları, EUR - Euro, GBP - İngiliz Sterlini, CAD - Kanada Doları, SAR - Suudi Arabistan Riyali.
note (string)Operasyon notu.HayırEn fazla 500 karakter önerilir.
sender (object)Gönderici bilgileri.EvetAşağıdaki sender.* alanlarını içerir.
sender.entity_type (string)Gönderici tipi.EvetZorunlu. PERSON veya COMPANY.
sender.full_name (string)Kişi gönderici adı.Duruma bağlısender.entity_type PERSON ise zorunlu. En fazla 160 karakter.
sender.company_name (string)Firma gönderici adı.Duruma bağlısender.entity_type COMPANY ise zorunlu. En fazla 180 karakter.
sender.contact_name (string)Firma yetkilisi veya iletişim kişisi.HayırEn fazla 160 karakter.
sender.phone_country_code (string)Telefon ülke kodu.HayırÖrn: +90. En fazla 10 karakter.
sender.phone (string)Telefon numarası.EvetEn fazla 30 karakter.
sender.email (string)Gönderici e-posta adresi.HayırGeçerli e-posta formatı önerilir.
sender.address_line1 (string)Gönderici adres satırı 1.EvetEn fazla 190 karakter.
sender.address_line2/3 (string)Ek adres satırları.HayırHer biri en fazla 190 karakter.
sender.country_code (string)Gönderici ülke kodu.EvetV1 için TR olmalıdır.
sender.city (string)Gönderici şehir.EvetEn fazla 120 karakter.
sender.postal_code (string)Gönderici posta kodu.HayırEn fazla 20 karakter.
recipient (object)Alıcı bilgileri.EvetAşağıdaki recipient.* alanlarını içerir.
recipient.entity_type (string)Alıcı tipi.EvetZorunlu. PERSON veya COMPANY.
recipient.full_name (string)Kişi alıcı adı.Duruma bağlırecipient.entity_type PERSON ise zorunlu. En fazla 160 karakter.
recipient.company_name (string)Firma alıcı adı.Duruma bağlırecipient.entity_type COMPANY ise zorunlu. En fazla 180 karakter.
recipient.contact_name (string)Firma yetkilisi veya iletişim kişisi.HayırEn fazla 160 karakter.
recipient.phone_country_code (string)Alıcı telefon ülke kodu.HayırÖrn: +971, +1.
recipient.phone (string)Alıcı telefon numarası.EvetEn fazla 30 karakter.
recipient.email (string)Alıcı e-posta adresi.HayırHer müşteride zorunlu değildir.
recipient.address_line1 (string)Alıcı adres satırı 1.EvetEn fazla 190 karakter.
recipient.address_line2/3 (string)Ek adres satırları.HayırHer biri en fazla 190 karakter.
recipient.country_code (string)Alıcı ülke kodu.Evetdestination_country ile aynı olmalıdır.
recipient.state_code/state_name (string)Eyalet veya bölge bilgisi.Duruma bağlıUS/CA gibi ülkelerde önerilir.
recipient.city (string)Alıcı şehir.EvetEn fazla 120 karakter.
recipient.postal_code (string)Alıcı posta kodu.HayırÜlkeye göre zorunlu olabilir.
packages (array)Paket/parça listesi.EvetEn az 1, en fazla 100 satır.
packages[].quantity (integer)Aynı ölçü ve ağırlıktaki parça adedi.HayırVarsayılan 1. En fazla 100.
packages[].length_cm / width_cm / height_cm (integer)Paket ölçüleri.EvetSantimetre cinsinden pozitif tam sayı.
packages[].weight_kg (decimal)Paket ağırlığı.EvetKg cinsinden pozitif değer. En fazla 3 ondalık.
products (array)Ürün/içerik listesi.EvetEn az 1 satır.
products[].product_name_en / product_name_tr (string)Ürün adı.Evetproduct_name_en zorunludur. product_name_tr gönderilmezse product_name_en kullanılır.
products[].hs_code (string)HS/GTIP kodu.Evet4-20 hane olmalıdır. 6-12 hane önerilir.
products[].origin_country (string)Ürün menşe ülkesi.HayırVarsayılan TR. ISO-2 kodu.
products[].quantity (integer)Ürün adedi.EvetPozitif tam sayı.
products[].unit_price (decimal)Birim ürün değeri.Evet0 kabul edilmez. Pozitif sayı olmalıdır; 0.01 kabul edilir.
products[].currency (string)Ürün para birimi.EvetZorunlu. Kullanılabilecek kodlar: USD - Amerikan Doları, EUR - Euro, GBP - İngiliz Sterlini, CAD - Kanada Doları, SAR - Suudi Arabistan Riyali.

Takip ve Paket Görselleri

/v1/shipments/{shipment_no}/tracking cevabında takip ekranı için güvenli özet bilgiler summary, takip hareketleri events, varsa paket görselleri package_images alanında döner. Paket görseli URLlerini indirirken aynı X-Mapex-Client-Id ve X-Mapex-Api-Key headerlarını göndermelisiniz.

{
    "ok": true,
    "shipment_no": "123456",
    "status": "in_transit",
    "tracking_number": "TRK123456789",
    "carrier_tracking_code": "TRK123456789",
    "summary": {
        "package_count": 2,
        "weight_kg": "47.00",
        "origin_country": "TR",
        "origin_country_name": "Turkey",
        "destination_country": "CA",
        "destination_country_name": "Canada",
        "recipient_name": "Ja*** AT*****"
    },
    "events": [
        {
            "event_time": "2026-07-06 14:20:00",
            "title": "Kayıt oluşturuldu",
            "title_tr": "Kayıt oluşturuldu",
            "title_en": "Shipment created",
            "subtitle": "Gönderi bilgileri taşıyıcıya API üzerinden iletildi.",
            "subtitle_tr": "Gönderi bilgileri taşıyıcıya API üzerinden iletildi.",
            "subtitle_en": "Shipment details were sent to the carrier through the API.",
            "location_text": "ISTANBUL TR",
            "location_country_code": "TR",
            "source": "SYSTEM",
            "carrier_tracking_no": "TRK123456789"
        }
    ],
    "package_images": [
        {
            "image_id": 127,
            "pack_no": 1,
            "image_type": "PACKAGE",
            "capture_method": "UPLOAD",
            "file_name": "123456-1-example.jpg",
            "file_ext": "jpg",
            "mime_type": "image/jpeg",
            "file_size_bytes": 424634,
            "image_width": 2200,
            "image_height": 1650,
            "is_primary": true,
            "url": "https://api.mapcargo.com.tr/v1/shipments/123456/images/127",
            "thumbnail_url": "https://api.mapcargo.com.tr/v1/shipments/123456/images/127?size=thumb",
            "created_at": "2026-07-06 14:25:00"
        }
    ],
    "request_id": "req_..."
}

Hata Formatı

{
  "ok": false,
  "error": {
    "code": "validation_failed",
    "message": "products.0.currency zorunludur ve şu kodlardan biri olmalıdır: USD, EUR, GBP, CAD, SAR.",
    "details": {
      "field": "products.0.currency",
      "message_tr": "products.0.currency zorunludur ve şu kodlardan biri olmalıdır: USD, EUR, GBP, CAD, SAR.",
      "message_en": "products.0.currency is required and must be one of these codes: USD, EUR, GBP, CAD, SAR.",
      "allowed_values": ["USD", "EUR", "GBP", "CAD", "SAR"],
      "allowed_currencies": {
        "USD": {"tr": "Amerikan Doları", "en": "US Dollar"},
        "EUR": {"tr": "Euro", "en": "Euro"},
        "GBP": {"tr": "İngiliz Sterlini", "en": "British Pound Sterling"},
        "CAD": {"tr": "Kanada Doları", "en": "Canadian Dollar"},
        "SAR": {"tr": "Suudi Arabistan Riyali", "en": "Saudi Riyal"}
      },
      "received": null
    }
  },
  "request_id": "req_..."
}
StatusAnlam
400Boş veya hatalı JSON.
401Eksik veya geçersiz API kimliği.
403IP whitelist veya pasif API erişimi hatası.
409Idempotency veya gönderi durumu çakışması.
422Payload doğrulama hatası.
429Rate limit aşıldı.

Kod Örnekleri

$payload = array (
  'external_reference' => 'CARGO-10001',
  'origin_country' => 'TR',
  'destination_country' => 'AE',
  'shipment_type' => 'SALE',
  'valuation_currency' => 'USD',
  'sender' => 
  array (
    'entity_type' => 'COMPANY',
    'company_name' => 'Sender Company',
    'contact_name' => 'Sender Name',
    'phone_country_code' => '+90',
    'phone' => '5551112233',
    'address_line1' => 'Istanbul warehouse',
    'country_code' => 'TR',
    'city' => 'Istanbul',
    'postal_code' => '34000',
  ),
  'recipient' => 
  array (
    'entity_type' => 'PERSON',
    'full_name' => 'Receiver Name',
    'phone_country_code' => '+971',
    'phone' => '501112233',
    'email' => 'receiver@example.com',
    'address_line1' => 'Business Bay',
    'country_code' => 'AE',
    'city' => 'Dubai',
    'postal_code' => '00000',
  ),
  'packages' => 
  array (
    0 => 
    array (
      'quantity' => 1,
      'length_cm' => 30,
      'width_cm' => 20,
      'height_cm' => 10,
      'weight_kg' => 2.5,
    ),
  ),
  'products' => 
  array (
    0 => 
    array (
      'product_name_en' => 'Cotton T-Shirt',
      'product_name_tr' => 'Pamuk Tişört',
      'hs_code' => '610910',
      'origin_country' => 'TR',
      'quantity' => 2,
      'unit_price' => 12.5,
      'currency' => 'USD',
    ),
  ),
  'note' => 'Test gönderisi',
);

$ch = curl_init("https://api.mapcargo.com.tr/v1/shipments");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
        "X-Mapex-Client-Id: mxcl_xxxxxxxxxxxxxxxx",
        "X-Mapex-Api-Key: mxsk_xxxxxxxxxxxxxxxx",
        "Idempotency-Key: cargo-10001",
    ],
    CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
]);

$response = curl_exec($ch);
$data = json_decode((string)$response, true);

OpenAPI

Makine tarafından okunabilir şema: https://api.mapcargo.com.tr/openapi.json