مرجع API
المرجع الكامل لنقاط نهاية منفذ، مولّد من مواصفة OpenAPI نفسها التي تستهلكها أدواتك.
جميع المسارات أدناه نسبية إلى /api/v1. كل النقاط تتطلب المصادقة بمفتاح Bearer — راجع صفحة المصادقة.
الناقلون وخدماتهم
GET/carriersقائمة الناقلين
يعيد جميع الناقلين المتاحين في منفذ مع مستويات الخدمة ونطاق التغطية لكل ناقل.
الاستجابات
carriersarray<Carrier>codestringname_arstringname_enstringintegration_typestringrest · rest_legacy · csv_batch
coverage_countriesarray<string>دول التغطية (ISO alpha-2)
service_levelsarray<object>codestringname_arstringname_enstringmodestringair · sea · land · express
transit_daysobjectminintegermaxinteger{
"carriers": [
{
"code": "SARIE",
"name_ar": "سريع إكسبريس",
"name_en": "Sarie Express",
"integration_type": "rest",
"coverage_countries": [
"SA",
"AE",
"KW",
"BH",
"QA",
"OM"
],
"service_levels": [
{
"code": "EXP_DOM",
"name_ar": "إكسبريس محلي",
"name_en": "Domestic Express",
"mode": "express",
"transit_days": {
"min": 1,
"max": 3
}
},
{
"code": "EXP_GCC",
"name_ar": "إكسبريس خليجي",
"name_en": "GCC Express",
"mode": "express",
"transit_days": {
"min": 2,
"max": 5
}
}
]
},
{
"code": "BARR",
"name_ar": "بر وبحر",
"name_en": "Barr wa Bahr",
"integration_type": "rest_legacy",
"coverage_countries": [
"IQ",
"JO",
"EG",
"MA",
"TR",
"IT",
"DE",
"GB",
"US",
"CN",
"IN"
],
"service_levels": [
{
"code": "SEA_STD",
"name_ar": "بحري عادي",
"name_en": "Sea Standard",
"mode": "sea",
"transit_days": {
"min": 20,
"max": 45
}
},
{
"code": "LAND_STD",
"name_ar": "بري عادي",
"name_en": "Land Standard",
"mode": "land",
"transit_days": {
"min": 7,
"max": 20
}
},
{
"code": "SEA_EXP",
"name_ar": "بحري سريع",
"name_en": "Sea Expedited",
"mode": "sea",
"transit_days": {
"min": 14,
"max": 30
}
}
]
},
{
"code": "MAKHZOON",
"name_ar": "مخزون بلس",
"name_en": "Makhzoon Plus",
"integration_type": "csv_batch",
"coverage_countries": [
"SA"
],
"service_levels": [
{
"code": "FULFIL_STD",
"name_ar": "تنفيذ محلي",
"name_en": "Standard Fulfilment",
"mode": "land",
"transit_days": {
"min": 1,
"max": 4
}
}
]
}
]
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s "https://manfath.example/api/v1/carriers" \
-H "Authorization: Bearer $MANFATH_API_KEY"التسعير وعروض الأسعار
POST/ratesطلب تسعيرات الشحن
يحسب تسعيرات الشحن من جميع الناقلين المؤهلين للمسار والطرود المحددة. كل تسعيرة صالحة لمدة 15 دقيقة من إصدارها. الوزن القابل للفوترة هو الأعلى بين الوزن الفعلي والوزن الحجمي.
جسم الطلبapplication/json
originAddressمطلوبعنوان. للوجهات داخل المملكة يلزم عند إنشاء الشحنة عنوان وطني مطابق: عنوان مختصر، أو رمز بريدي مع رقم إضافي.
namestringاسم جهة الاتصال أو المنشأة
line1stringسطر العنوان
citystringمطلوبregionstringالمنطقة
countrystringمطلوبرمز الدولة ISO 3166-1 alpha-2
postal_codestringالرمز البريدي (5 أرقام داخل المملكة)
additional_numberstringالرقم الإضافي للعنوان الوطني (4 أرقام)
short_addressstringالعنوان الوطني المختصر، مثل RRDA2929
phonestringرقم الجوال بصيغة 9665XXXXXXXX
destinationAddressمطلوبعنوان. للوجهات داخل المملكة يلزم عند إنشاء الشحنة عنوان وطني مطابق: عنوان مختصر، أو رمز بريدي مع رقم إضافي.
namestringاسم جهة الاتصال أو المنشأة
line1stringسطر العنوان
citystringمطلوبregionstringالمنطقة
countrystringمطلوبرمز الدولة ISO 3166-1 alpha-2
postal_codestringالرمز البريدي (5 أرقام داخل المملكة)
additional_numberstringالرقم الإضافي للعنوان الوطني (4 أرقام)
short_addressstringالعنوان الوطني المختصر، مثل RRDA2929
phonestringرقم الجوال بصيغة 9665XXXXXXXX
parcelsarray<Parcel>مطلوبالطرود؛ الوزن بالكيلوغرام والأبعاد بالسنتيمتر
weight_kgnumberمطلوبالوزن بالكيلوغرام
length_cmnumberمطلوبالطول بالسنتيمتر
width_cmnumberمطلوبالعرض بالسنتيمتر
height_cmnumberمطلوبالارتفاع بالسنتيمتر
declared_valuenumberالقيمة المصرّح بها للشحنة
declared_value_currencystringعملة القيمة المصرّح بها بصيغة ISO 4217، مثل SAR
incotermstringشرط التسليم التجاري
EXW · FOB · CIF · DAP · DDP
hs_codesarray<string>رموز النظام المنسق للبضاعة
cod_amountnumberمبلغ الدفع عند الاستلام بالريال
مثال
{
"origin": {
"country": "SA",
"city": "Riyadh",
"short_address": "RRDA2929"
},
"destination": {
"country": "AE",
"city": "Dubai",
"line1": "Al Wasl Road 214"
},
"parcels": [
{
"weight_kg": 2.5,
"length_cm": 30,
"width_cm": 20,
"height_cm": 15
}
],
"declared_value": 450,
"declared_value_currency": "SAR",
"incoterm": "DAP",
"hs_codes": [
"330499"
],
"cod_amount": 0
}الاستجابات
quotesarray<Quote>quote_idstringcarrierCarrierRefمرجع الناقل
codestringname_arstringname_enstringserviceServiceRefمرجع مستوى الخدمة
codestringname_arstringname_enstringmodestringوسيلة النقل
air · sea · land · express
transit_daysobjectminintegermaxintegerweightsobjectالأوزان: الفعلي والحجمي والقابل للفوترة
actual_kgnumbervolumetric_kgnumberchargeable_kgnumberالأعلى بين الفعلي والحجمي، مقربًا لأعلى إلى 0.5 كغ
volumetric_divisorintegerweight_break_appliedstringbreakdownarray<BreakdownItem>codestringرمز البند، مثل base أو weight_charge أو fuel_surcharge أو vat
label_enstringlabel_arstringamount_sarnumbertotal_sarnumbercurrencystringexpires_atstring (date-time)انتهاء صلاحية التسعيرة (15 دقيقة من الإصدار)
{
"quotes": [
{
"quote_id": "cmdg7f3k2a0001x8p9zr41mstq",
"carrier": {
"code": "SARIE",
"name_ar": "سريع إكسبريس",
"name_en": "Sarie Express"
},
"service": {
"code": "EXP_GCC",
"name_ar": "إكسبريس خليجي",
"name_en": "GCC Express",
"mode": "express"
},
"transit_days": {
"min": 2,
"max": 5
},
"weights": {
"actual_kg": 2.5,
"volumetric_kg": 1.8,
"chargeable_kg": 2.5,
"volumetric_divisor": 5000,
"weight_break_applied": "upto_5_kg"
},
"breakdown": [
{
"code": "base",
"label_en": "Base charge",
"label_ar": "الرسم الأساسي",
"amount_sar": 15
},
{
"code": "weight_charge",
"label_en": "Weight charge",
"label_ar": "رسم الوزن",
"amount_sar": 50
},
{
"code": "fuel_surcharge",
"label_en": "Fuel surcharge",
"label_ar": "رسم الوقود",
"amount_sar": 9.75
},
{
"code": "vat",
"label_en": "VAT 15%",
"label_ar": "ضريبة القيمة المضافة 15%",
"amount_sar": 11.21
}
],
"total_sar": 85.96,
"currency": "SAR",
"expires_at": "2026-07-26T10:15:00+03:00"
}
]
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_VALIDATION",
"message_en": "Request validation failed.",
"message_ar": "فشل التحقق من صحة الطلب."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s -X POST "https://manfath.example/api/v1/rates" \
-H "Authorization: Bearer $MANFATH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"origin": {
"country": "SA",
"city": "Riyadh",
"short_address": "RRDA2929"
},
"destination": {
"country": "AE",
"city": "Dubai",
"line1": "Al Wasl Road 214"
},
"parcels": [
{
"weight_kg": 2.5,
"length_cm": 30,
"width_cm": 20,
"height_cm": 15
}
],
"declared_value": 450,
"declared_value_currency": "SAR",
"incoterm": "DAP",
"hs_codes": [
"330499"
],
"cod_amount": 0
}'الشحنات والتتبع
GET/shipmentsقائمة الشحنات
يعيد شحنات فريقك مرتبة من الأحدث إلى الأقدم، مع إمكانية الترشيح حسب الحالة.
المعاملات
| الاسم | الموضع | النوع | الوصف |
|---|---|---|---|
status | query | string | ترشيح حسب الحالة |
limit | query | integer | عدد النتائج (الافتراضي 20، الأقصى 100) |
offset | query | integer | الإزاحة (الافتراضي 0) |
الاستجابات
shipmentsarray<Shipment>idstringtracking_numberstringmanfath_referencestringstatusstringCREATED · LABEL_GENERATED · PICKUP_SCHEDULED · PICKED_UP · AT_ORIGIN_HUB · DEPARTED_ORIGIN · IN_TRANSIT · ARRIVED_DESTINATION_COUNTRY · CUSTOMS_CLEARANCE · CUSTOMS_CLEARED · AT_DELIVERY_HUB · OUT_FOR_DELIVERY · DELIVERED · EXCEPTION_CUSTOMS_HOLD · EXCEPTION_ADDRESS_ISSUE · EXCEPTION_WEIGHT_MISMATCH · EXCEPTION_FAILED_DELIVERY_ATTEMPT · EXCEPTION_CARRIER_DELAY · RETURN_TO_ORIGIN · RETURNED · LOST · CANCELLED
status_arstringstatus_enstringcarrierCarrierRefمرجع الناقل
codestringname_arstringname_enstringserviceServiceRefمرجع مستوى الخدمة
codestringname_arstringname_enstringmodestringوسيلة النقل
air · sea · land · express
originAddressعنوان. للوجهات داخل المملكة يلزم عند إنشاء الشحنة عنوان وطني مطابق: عنوان مختصر، أو رمز بريدي مع رقم إضافي.
namestringاسم جهة الاتصال أو المنشأة
line1stringسطر العنوان
citystringمطلوبregionstringالمنطقة
countrystringمطلوبرمز الدولة ISO 3166-1 alpha-2
postal_codestringالرمز البريدي (5 أرقام داخل المملكة)
additional_numberstringالرقم الإضافي للعنوان الوطني (4 أرقام)
short_addressstringالعنوان الوطني المختصر، مثل RRDA2929
phonestringرقم الجوال بصيغة 9665XXXXXXXX
destinationAddressعنوان. للوجهات داخل المملكة يلزم عند إنشاء الشحنة عنوان وطني مطابق: عنوان مختصر، أو رمز بريدي مع رقم إضافي.
namestringاسم جهة الاتصال أو المنشأة
line1stringسطر العنوان
citystringمطلوبregionstringالمنطقة
countrystringمطلوبرمز الدولة ISO 3166-1 alpha-2
postal_codestringالرمز البريدي (5 أرقام داخل المملكة)
additional_numberstringالرقم الإضافي للعنوان الوطني (4 أرقام)
short_addressstringالعنوان الوطني المختصر، مثل RRDA2929
phonestringرقم الجوال بصيغة 9665XXXXXXXX
parcelsarray<Parcel>weight_kgnumberمطلوبالوزن بالكيلوغرام
length_cmnumberمطلوبالطول بالسنتيمتر
width_cmnumberمطلوبالعرض بالسنتيمتر
height_cmnumberمطلوبالارتفاع بالسنتيمتر
declared_value_sarnumberincotermstringhs_codesarray<string>cod_amount_sarnumberlabel_urlstringمسار بوليصة الشحن PDF
warningsarray<Warning>تنبيهات غير مانعة إن وجدت
codestringmessage_enstringmessage_arstringquoted_total_sarnumberestimated_delivery_atstring (date-time)created_atstring (date-time)totalintegerlimitintegeroffsetinteger{
"shipments": [
{
"id": "cmdg8s1t20003x8p9aqk2v7hu",
"tracking_number": "SRE0248817359",
"manfath_reference": "MNF-2026-K7Q2ZC",
"status": "CREATED",
"status_ar": "تم إنشاء الشحنة",
"status_en": "Shipment created",
"carrier": {
"code": "SARIE",
"name_ar": "سريع إكسبريس",
"name_en": "Sarie Express"
},
"service": {
"code": "EXP_DOM",
"name_ar": "إكسبريس محلي",
"name_en": "Domestic Express",
"mode": "express"
},
"origin": {
"name": "مستودع الرياض",
"line1": "طريق الملك فهد",
"country": "SA",
"city": "Riyadh",
"short_address": "RRDA2929",
"phone": "966512345678"
},
"destination": {
"name": "عبدالله القحطاني",
"line1": "حي الروضة",
"country": "SA",
"city": "Jeddah",
"short_address": "JHFB8823",
"phone": "966555112233"
},
"parcels": [
{
"weight_kg": 2.5,
"length_cm": 30,
"width_cm": 20,
"height_cm": 15
}
],
"declared_value_sar": 450,
"incoterm": "DAP",
"hs_codes": [
"330499"
],
"cod_amount_sar": 0,
"label_url": "/api/v1/labels/cmdg8s1t20003x8p9aqk2v7hu",
"warnings": [],
"quoted_total_sar": 63.25,
"estimated_delivery_at": "2026-07-28T17:00:00+03:00",
"created_at": "2026-07-26T09:12:00+03:00"
}
],
"total": 1,
"limit": 20,
"offset": 0
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s "https://manfath.example/api/v1/shipments" \
-H "Authorization: Bearer $MANFATH_API_KEY"POST/shipmentsإنشاء شحنة
ينشئ شحنة من تسعيرة سارية. يجب أن يكون عنوان الوجهة داخل المملكة مطابقًا لمعيار العنوان الوطني السعودي: عنوان مختصر، أو رمز بريدي مع رقم إضافي. عند نجاح الإنشاء تُصدر بوليصة الشحن ويبدأ التتبع فورًا.
جسم الطلبapplication/json
quote_idstringمطلوبمعرّف التسعيرة من POST /rates (صالحة 15 دقيقة)
originAddressمطلوبعنوان. للوجهات داخل المملكة يلزم عند إنشاء الشحنة عنوان وطني مطابق: عنوان مختصر، أو رمز بريدي مع رقم إضافي.
namestringاسم جهة الاتصال أو المنشأة
line1stringسطر العنوان
citystringمطلوبregionstringالمنطقة
countrystringمطلوبرمز الدولة ISO 3166-1 alpha-2
postal_codestringالرمز البريدي (5 أرقام داخل المملكة)
additional_numberstringالرقم الإضافي للعنوان الوطني (4 أرقام)
short_addressstringالعنوان الوطني المختصر، مثل RRDA2929
phonestringرقم الجوال بصيغة 9665XXXXXXXX
destinationAddressمطلوبعنوان. للوجهات داخل المملكة يلزم عند إنشاء الشحنة عنوان وطني مطابق: عنوان مختصر، أو رمز بريدي مع رقم إضافي.
namestringاسم جهة الاتصال أو المنشأة
line1stringسطر العنوان
citystringمطلوبregionstringالمنطقة
countrystringمطلوبرمز الدولة ISO 3166-1 alpha-2
postal_codestringالرمز البريدي (5 أرقام داخل المملكة)
additional_numberstringالرقم الإضافي للعنوان الوطني (4 أرقام)
short_addressstringالعنوان الوطني المختصر، مثل RRDA2929
phonestringرقم الجوال بصيغة 9665XXXXXXXX
parcelsarray<Parcel>مطلوبweight_kgnumberمطلوبالوزن بالكيلوغرام
length_cmnumberمطلوبالطول بالسنتيمتر
width_cmnumberمطلوبالعرض بالسنتيمتر
height_cmnumberمطلوبالارتفاع بالسنتيمتر
declared_valuenumberالقيمة المصرّح بها بالريال
incotermstringشرط التسليم التجاري
EXW · FOB · CIF · DAP · DDP
hs_codesarray<string>رموز النظام المنسق للبضاعة
cod_amountnumberمبلغ الدفع عند الاستلام بالريال
referencestringمرجعك الداخلي للطلب
مثال
{
"quote_id": "cmdg7f3k2a0001x8p9zr41mstq",
"origin": {
"name": "مستودع الرياض",
"line1": "طريق الملك فهد",
"country": "SA",
"city": "Riyadh",
"short_address": "RRDA2929",
"phone": "966512345678"
},
"destination": {
"name": "عبدالله القحطاني",
"line1": "حي الروضة",
"country": "SA",
"city": "Jeddah",
"short_address": "JHFB8823",
"phone": "966555112233"
},
"parcels": [
{
"weight_kg": 2.5,
"length_cm": 30,
"width_cm": 20,
"height_cm": 15
}
],
"declared_value": 450,
"incoterm": "DAP",
"hs_codes": [
"330499"
],
"cod_amount": 0,
"reference": "PO-10422"
}الاستجابات
Shipment
شحنة
idstringtracking_numberstringmanfath_referencestringstatusstringCREATED · LABEL_GENERATED · PICKUP_SCHEDULED · PICKED_UP · AT_ORIGIN_HUB · DEPARTED_ORIGIN · IN_TRANSIT · ARRIVED_DESTINATION_COUNTRY · CUSTOMS_CLEARANCE · CUSTOMS_CLEARED · AT_DELIVERY_HUB · OUT_FOR_DELIVERY · DELIVERED · EXCEPTION_CUSTOMS_HOLD · EXCEPTION_ADDRESS_ISSUE · EXCEPTION_WEIGHT_MISMATCH · EXCEPTION_FAILED_DELIVERY_ATTEMPT · EXCEPTION_CARRIER_DELAY · RETURN_TO_ORIGIN · RETURNED · LOST · CANCELLED
status_arstringstatus_enstringcarrierCarrierRefمرجع الناقل
codestringname_arstringname_enstringserviceServiceRefمرجع مستوى الخدمة
codestringname_arstringname_enstringmodestringوسيلة النقل
air · sea · land · express
originAddressعنوان. للوجهات داخل المملكة يلزم عند إنشاء الشحنة عنوان وطني مطابق: عنوان مختصر، أو رمز بريدي مع رقم إضافي.
namestringاسم جهة الاتصال أو المنشأة
line1stringسطر العنوان
citystringمطلوبregionstringالمنطقة
countrystringمطلوبرمز الدولة ISO 3166-1 alpha-2
postal_codestringالرمز البريدي (5 أرقام داخل المملكة)
additional_numberstringالرقم الإضافي للعنوان الوطني (4 أرقام)
short_addressstringالعنوان الوطني المختصر، مثل RRDA2929
phonestringرقم الجوال بصيغة 9665XXXXXXXX
destinationAddressعنوان. للوجهات داخل المملكة يلزم عند إنشاء الشحنة عنوان وطني مطابق: عنوان مختصر، أو رمز بريدي مع رقم إضافي.
namestringاسم جهة الاتصال أو المنشأة
line1stringسطر العنوان
citystringمطلوبregionstringالمنطقة
countrystringمطلوبرمز الدولة ISO 3166-1 alpha-2
postal_codestringالرمز البريدي (5 أرقام داخل المملكة)
additional_numberstringالرقم الإضافي للعنوان الوطني (4 أرقام)
short_addressstringالعنوان الوطني المختصر، مثل RRDA2929
phonestringرقم الجوال بصيغة 9665XXXXXXXX
parcelsarray<Parcel>weight_kgnumberمطلوبالوزن بالكيلوغرام
length_cmnumberمطلوبالطول بالسنتيمتر
width_cmnumberمطلوبالعرض بالسنتيمتر
height_cmnumberمطلوبالارتفاع بالسنتيمتر
declared_value_sarnumberincotermstringhs_codesarray<string>cod_amount_sarnumberlabel_urlstringمسار بوليصة الشحن PDF
warningsarray<Warning>تنبيهات غير مانعة إن وجدت
codestringmessage_enstringmessage_arstringquoted_total_sarnumberestimated_delivery_atstring (date-time)created_atstring (date-time){
"id": "cmdg8s1t20003x8p9aqk2v7hu",
"tracking_number": "SRE0248817359",
"manfath_reference": "MNF-2026-K7Q2ZC",
"status": "CREATED",
"status_ar": "تم إنشاء الشحنة",
"status_en": "Shipment created",
"carrier": {
"code": "SARIE",
"name_ar": "سريع إكسبريس",
"name_en": "Sarie Express"
},
"service": {
"code": "EXP_DOM",
"name_ar": "إكسبريس محلي",
"name_en": "Domestic Express",
"mode": "express"
},
"origin": {
"name": "مستودع الرياض",
"line1": "طريق الملك فهد",
"country": "SA",
"city": "Riyadh",
"short_address": "RRDA2929",
"phone": "966512345678"
},
"destination": {
"name": "عبدالله القحطاني",
"line1": "حي الروضة",
"country": "SA",
"city": "Jeddah",
"short_address": "JHFB8823",
"phone": "966555112233"
},
"parcels": [
{
"weight_kg": 2.5,
"length_cm": 30,
"width_cm": 20,
"height_cm": 15
}
],
"declared_value_sar": 450,
"incoterm": "DAP",
"hs_codes": [
"330499"
],
"cod_amount_sar": 0,
"label_url": "/api/v1/labels/cmdg8s1t20003x8p9aqk2v7hu",
"warnings": [],
"quoted_total_sar": 63.25,
"estimated_delivery_at": "2026-07-28T17:00:00+03:00",
"created_at": "2026-07-26T09:12:00+03:00"
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_QUOTE_EXPIRED",
"message_en": "This quote has expired. Quotes are valid for 15 minutes. Request a new rate.",
"message_ar": "انتهت صلاحية هذه التسعيرة. التسعيرات صالحة لمدة 15 دقيقة. اطلب تسعيرة جديدة."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
E_VALIDATION
{
"error": {
"code": "E_VALIDATION",
"message_en": "Request validation failed.",
"message_ar": "فشل التحقق من صحة الطلب.",
"details": {
"field": "parcels.0.weight_kg",
"reason": "must be a positive number"
}
}
}E_ADDRESS_NOT_NORMALISED
{
"error": {
"code": "E_ADDRESS_NOT_NORMALISED",
"message_en": "Destination address is not normalised to the Saudi National Address standard.",
"message_ar": "عنوان الوجهة غير مطابق لمعيار العنوان الوطني السعودي.",
"details": {
"missing": [
"postal_code",
"additional_number"
]
}
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s -X POST "https://manfath.example/api/v1/shipments" \
-H "Authorization: Bearer $MANFATH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"quote_id": "cmdg7f3k2a0001x8p9zr41mstq",
"origin": {
"name": "مستودع الرياض",
"line1": "طريق الملك فهد",
"country": "SA",
"city": "Riyadh",
"short_address": "RRDA2929",
"phone": "966512345678"
},
"destination": {
"name": "عبدالله القحطاني",
"line1": "حي الروضة",
"country": "SA",
"city": "Jeddah",
"short_address": "JHFB8823",
"phone": "966555112233"
},
"parcels": [
{
"weight_kg": 2.5,
"length_cm": 30,
"width_cm": 20,
"height_cm": 15
}
],
"declared_value": 450,
"incoterm": "DAP",
"hs_codes": [
"330499"
],
"cod_amount": 0,
"reference": "PO-10422"
}'GET/shipments/{id}تفاصيل شحنة
يعيد تفاصيل الشحنة كاملة بحالتها الراهنة.
المعاملات
| الاسم | الموضع | النوع | الوصف |
|---|---|---|---|
idمطلوب | path | string | معرّف الشحنة في منفذ |
الاستجابات
Shipment
شحنة
idstringtracking_numberstringmanfath_referencestringstatusstringCREATED · LABEL_GENERATED · PICKUP_SCHEDULED · PICKED_UP · AT_ORIGIN_HUB · DEPARTED_ORIGIN · IN_TRANSIT · ARRIVED_DESTINATION_COUNTRY · CUSTOMS_CLEARANCE · CUSTOMS_CLEARED · AT_DELIVERY_HUB · OUT_FOR_DELIVERY · DELIVERED · EXCEPTION_CUSTOMS_HOLD · EXCEPTION_ADDRESS_ISSUE · EXCEPTION_WEIGHT_MISMATCH · EXCEPTION_FAILED_DELIVERY_ATTEMPT · EXCEPTION_CARRIER_DELAY · RETURN_TO_ORIGIN · RETURNED · LOST · CANCELLED
status_arstringstatus_enstringcarrierCarrierRefمرجع الناقل
codestringname_arstringname_enstringserviceServiceRefمرجع مستوى الخدمة
codestringname_arstringname_enstringmodestringوسيلة النقل
air · sea · land · express
originAddressعنوان. للوجهات داخل المملكة يلزم عند إنشاء الشحنة عنوان وطني مطابق: عنوان مختصر، أو رمز بريدي مع رقم إضافي.
namestringاسم جهة الاتصال أو المنشأة
line1stringسطر العنوان
citystringمطلوبregionstringالمنطقة
countrystringمطلوبرمز الدولة ISO 3166-1 alpha-2
postal_codestringالرمز البريدي (5 أرقام داخل المملكة)
additional_numberstringالرقم الإضافي للعنوان الوطني (4 أرقام)
short_addressstringالعنوان الوطني المختصر، مثل RRDA2929
phonestringرقم الجوال بصيغة 9665XXXXXXXX
destinationAddressعنوان. للوجهات داخل المملكة يلزم عند إنشاء الشحنة عنوان وطني مطابق: عنوان مختصر، أو رمز بريدي مع رقم إضافي.
namestringاسم جهة الاتصال أو المنشأة
line1stringسطر العنوان
citystringمطلوبregionstringالمنطقة
countrystringمطلوبرمز الدولة ISO 3166-1 alpha-2
postal_codestringالرمز البريدي (5 أرقام داخل المملكة)
additional_numberstringالرقم الإضافي للعنوان الوطني (4 أرقام)
short_addressstringالعنوان الوطني المختصر، مثل RRDA2929
phonestringرقم الجوال بصيغة 9665XXXXXXXX
parcelsarray<Parcel>weight_kgnumberمطلوبالوزن بالكيلوغرام
length_cmnumberمطلوبالطول بالسنتيمتر
width_cmnumberمطلوبالعرض بالسنتيمتر
height_cmnumberمطلوبالارتفاع بالسنتيمتر
declared_value_sarnumberincotermstringhs_codesarray<string>cod_amount_sarnumberlabel_urlstringمسار بوليصة الشحن PDF
warningsarray<Warning>تنبيهات غير مانعة إن وجدت
codestringmessage_enstringmessage_arstringquoted_total_sarnumberestimated_delivery_atstring (date-time)created_atstring (date-time){
"id": "cmdg8s1t20003x8p9aqk2v7hu",
"tracking_number": "SRE0248817359",
"manfath_reference": "MNF-2026-K7Q2ZC",
"status": "CREATED",
"status_ar": "تم إنشاء الشحنة",
"status_en": "Shipment created",
"carrier": {
"code": "SARIE",
"name_ar": "سريع إكسبريس",
"name_en": "Sarie Express"
},
"service": {
"code": "EXP_DOM",
"name_ar": "إكسبريس محلي",
"name_en": "Domestic Express",
"mode": "express"
},
"origin": {
"name": "مستودع الرياض",
"line1": "طريق الملك فهد",
"country": "SA",
"city": "Riyadh",
"short_address": "RRDA2929",
"phone": "966512345678"
},
"destination": {
"name": "عبدالله القحطاني",
"line1": "حي الروضة",
"country": "SA",
"city": "Jeddah",
"short_address": "JHFB8823",
"phone": "966555112233"
},
"parcels": [
{
"weight_kg": 2.5,
"length_cm": 30,
"width_cm": 20,
"height_cm": 15
}
],
"declared_value_sar": 450,
"incoterm": "DAP",
"hs_codes": [
"330499"
],
"cod_amount_sar": 0,
"label_url": "/api/v1/labels/cmdg8s1t20003x8p9aqk2v7hu",
"warnings": [],
"quoted_total_sar": 63.25,
"estimated_delivery_at": "2026-07-28T17:00:00+03:00",
"created_at": "2026-07-26T09:12:00+03:00"
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_NOT_FOUND",
"message_en": "Resource not found.",
"message_ar": "المورد غير موجود."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s "https://manfath.example/api/v1/shipments/cmdg8s1t20003x8p9aqk2v7hu" \
-H "Authorization: Bearer $MANFATH_API_KEY"GET/shipments/{id}/trackingأحداث تتبع الشحنة
يعيد أحداث التتبع للشحنة مرتبة من الأحدث إلى الأقدم.
المعاملات
| الاسم | الموضع | النوع | الوصف |
|---|---|---|---|
idمطلوب | path | string | معرّف الشحنة في منفذ |
الاستجابات
tracking_numberstringstatusstringeventsarray<TrackingEvent>أحداث التتبع
codestringرمز الحالة
status_arstringstatus_enstringlocation_arstringlocation_enstringoccurred_atstring (date-time)is_exceptionbooleanexception_typestringنوع الاستثناء عندما يكون الحدث استثناءً
CUSTOMS_HOLD · ADDRESS_ISSUE · WEIGHT_MISMATCH · FAILED_DELIVERY_ATTEMPT · CARRIER_DELAY
{
"tracking_number": "SRE0248817359",
"status": "IN_TRANSIT",
"events": [
{
"code": "IN_TRANSIT",
"status_ar": "في الطريق",
"status_en": "In transit",
"location_ar": "الرياض",
"location_en": "Riyadh",
"occurred_at": "2026-07-26T18:40:00+03:00",
"is_exception": false
},
{
"code": "AT_ORIGIN_HUB",
"status_ar": "وصلت إلى مركز الفرز في بلد المنشأ",
"status_en": "Arrived at origin hub",
"location_ar": "الرياض",
"location_en": "Riyadh",
"occurred_at": "2026-07-26T15:05:00+03:00",
"is_exception": false
},
{
"code": "PICKED_UP",
"status_ar": "تم الاستلام من المرسل",
"status_en": "Picked up",
"location_ar": "الرياض",
"location_en": "Riyadh",
"occurred_at": "2026-07-26T13:30:00+03:00",
"is_exception": false
},
{
"code": "PICKUP_SCHEDULED",
"status_ar": "تم جدولة الاستلام",
"status_en": "Pickup scheduled",
"location_ar": "الرياض",
"location_en": "Riyadh",
"occurred_at": "2026-07-26T10:00:00+03:00",
"is_exception": false
},
{
"code": "CREATED",
"status_ar": "تم إنشاء الشحنة",
"status_en": "Shipment created",
"location_ar": "الرياض",
"location_en": "Riyadh",
"occurred_at": "2026-07-26T09:12:00+03:00",
"is_exception": false
}
]
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_NOT_FOUND",
"message_en": "Resource not found.",
"message_ar": "المورد غير موجود."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s "https://manfath.example/api/v1/shipments/cmdg8s1t20003x8p9aqk2v7hu/tracking" \
-H "Authorization: Bearer $MANFATH_API_KEY"POST/shipments/{id}/cancelإلغاء شحنة
يلغي الشحنة. الإلغاء ممكن قبل استلام الشحنة من المرسل فقط.
المعاملات
| الاسم | الموضع | النوع | الوصف |
|---|---|---|---|
idمطلوب | path | string | معرّف الشحنة في منفذ |
جسم الطلبapplication/json
reasonstringسبب الإلغاء (اختياري)
مثال
{
"reason": "طلب العميل إلغاء الشراء"
}الاستجابات
idstringtracking_numberstringstatusstringstatus_arstringstatus_enstringcancelled_atstring (date-time){
"id": "cmdg8s1t20003x8p9aqk2v7hu",
"tracking_number": "SRE0248817359",
"status": "CANCELLED",
"status_ar": "أُلغيت الشحنة",
"status_en": "Cancelled",
"cancelled_at": "2026-07-26T11:03:00+03:00"
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_NOT_FOUND",
"message_en": "Resource not found.",
"message_ar": "المورد غير موجود."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_CANCEL_NOT_ALLOWED",
"message_en": "Shipment can no longer be cancelled after pickup.",
"message_ar": "لا يمكن إلغاء الشحنة بعد الاستلام من المرسل."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s -X POST "https://manfath.example/api/v1/shipments/cmdg8s1t20003x8p9aqk2v7hu/cancel" \
-H "Authorization: Bearer $MANFATH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reason": "طلب العميل إلغاء الشراء"
}'POST/shipments/{id}/documentsرفع مستندات الشحنة
ارفع المستندات الجمركية للشحنة: فاتورة تجارية، قائمة تعبئة، أو شهادة منشأ.
المعاملات
| الاسم | الموضع | النوع | الوصف |
|---|---|---|---|
idمطلوب | path | string | معرّف الشحنة في منفذ |
جسم الطلبmultipart/form-data
filestring (binary)مطلوبملف المستند (PDF)
typestringمطلوبنوع المستند
commercial_invoice · packing_list · certificate_of_origin · other
الاستجابات
idstringshipment_idstringtypestringfilenamestringuploaded_atstring (date-time){
"id": "cmdgcy4u80009x8p9m1tq8r3z",
"shipment_id": "cmdg8s1t20003x8p9aqk2v7hu",
"type": "commercial_invoice",
"filename": "invoice-PO-10422.pdf",
"uploaded_at": "2026-07-26T12:40:00+03:00"
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_NOT_FOUND",
"message_en": "Resource not found.",
"message_ar": "المورد غير موجود."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_VALIDATION",
"message_en": "Request validation failed.",
"message_ar": "فشل التحقق من صحة الطلب."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s -X POST "https://manfath.example/api/v1/shipments/cmdg8s1t20003x8p9aqk2v7hu/documents" \
-H "Authorization: Bearer $MANFATH_API_KEY" \
-F "file=@document.pdf" \
-F "type=commercial_invoice"PATCH/shipments/{id}/destinationتحديث عنوان الوجهة
يحدّث عنوان وجهة الشحنة، مثلًا لمعالجة مشكلة في عنوان التسليم. تنطبق قواعد العنوان الوطني السعودي نفسها المذكورة عند إنشاء الشحنة.
المعاملات
| الاسم | الموضع | النوع | الوصف |
|---|---|---|---|
idمطلوب | path | string | معرّف الشحنة في منفذ |
جسم الطلبapplication/json
Address
عنوان. للوجهات داخل المملكة يلزم عند إنشاء الشحنة عنوان وطني مطابق: عنوان مختصر، أو رمز بريدي مع رقم إضافي.
namestringاسم جهة الاتصال أو المنشأة
line1stringسطر العنوان
citystringمطلوبregionstringالمنطقة
countrystringمطلوبرمز الدولة ISO 3166-1 alpha-2
postal_codestringالرمز البريدي (5 أرقام داخل المملكة)
additional_numberstringالرقم الإضافي للعنوان الوطني (4 أرقام)
short_addressstringالعنوان الوطني المختصر، مثل RRDA2929
phonestringرقم الجوال بصيغة 9665XXXXXXXX
مثال
{
"name": "عبدالله القحطاني",
"line1": "حي السلامة",
"country": "SA",
"city": "Jeddah",
"postal_code": "23525",
"additional_number": "7712",
"phone": "966555112233"
}الاستجابات
Shipment
شحنة
idstringtracking_numberstringmanfath_referencestringstatusstringCREATED · LABEL_GENERATED · PICKUP_SCHEDULED · PICKED_UP · AT_ORIGIN_HUB · DEPARTED_ORIGIN · IN_TRANSIT · ARRIVED_DESTINATION_COUNTRY · CUSTOMS_CLEARANCE · CUSTOMS_CLEARED · AT_DELIVERY_HUB · OUT_FOR_DELIVERY · DELIVERED · EXCEPTION_CUSTOMS_HOLD · EXCEPTION_ADDRESS_ISSUE · EXCEPTION_WEIGHT_MISMATCH · EXCEPTION_FAILED_DELIVERY_ATTEMPT · EXCEPTION_CARRIER_DELAY · RETURN_TO_ORIGIN · RETURNED · LOST · CANCELLED
status_arstringstatus_enstringcarrierCarrierRefمرجع الناقل
codestringname_arstringname_enstringserviceServiceRefمرجع مستوى الخدمة
codestringname_arstringname_enstringmodestringوسيلة النقل
air · sea · land · express
originAddressعنوان. للوجهات داخل المملكة يلزم عند إنشاء الشحنة عنوان وطني مطابق: عنوان مختصر، أو رمز بريدي مع رقم إضافي.
namestringاسم جهة الاتصال أو المنشأة
line1stringسطر العنوان
citystringمطلوبregionstringالمنطقة
countrystringمطلوبرمز الدولة ISO 3166-1 alpha-2
postal_codestringالرمز البريدي (5 أرقام داخل المملكة)
additional_numberstringالرقم الإضافي للعنوان الوطني (4 أرقام)
short_addressstringالعنوان الوطني المختصر، مثل RRDA2929
phonestringرقم الجوال بصيغة 9665XXXXXXXX
destinationAddressعنوان. للوجهات داخل المملكة يلزم عند إنشاء الشحنة عنوان وطني مطابق: عنوان مختصر، أو رمز بريدي مع رقم إضافي.
namestringاسم جهة الاتصال أو المنشأة
line1stringسطر العنوان
citystringمطلوبregionstringالمنطقة
countrystringمطلوبرمز الدولة ISO 3166-1 alpha-2
postal_codestringالرمز البريدي (5 أرقام داخل المملكة)
additional_numberstringالرقم الإضافي للعنوان الوطني (4 أرقام)
short_addressstringالعنوان الوطني المختصر، مثل RRDA2929
phonestringرقم الجوال بصيغة 9665XXXXXXXX
parcelsarray<Parcel>weight_kgnumberمطلوبالوزن بالكيلوغرام
length_cmnumberمطلوبالطول بالسنتيمتر
width_cmnumberمطلوبالعرض بالسنتيمتر
height_cmnumberمطلوبالارتفاع بالسنتيمتر
declared_value_sarnumberincotermstringhs_codesarray<string>cod_amount_sarnumberlabel_urlstringمسار بوليصة الشحن PDF
warningsarray<Warning>تنبيهات غير مانعة إن وجدت
codestringmessage_enstringmessage_arstringquoted_total_sarnumberestimated_delivery_atstring (date-time)created_atstring (date-time){
"id": "cmdg8s1t20003x8p9aqk2v7hu",
"tracking_number": "SRE0248817359",
"manfath_reference": "MNF-2026-K7Q2ZC",
"status": "CREATED",
"status_ar": "تم إنشاء الشحنة",
"status_en": "Shipment created",
"carrier": {
"code": "SARIE",
"name_ar": "سريع إكسبريس",
"name_en": "Sarie Express"
},
"service": {
"code": "EXP_DOM",
"name_ar": "إكسبريس محلي",
"name_en": "Domestic Express",
"mode": "express"
},
"origin": {
"name": "مستودع الرياض",
"line1": "طريق الملك فهد",
"country": "SA",
"city": "Riyadh",
"short_address": "RRDA2929",
"phone": "966512345678"
},
"destination": {
"name": "عبدالله القحطاني",
"line1": "حي الروضة",
"country": "SA",
"city": "Jeddah",
"short_address": "JHFB8823",
"phone": "966555112233"
},
"parcels": [
{
"weight_kg": 2.5,
"length_cm": 30,
"width_cm": 20,
"height_cm": 15
}
],
"declared_value_sar": 450,
"incoterm": "DAP",
"hs_codes": [
"330499"
],
"cod_amount_sar": 0,
"label_url": "/api/v1/labels/cmdg8s1t20003x8p9aqk2v7hu",
"warnings": [],
"quoted_total_sar": 63.25,
"estimated_delivery_at": "2026-07-28T17:00:00+03:00",
"created_at": "2026-07-26T09:12:00+03:00"
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_NOT_FOUND",
"message_en": "Resource not found.",
"message_ar": "المورد غير موجود."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_ADDRESS_NOT_NORMALISED",
"message_en": "Destination address is not normalised to the Saudi National Address standard.",
"message_ar": "عنوان الوجهة غير مطابق لمعيار العنوان الوطني السعودي."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s -X PATCH "https://manfath.example/api/v1/shipments/cmdg8s1t20003x8p9aqk2v7hu/destination" \
-H "Authorization: Bearer $MANFATH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "عبدالله القحطاني",
"line1": "حي السلامة",
"country": "SA",
"city": "Jeddah",
"postal_code": "23525",
"additional_number": "7712",
"phone": "966555112233"
}'بوليصات الشحن
GET/labels/{id}بوليصة الشحن (PDF)
يعيد بوليصة الشحن بصيغة PDF بمقاس A6، متضمنة الرمز الشريطي ورمز الاستجابة السريعة للتتبع.
المعاملات
| الاسم | الموضع | النوع | الوصف |
|---|---|---|---|
idمطلوب | path | string | معرّف الشحنة في منفذ |
الاستجابات
application/pdf — ملف ثنائي
ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_NOT_FOUND",
"message_en": "Resource not found.",
"message_ar": "المورد غير موجود."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s "https://manfath.example/api/v1/labels/cmdg8s1t20003x8p9aqk2v7hu" \
-H "Authorization: Bearer $MANFATH_API_KEY" \
-o label.pdfالإشعارات الفورية
POST/webhooks/configإعداد Webhooks
سجّل عنوان HTTPS لاستقبال إشعارات فورية عن أحداث الشحنات: shipment.created وshipment.status_updated وshipment.delivered وshipment.exception. تعيد الاستجابة سرّ Webhook الخاص بفريقك؛ نوقّع الحمولة بسرّك.
جسم الطلبapplication/json
urlstring (uri)مطلوبعنوان HTTPS الذي يستقبل الإشعارات
eventsarray<string>الأحداث المطلوبة (الافتراضي: الكل)
مثال
{
"url": "https://example.sa/manfath/hook",
"events": [
"shipment.status_updated",
"shipment.exception"
]
}الاستجابات
urlstring (uri)eventsarray<string>secretstringسرّ Webhook الخاص بفريقك
{
"url": "https://example.sa/manfath/hook",
"events": [
"shipment.status_updated",
"shipment.exception"
],
"secret": "whsec_9f2c4a7d1e8b3f6c5a0d9e2b4c7f1a3d"
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_VALIDATION",
"message_en": "Request validation failed.",
"message_ar": "فشل التحقق من صحة الطلب."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s -X POST "https://manfath.example/api/v1/webhooks/config" \
-H "Authorization: Bearer $MANFATH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.sa/manfath/hook",
"events": [
"shipment.status_updated",
"shipment.exception"
]
}'الفواتير
GET/invoices/currentالفاتورة الحالية
يعيد فاتورة فترة الفوترة الحالية لفريقك بجميع بنودها، شاملة ضريبة القيمة المضافة 15%.
الاستجابات
Invoice
فاتورة فترة الفوترة
idstringperiod_startstring (date)period_endstring (date)line_itemsarray<InvoiceLineItem>shipment_idstringtracking_numberstringdescriptionstringdescription_arstringamount_sarnumbercausestringسبب البند
subtotal_sarnumbersurcharges_sarnumbervat_sarnumberضريبة القيمة المضافة 15%
total_sarnumberupdated_atstring (date-time){
"id": "cmdgb1p9e0007x8p9w3nq5d2k",
"period_start": "2026-07-01",
"period_end": "2026-07-31",
"line_items": [
{
"shipment_id": "cmdg8s1t20003x8p9aqk2v7hu",
"tracking_number": "SRE0248817359",
"description": "Shipment SRE0248817359 — Domestic Express",
"description_ar": "شحنة SRE0248817359 — إكسبريس محلي",
"amount_sar": 55,
"cause": "shipment"
}
],
"subtotal_sar": 55,
"surcharges_sar": 0,
"vat_sar": 8.25,
"total_sar": 63.25,
"updated_at": "2026-07-26T09:12:04+03:00"
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s "https://manfath.example/api/v1/invoices/current" \
-H "Authorization: Bearer $MANFATH_API_KEY"جاهزية بيانات الكتالوج
POST/data-readinessتقييم جاهزية البيانات
يفحص كتالوج منتجات فريقك ويقيّم اكتمال البيانات اللازمة للشحن الدولي: رموز النظام المنسق، الأوزان، الأبعاد، وبلد المنشأ، ثم يعيد درجة من 100 مع قائمة مفصلة بالمشكلات.
الاستجابات
DataReadinessReport
تقرير جاهزية بيانات الكتالوج
scoreintegerالدرجة من 100
total_skusintegerissuesarray<object>skustringfieldstringseveritystringerror · warn
message_arstringmessage_enstringsummaryobjectmissing_hs_codeintegermissing_weightintegermissing_dimensionsintegermissing_origin_countryintegersuspicious_valuesinteger{
"score": 52,
"total_skus": 84,
"issues": [
{
"sku": "SKU-1042",
"field": "hs_code",
"severity": "error",
"message_ar": "رمز النظام المنسق مفقود",
"message_en": "HS code is missing"
},
{
"sku": "SKU-1108",
"field": "weight_grams",
"severity": "warn",
"message_ar": "الوزن غير منطقي لهذا الصنف",
"message_en": "Weight looks implausible for this item"
}
],
"summary": {
"missing_hs_code": 29,
"missing_weight": 17,
"missing_dimensions": 38,
"missing_origin_country": 21,
"suspicious_values": 2
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s -X POST "https://manfath.example/api/v1/data-readiness" \
-H "Authorization: Bearer $MANFATH_API_KEY"دفعات مخزون بلس
POST/makhzoon/batchesرفع دفعة طلبات مخزون بلس
ارفع ملف CSV بطلبات التنفيذ المحلي. يجب أن يطابق صف العناوين تمامًا بالترتيب والأسماء:
order_ref,recipient_name_ar,recipient_name_latin,phone,city,district,short_address,sku,qty,cod_amount_sar,notes
أي خطأ في أي صف يؤدي إلى رفض الملف كاملًا. تتم المعالجة بشكل غير متزامن — استعلم عن النتيجة عبر GET /makhzoon/batches/{id}.
جسم الطلبmultipart/form-data
filestring (binary)مطلوبملف CSV بترميز UTF-8
الاستجابات
MakhzoonBatch
دفعة طلبات مخزون بلس
idstringstatusstringPROCESSING · COMPLETED · REJECTED
filenamestringrow_countintegeraccepted_countintegerrejected_countintegerresult_csvstring | nullCSV النتائج عند الاكتمال، بعمودي tracking_number وstatus إضافة إلى أعمدة الملف الأصلي
rejection_csvstring | nullCSV أسباب الرفض عند رفض الملف: row_number,field,reason_ar,reason_en
created_atstring (date-time){
"id": "cmdgh7w2b000bx8p9t5kq2n8j",
"status": "PROCESSING",
"filename": "orders-2026-07-26.csv",
"row_count": 24,
"accepted_count": 0,
"rejected_count": 0,
"result_csv": null,
"rejection_csv": null,
"created_at": "2026-07-26T13:10:00+03:00"
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_VALIDATION",
"message_en": "Request validation failed.",
"message_ar": "فشل التحقق من صحة الطلب."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s -X POST "https://manfath.example/api/v1/makhzoon/batches" \
-H "Authorization: Bearer $MANFATH_API_KEY" \
-F "file=@orders.csv"GET/makhzoon/batches/{id}حالة دفعة مخزون بلس
يعيد حالة الدفعة ونتيجتها: عند الاكتمال يتضمن result_csv عمودي tracking_number وstatus، وعند الرفض يتضمن rejection_csv أسباب رفض كل صف.
المعاملات
| الاسم | الموضع | النوع | الوصف |
|---|---|---|---|
idمطلوب | path | string | معرّف الدفعة |
الاستجابات
MakhzoonBatch
دفعة طلبات مخزون بلس
idstringstatusstringPROCESSING · COMPLETED · REJECTED
filenamestringrow_countintegeraccepted_countintegerrejected_countintegerresult_csvstring | nullCSV النتائج عند الاكتمال، بعمودي tracking_number وstatus إضافة إلى أعمدة الملف الأصلي
rejection_csvstring | nullCSV أسباب الرفض عند رفض الملف: row_number,field,reason_ar,reason_en
created_atstring (date-time){
"id": "cmdgh7w2b000bx8p9t5kq2n8j",
"status": "COMPLETED",
"filename": "orders-2026-07-26.csv",
"row_count": 24,
"accepted_count": 24,
"rejected_count": 0,
"result_csv": "order_ref,recipient_name_ar,recipient_name_latin,phone,city,district,short_address,sku,qty,cod_amount_sar,notes,tracking_number,status\nSO-1001,عبدالله القحطاني,Abdullah Alqahtani,966512345678,Riyadh,العليا,RRDA2929,SKU-100,1,0,,MKZ048112233,CREATED",
"rejection_csv": null,
"created_at": "2026-07-26T13:10:00+03:00"
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_NOT_FOUND",
"message_en": "Resource not found.",
"message_ar": "المورد غير موجود."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s "https://manfath.example/api/v1/makhzoon/batches/cmdgh7w2b000bx8p9t5kq2n8j" \
-H "Authorization: Bearer $MANFATH_API_KEY"التمرير المباشر إلى الناقل
POST/carriers/{code}/passthroughالتمرير المباشر إلى الناقل
يمرر جسم الطلب كما هو إلى واجهة الناقل الأصلية ويعيد استجابة الناقل كما هي. راجع وثائق الناقل لمعرفة الصيغة المطلوبة.
المعاملات
| الاسم | الموضع | النوع | الوصف |
|---|---|---|---|
codeمطلوب | path | string | رمز الناقل |
جسم الطلبapplication/json
carrier-native payload — see carrier documentation
object
الاستجابات
carrier-native response — see carrier documentation
object
ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_UNAUTHENTICATED",
"message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
"message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_..."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_NOT_FOUND",
"message_en": "Resource not found.",
"message_ar": "المورد غير موجود."
}
}ErrorEnvelope
غلاف الأخطاء الموحد
errorobjectمطلوبcodestringمطلوبرمز الخطأ الآلي
message_enstringمطلوبmessage_arstringمطلوبdetailsobjectتفاصيل إضافية إن وجدت
{
"error": {
"code": "E_RATE_LIMITED",
"message_en": "Rate limit exceeded: 60 requests per minute per API key.",
"message_ar": "تم تجاوز حد الطلبات: 60 طلبًا في الدقيقة لكل مفتاح."
}
}أمثلة الاستدعاء
curl -s -X POST "https://manfath.example/api/v1/carriers/SARIE/passthrough" \
-H "Authorization: Bearer $MANFATH_API_KEY"