openapi: 3.0.3 info: title: OTO API V2 version: 2.0.0 description: 'Introduction OTO REST API provides seamless integration for managing shipments, tracking deliveries, and handling logistics operations. With powerful endpoints for creating, updating, and querying shipments, it ensures efficient and reliable communication between your systems and OTO''s platform. Overview We continuously analyze the e-commerce and logistics industries to enhance shipping and fulfillment processes, making them easier for vendors. OTO APIs are designed to automate and simplify key logistics operations, including: 🚀 Order Management – Process, update, and sync orders seamlessly. 🚀 Shipment Management – Create, manage, and track shipments effortlessly. 🚀 Return Management – Handle return requests and reverse logistics smoothly. 🚀 Stock Inventory Management – Keep inventory levels updated in real-time. 🚀 Product Management – Organize, update, and synchronize products efficiently. 🚀 Warehouse Management – Add, update, organize pickup locations. You can find guidance to assist you throughout the integration process here . Base URL: All API requests must be made over HTTPS to the following base endpoint: https://api.tryoto.com Meet our new OTO AI Assistant 🤖— a smart AI agent designed to help you navigate and use our REST API with ease. Whether you''re integrating for the first time or need help troubleshooting a request, our assistant is here to provide instant answers, example json responses, guide you through endpoints, and help you build faster.' contact: name: OTO Support url: https://help.tryoto.com/en/support/home x-source: derived from published OTO API V2 Postman collection (apis.tryoto.com) servers: - url: https://api.tryoto.com/rest/v2 description: Production - url: https://staging-api.tryoto.com/rest/v2 description: Staging / sandbox tags: - name: Plan-Based API Access description: API functionality is structured across subscription tiers, where basic operations are available in lower plans and advanced features, integrations, and system modules are unlocked in higher tiers. Below you can find the OTO API access plan. Endpoint Free Plan Starter Plan Scale Plan Pro Plan Enterpr - name: Release Notes description: 'April 2026 Release Notes 🚀 Enhancement: Feasibility-Based Shipping Option Filtering We are introducing a new optional request parameter that enables clients to control whether feasibility rules should be applied before returning shipping options. This enhancement is available for the following endpo' - name: Sandbox Account description: 'Use the sandbox environment to create and test new configurations without affecting your live data. This helps you validate changes safely before deployment. Dev URL: https://staging-api.tryoto.com Please watch the guide to create a test account.' - name: Use Cases and Flows description: '' - name: Authorization description: 'You need your refresh_token for authorization. You can obtain your token from the UI by following these steps: Go to Settings → API Integrations . Click the Connect button to activate your Refresh Token . The refresh_token can only be used to get a new access_token . Use the access_token to call oth' - name: Account description: '' - name: Transactions description: '' - name: Marketplace description: '' - name: Orders description: '' - name: Shipping Prices description: '' - name: Shipments description: '' - name: Return Shipments description: '' - name: Shipping Label(AWB) description: '' - name: Tracking description: '' - name: Customer Notifications description: '' - name: Carrier Integrations description: '' - name: Pickup Locations description: '' - name: Brands description: '' - name: Sales Channels description: '' - name: Products description: '' - name: Stock Management description: '' - name: National Address description: '' - name: Webhook description: WEBHOOK for ORDER There are 3 types of webhook for now, newOrders, orderStatus , shipmentError and walletTransaction. OTO will push updates to the registered webhook endpoint for the orderStatus type whenever an order status changes. This includes statuses such as Processing, Delivered, Returned, an - name: OTO FLEX description: '' - name: List Of Statuses description: Status Stage Description new Order Management New order missingData Order Management The order is missing required information to proceed with shipment creation paymentConfirmed Order Management Payment is confirmed for the order waitingAddressConfirmation Order Management Order waits address confir - name: Error Codes description: HTTP Status Codes Error Code Error Description 200 SUCCESS 400 BAD REQUEST 403 FORBIDDEN 404 NOT FOUND 409 CONFLICT 500 INTERNAL_SERVER_ERROR OTO Error Codes Error codes and messages are returned as otoErrorCode and otoErrorMessage responses. OTO Error Code OTO Error Description OTO1001 Invalid or m components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: 'Obtain an access_token by POSTing your refresh_token to /refreshToken, then send Authorization: Bearer .' security: - bearerAuth: [] paths: /rest/v2/refreshToken: post: operationId: refreshToken summary: Refresh Token tags: - Authorization description: 'This API endpoint is used to obtain a new access_token by providing a valid refresh_token . The access_token is a temporary token with a lifespan of one hour, used to authenticate and authorize all subsequent API requests. Include the access_token in the request headers as: Authorization: Bearer access_token To adhere to security standards, it is recommended to renew the access_token periodically (every hour) to maintain uninterrupted access to the API while minimizing security risks. This endpo' requestBody: content: application/json: example: refresh_token: refresh_token schema: type: object responses: '200': description: 200 OK content: application/json: example: access_token: ey**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************Tg refresh_token: AMf-****************************************************************************************************************************************************************************************************************************************************************************************************************VQ success: true token_type: Bearer expires_in: '3600' security: [] /rest/v2/healthCheck: get: operationId: healthCheck summary: Health Check tags: - Authorization description: This API endpoint is used to check if the system is working properly responses: '200': description: 200 OK content: application/json: example: status: ok security: [] /rest/v2/accountInfo: get: operationId: accountInfo summary: Account Info tags: - Account description: 'This API endpoint retrieves detailed information about the authenticated user''s account. This includes general profile details, current subscription and balance of the account. Note: You can only see the account information that your token belongs to. Response Body: name: full name of the account owner email: email address belong to the account mobileNumber: mobile number belong to the account packageName: current subscription package name( scalePackage, enterprisePackage etc.) remainingCredit: ' responses: '200': description: '200' content: application/json: example: remainingCredit: 1578.46 remainingFreeShipments: '0' mobileNumber: '9664564845222' accountType: personal CRDocStatus: NOT_UPLOADED name: testUserEnterprise packageName: EnterprisePackage email: testEmail_enterprise@tryoto.com freelanceDocStatus: INDIVIDUAL /rest/v2/buyCredit: post: operationId: buyCredit summary: Buy Credit tags: - Account description: 'Provide amount of credit you wanted to buy, this will response a paymentURL and paymentID . Request Parameters: Name Required Type Description amount yes number the amount of credit wanted to buy' requestBody: content: application/json: example: amount: 13.5 schema: type: object responses: '200': description: '200' content: application/json: example: success: true paymentID: chg_LV03G2920250933Jk9c2603152 paymentURL: https://checkout.tap.company/?mode=page&themeMode=&language=en&token=eyJhbGciOiJIUzI1NiJ9.eyJpZCI6IjY3ZTM5ZmI5OGE3Y2NkMWQwZGE1NzlhMSJ9.71AJo8AcbO96of1mbvGLZR7x2cnrcquiwJii0zOGLmE /rest/v2/requestMobileVerification: post: operationId: requestMobileVerification summary: Request Mobile Verification tags: - Account description: 'This API endpoint allows you to use a phone number to request a verification token (OTP) for account/phone number verification. Marketplaces can also use this endpoint to verify their sellers’ phone numbers. Verification can be done in verifyMobileNumber. Request Parameters: Name Required Type Description phone yes string Phone number to be verified Response body includes success , errorMsg , otoErrorCode , otoErrorMessage when success is false.' requestBody: content: application/json: example: phone: '+905365042516' schema: type: object responses: '200': description: '200' content: application/json: example: success: true token: fa4f8d03-451c-44f7-9262-10fe193e854d /rest/v2/verifyMobileNumber: post: operationId: verifyMobileNumber summary: Verify Mobile Number tags: - Account description: 'This API endpoint verifies a user’s mobile phone number by confirming the one-time password (OTP) sent via SMS. The endpoint requires the phone number, the OTP received, and the token obtained from the requestMobileVerification step. Once successfully verified, the phone number is confirmed for account or seller verification purposes. Request Parameters: Name Required Type Description phone yes string The phone number to verify (same as in step 1, in E.164 format). code yes string The OTP receiv' requestBody: content: application/json: example: phone: '+905365042516' code: '4739' token: fa4f8d03-451c-44f7-9262-10fe193e854d schema: type: object responses: '200': description: '200' content: application/json: example: success: true /rest/v2/getShippingPriceTransactionsList: post: operationId: getShippingPriceTransactionsList summary: Get Shipping Price Transactions List tags: - Transactions description: 'This API endpoint provides details of your Shipping Price Transactions, calculated based on your configured shipping price settings. By providing either the Order ID or Shipment ID, you can retrieve the shipping cost along with other transactional details. Important Note: The results from this API apply only to shipments created using your configured shipping price contracts. Shipping costs are calculated based on factors such as weight, destination, and other predefined configurations. Request ' requestBody: content: application/json: example: shipmentId: '2302416029' orderId: OID-22700-1013 schema: type: object responses: '200': description: 200 Order ID and Shipmetn ID request example content: application/json: example: success: true count: 1 shippingTransactions: - amount: 11 orderID: OID-9618-1062 shipmentID: '290615409716' description: shipment created orderStatus: shipmentCreated ID: 1347 transactionDate: 2023-12-06T16:18 otoOrderID: 30798075 deliveryName: smsav2-2 transaction: shippingCost status: booked /rest/v2/creditTransactions: get: operationId: creditTransactions summary: Credit Transactions tags: - Transactions description: 'This API endpoint provides a powerful way to retrieve credit transaction records from your system. This endpoint supports pagination for efficient data retrieval and allows filtering based on minimum and maximum dates. Additionally, if an orderId is provided, the maxDate and minDate parameters become optional, enabling direct access to transactions associated with the specified order. Request Parameters: Name Required Type Description perPage yes number Credit transaction count in the response. ' parameters: - name: perPage in: query required: false schema: type: string - name: page in: query required: false schema: type: string - name: minDate in: query required: false schema: type: string - name: maxDate in: query required: false schema: type: string responses: '200': description: 200 OK content: application/json: example: success: true transactions: - amount: 19 orderID: '41590739' deliveryCompanySettingsId: 5564 description: Shipment canceled. Delivery fees will be credited back to your account. transactionDate: '2024-09-16T11:26:01' orderPaymentType: cod shipmentType: forward transactionType: dcFee remainingAmount: 85.9 deliveryCompanyName: Deliver Now chargingType: charge langKey: dcFeeShipmentCanceledRevokedDescription shipmentID: DNL05000049328 ID: 8294185 otoOrderID: 10690509 status: revoked - amount: 18 orderID: OID-20980-1092 deliveryCompanySettingsId: 5551 description: Canceled shipment. Delivery fee credited back to your account. transactionDate: '2024-09-24T10:40:43' orderPaymentType: paid shipmentType: forward transactionType: dcFee remainingAmount: 51.8 deliveryCompanyName: Aramex chargingType: refund langKey: dcFeeShipmentCanceledDescription shipmentID: '50162082692' ID: 8430556 otoOrderID: 10748485 status: canceled - amount: 0.9 orderID: '1203' deliveryCompanySettingsId: 3022 description: OTO Fee Booked on shipment created transactionDate: '2024-09-01T11:37:10' orderPaymentType: cod transactionType: otoFee remainingAmount: 111.2 deliveryCompanyName: OTO FLEX langKey: otoFeeSearchingDriverDescription shipmentID: 0e073859 ID: 8057956 otoOrderID: 10248079 status: booked '400': description: 400 Invalid Date content: application/json: example: success: false otoErrorCode: '1107' otoErrorMessage: minDate or maxDate is missing or invalid /rest/v2/shipmentTransactions: get: operationId: shipmentTransactions summary: Shipment Transactions tags: - Transactions description: 'Shipment Transactions This API endpoint provides users with access to detailed information about shipment transactions. This API is designed to retrieve and display key transaction data, allowing users to monitor and review shipment-related activities.It retrieves shipment transactions with the option to paginate and filter by minimum and maximum dates. Note: If orderId exists maxDate and minDate are not required. If shipment number exists maxDate and minDate are not required. Request Parameters' parameters: - name: perPage in: query required: false schema: type: string - name: page in: query required: false schema: type: string - name: minDate in: query required: false schema: type: string - name: maxDate in: query required: false schema: type: string responses: '200': description: '200' content: application/json: example: success: true shipments: - shipmentNumber: 1231231AS orderId: '123123' shipmentCreationDate: '2023-12-05T06:47:46' deliveryCompanyName: deliveryCompany dcConnectionName: connectionName shipmentType: Forward Shipment dcCharge: 25 currency: TRY originalWeight: 100 dcUpdatedWeight: 50 status: status dcInvoiceNumber: 15579456 - shipmentNumber: '12435356' orderId: '342324234' shipmentCreationDate: '2023-12-05T06:47:46' deliveryCompanyName: deliveryCompany dcConnectionName: connectionName shipmentType: Forward Shipment dcCharge: 40 currency: TRY originalWeight: 40 dcUpdatedWeight: 5 status: status dcInvoiceNumber: 21626353729823 - shipmentNumber: '657567' orderId: '34534534' shipmentCreationDate: '2023-12-05T06:47:46' deliveryCompanyName: deliveryCompany dcConnectionName: connectionName shipmentType: Forward Shipment dcCharge: 60 currency: TRY originalWeight: 80 dcUpdatedWeight: 80 status: status dcInvoiceNumber: 21626353729823123213 - shipmentNumber: '5423423' orderId: '14335213' shipmentCreationDate: '2023-12-05T06:47:46' deliveryCompanyName: deliveryCompany dcConnectionName: connectionName shipmentType: Forward Shipment dcCharge: 25 currency: TRY originalWeight: 100 dcUpdatedWeight: 50 status: status dcInvoiceNumber: 2162635372 /rest/v2/register: post: operationId: register summary: Register tags: - Marketplace description: 'This API endpoint is just for marketplaces with multiple vendors . Marketplaces can register their vendors to OTO with this endpoint. It requires a special kind of token provided by OTO. Regular refresh tokens will not work here. If you are a market place you can use register endpoint to create an OTO account for your vendors. Request Parameters: Field Name Type Required Description country string Yes Country tag (e.g., “TR”, “SA”). city string Yes City tag (must match OTO city tags). companyNam' requestBody: content: application/json: schema: type: object responses: '200': description: 200 OK content: application/json: example: success: true activationLink: https://login.tryoto.com/XYZ refreshToken: _refreshToken_ security: [] /rest/v2/clientInfo: post: operationId: clientInfo summary: Client Info tags: - Marketplace description: 'This API endpoint is just for marketplaces. Marketplaces can register their vendors to OTO with a special kind of token provided by OTO. Regular refresh tokens will not work here. If you are a marketplace and used register endpoint to create an OTO account for your vendors , you can get the information about the client you have registered. Request Parameters: Name Required Type Description email yes string registered email of client' requestBody: content: application/json: example: email: test30@tryoto.com schema: type: object responses: '200': description: 200 OK content: application/json: example: userActivated: 'false' remainingCredit: 0 validityDate: 13-October-2028 success: true refreshToken: _refreshToken_ get: operationId: getClientInfo summary: Client Info tags: - Marketplace description: 'This API endpoint provides detailed information about a vendor''s account and its current status. This endpoint returns essential client-related data, including contact details, account balances, and service validity, enabling seamless integration for managing and monitoring client activities. Request Parameters: No request body parameters are required for this GET request. Response: { "remainingCredit": 10, "phone": "+966567130000", "validityDate": "11-01-2028", "success": true, "name": "test Co' responses: '200': description: Client Info content: application/json: example: remainingCredit: 10 phone: '+966567130000' validityDate: 11-01-2028 success: true name: test Company email: test@example.com refreshToken: _refreshToken_ /rest/v2/createOrder: post: operationId: createOrder summary: Create Order tags: - Orders description: 'This API endpoint is a critical component in e-commerce and logistics systems, enabling external applications to initiate and manage new orders seamlessly. This endpoint allows you to submit order details, such as customer information, product data, shipping preferences, and payment methods. For KSA Shipments: If you are providing the sender and receiver short address codes, there is no need to include the city and address information. Note: If you send the createShipment: true parameter and the' requestBody: content: application/json: example: orderId: '1234' pickupLocationCode: jdd_wh createShipment: 'true' deliveryOptionId: 564 payment_method: paid amount: 100 amount_due: 0 currency: SAR customsValue: '12' customsCurrency: USD packageCount: 2 packageWeight: 1 boxWidth: 10 boxLength: 10 boxHeight: 10 orderDate: 31/12/2022 15:45 deliverySlotDate: 31/12/2020 deliverySlotTo: 12pm deliverySlotFrom: 2:30pm senderName: Sender Company customer: name: عبدالله الغامدي email: test@test.com mobile: '546607389' address: 6832, Abruq AR Rughamah District, Jeddah 22272 3330, Saudi Arabia district: Al Hamra city: Jeddah country: SA postcode: '12345' lat: '40.706333' lon: '29.888211' refID: '1000012' items: - productId: 112 name: test product price: 100 rowTotal: 100 taxAmount: 15 quantity: 1 sku: test-product image: http://.... - name: test product 2 price: 100 quantity: 1 sku: test-product-2 schema: type: object responses: '200': description: 200- Sender Information content: application/json: example: success: true otoId: 540789 '400': description: 400- Split Order Wrong PickupLocationCode content: application/json: example: success: false warnings: - pickupLocation field exists in the items array, split order process begins - 'Both the order pickupLocationCode and item''s pickupLocationCode do not exist. Split order process has been revoked ' otoErrorCode: OTO1071 otoErrorMessage: Item has pickupLocation array for split order process but the input is invalid in the array. /rest/v2/updateOrder: post: operationId: updateOrder summary: Update Order tags: - Orders description: 'This API endpoint allows you update order info with this endpoint before shipment creation. If you created a shipment and need to update an information after that you have to cancel the shipment first then you can update. Request Parameters: Parameter Required Type Description orderId yes string Unique identifier of the Order deliveryOptionId no string Specifies the delivery option to be used for the shipment. customer yes object Customer Data( can not be used together with destinationLocationCo' requestBody: content: application/json: example: orderId: '202111081227' ref1: 1234ABCDE pickupLocationCode: '12364' deliveryOptionId: '12364' storeName: Brand A English payment_method: paid amount: 100 amount_due: 0 shippingAmount: 20 subtotal: 100 currency: SAR customsValue: '12' customsCurrency: USD shippingNotes: be careful. it is fragile packageSize: small packageCount: 2 packageWeight: 1 boxWidth: 10 boxLength: 10 boxHeight: 10 orderDate: 30/12/2022 15:45 deliverySlotDate: 31/12/2022 deliverySlotTo: 12pm deliverySlotFrom: 2:30pm customer: name: عبدالله الغامدي email: test@test.com mobile: '546607389' address: 6832, Abruq AR Rughamah District, Jeddah 22272 3330, Saudi Arabia district: Al Hamra city: Riyadh country: SA postcode: '12345' lat: '40.706333' lon: '29.888211' refID: '1000012' W3WAddress: alarmed.cards.stuffy items: - productId: 112 name: test product price: 100 quantity: 1 sku: test-product image: http://.... - name: test product 2 price: 100 quantity: 1 sku: test-product-2 image: http://.... schema: type: object responses: '200': description: '200' content: application/json: example: success: true message: Successfully updated /rest/v2/updateOrderStatus: post: operationId: updateOrderStatus summary: Update Order Status tags: - Orders description: 'This API endpoint allows you to modify the current status of an order within the system. You can update the order status to "delivered," "returned," if the order does not have an associated shipment. For "picked up" there should be an associated shipment. However, if a shipment exists, only statuses for integrator-managed shipments can be updated. Request Parameters: Name Required Type Description orderIds yes string Id of the order/s status yes string status of the shipment(delivered, returned,' requestBody: content: application/json: example: orderIds: - 30846946 status: delivered date: '2024-08-06T21:00:00.000Z' description: aaaaaa schema: type: object responses: '200': description: 200 OK content: application/json: example: result: - {} - success: true orderIds: - '30846946' /rest/v2/cancelOrder: post: operationId: cancelOrder summary: Cancel Order tags: - Orders description: 'This API endpoint allows users to cancel an existing order under specific conditions. It ensures smooth and efficient handling of cancellations while maintaining the integrity of related processes. Important Note: If the order has an associated shipment, it cannot be canceled via this endpoint. Shipment-related restrictions ensure the system prevents conflicts or inconsistencies in ongoing fulfillment processes. Request Parameters: Name Required Type Description orderId yes(if there is no otoId)' requestBody: content: application/json: example: orderId: '1234' schema: type: object responses: '200': description: 200 OK content: application/json: example: success: true /rest/v2/orders: get: operationId: orders summary: Get Orders tags: - Orders description: 'This API endpoint is designed to provide a comprehensive overview of orders in your system. This endpoint returns detailed information about each order, including pickup locations, order IDs, item details, and current statuses. It enables seamless tracking and management of orders, ensuring better visibility and control. Request Parameters: Name Required Type Description perPage no number Order count in the response. Max limit 100 page no number Pagination number. You can iterate this field to g' parameters: - name: perPage in: query required: false schema: type: string - name: page in: query required: false schema: type: string - name: status in: query required: false schema: type: string responses: '200': description: 200 OK-new content: application/json: example: perPage: 5 totalPage: 1 success: true orders: - skus: '' orderId: OID-2476-70000203527-1 trackingURL: '' reverseShipment: 'false' totalDue: 0 quantities: '' subTotal: 0 totalCount: 2 addressConfirm: notYet customerPhone: '4563731231' drivingDistance: 0 originCity: Al Kharj currency: SAR modifiedBy: Demo Niceone customerReturnReason: test id: '30824696' deliveryDate: '2024-02-28 14:44:30' shipmentNumber: '' customerAddress: Unnamed Road 16464, Saudi Arabia isReturnShipment: 'no' amount: 700 grandTotal: 700 totalPage: 1 weight: 0.0001 destinationCountry: SA customerName: Zeynep Alakuş destinationCity: Al Kharj deliverySlot: '' district: Al Kharj modifiedDate: '2024-09-23 13:04:29' paymentMethod: paid packageCount: 1 orderDate: '2024-02-01 11:19:55' items: - quantity: 5 productId: 591478 price: 80 name: Raincoat taxAmount: 0 sku: '5' - quantity: 3 productId: 591475 price: 100 name: 'Black Tayt ' taxAmount: 0 sku: '2' status: delivered customer: country: SA address: 8089, Salam Ibn Salim, 4314, Al Mughaisilah Dist., 42315, Madinah, Kingdom of Saudi Arabia district: Al Mughaisilah Dist. city: Madinah buildingNo: '8089' street: Salam Ibn Salim secondaryAddressNumber: '4314' shortAddressCode: DMAJ8089 postcode: '42315' name: Fatmanur Yavuz mobile: '4563731231' lon: 39.63739580725869 id: 1 state: Madinah Province lat: 24.0783327 - skus: '5' orderId: OID-2476-70000203528-2 trackingURL: '' reverseShipment: 'false' totalDue: 0 quantities: '1' pickupLocationCode: '10' subTotal: 0 totalCount: 2 addressConfirm: notYet customerPhone: '4563731231' drivingDistance: 0 originCity: Al Kharj currency: SAR modifiedBy: Demo Niceone id: '30824710' deliveryDate: '2024-02-28 14:40:07' shipmentNumber: '' customerAddress: Unnamed Road 16464, Saudi Arabia isReturnShipment: 'no' amount: 80 grandTotal: 80 totalPage: 1 weight: 0.0001 pickupLocation: DefaultWH destinationCountry: SA customerName: Zeynep Alakuş destinationCity: Al Kharj deliverySlot: '' modifiedDate: '2024-12-08 16:15:23' paymentMethod: paid packageCount: 1 orderDate: '2024-02-01 11:39:59' items: - quantity: 1 price: 80 name: Raincoat taxAmount: 0 sku: '5' status: delivered customer: country: SA address: Unnamed Road 16464, Saudi Arabia city: Al Kharj name: ZeynepAlakuş mobile: '4563731231' lon: 47.5413839 id: 1 lat: 24.0783327 currentPage: 1 totalCount: 2 '400': description: '400' content: application/json: example: success: false otoErrorCode: OTO1107 otoErrorMessage: minDate or maxDate is missing or invalid /rest/v2/holdOrder: post: operationId: holdOrder summary: Hold Order tags: - Orders description: 'This API endpoint allows you to place an order on hold, temporarily pausing its processing. This is useful for scenarios such as payment verification, inventory issues, or customer requests. Request Parameters: Name Required Type Description orderId yes string Id of the order that you will place on hold. onHoldReason yes string Reason for being an order on hold. onHoldReasonLang yes string Values can be: eng, tr, ar. onHoldComment no string Reason or note explaining why the order is placed on ho' requestBody: content: application/json: example: orderId: OID-20980-1146 onHoldReason: Fraud onHoldReasonLang: en schema: type: object responses: '200': description: '200' content: application/json: example: success: true '400': description: 400 missing reason config lang content: application/json: example: success: false otoErrorCode: OTO110 otoErrorMessage: On Hold reason is is missing or invalid /rest/v2/unHoldOrder: post: operationId: unHoldOrder summary: Unhold Order tags: - Orders description: 'This API endpoint allows users to release orders that are currently on hold. This endpoint is designed to resume the processing of held orders, making them available for fulfillment or further actions in the order management workflow. Request Parameters: Name Required Type Description orderId yes string The orderId you want to unhold.' requestBody: content: application/json: example: orderId: OID-9616-98794 schema: type: object responses: '200': description: '200' content: application/json: example: success: true '409': description: 400 not allowed status content: application/json: example: success: false otoErrorCode: OTO1103 otoErrorMessage: Status of the order is not suitable for the action /rest/v2/orderDetails: get: operationId: orderDetails summary: Get Order Details tags: - Orders description: 'This API endpoint provides detailed information about a specific order. By using this endpoint, you can retrieve comprehensive data about an order including status updates. Request Parameters: Name Required Type Description orderId yes(if there is no otoId or ref1) string Id of the Order. otoId yes(if there is no orderId or ref1) string A unique id of the order generated by OTO. ref1 yes(if there is no orderId or otoId) string ref1 provided while create order.' parameters: - name: orderId in: query required: false schema: type: string responses: '200': description: '200' content: application/json: example: orderId: OID-50919-4346-C-C trackingURL: https://qa.tryoto.com/otoflex-tracking?enc=dXpMZTVNZCtMQStiOENERS83aVBYdHkwMFVPUDNnT21rM3VFbzRZbVREUGpRb3JZVXdpU1B3PT0= packageWeight: 1 orderDocs: [] dcName: OTO Flex originCity: Madinah currency: SAR id: 31078194 amount: 215 customsValue: 215 pickupLocation: WH - Madinah deliveryOptionId: 55266 destinationCity: Madinah amountDue: 0 statusHistory: - date: '2026-02-18T12:15:31' description: Created by m.pisgin enter id: 55113452 status: new - date: '2026-02-18T12:15:31' description: Created by m.pisgin enter id: 55113453 status: assignedToWarehouse - date: '2026-02-18T12:16:05' description: Order has picked by 50919 id: 55113456 status: assignedToWarehouse - date: '2026-02-18T12:16:05' description: Order has picked by 50919 id: 55113457 status: assignedToWarehouse - date: '2026-02-18T12:16:05' description: Order has missing item(s) in picking process id: 55113458 status: assignedToWarehouse - date: '2026-02-18T12:18:00' shipmentId: B1B45E0C description: Shipment created by m.pisgin enter id: 55113466 deliveryCompany: otoDriverApp status: searchingDriver - date: '2026-02-23T11:37:11' shipmentId: B1B45E0C description: Order assigned to New_Driver_new by m.pisgin enter id: 55135729 deliveryCompany: otoDriverApp status: shipmentCreated shipmentId: B1B45E0C success: true customsCurrency: SAR packingStatusHistory: - date: 2026-04-07T11:09 description: Order is shipped within dispatching unit 193 by picker3 packingStatus: shipped - date: '2026-02-18T12:19:16' description: Order is packed by m.pisgin enter packingStatus: packed paymentMethod: paid packageCount: 1 orderDate: '2026-02-18 12:15:31' items: - quantity: 1 hscode: '1268' rowTotal: 200 price: 200 id: 1 sku: Lenovo taxAmount: 15 status: shipmentCreated customer: country: SA address: DMGD2681, 2681, Abu Ammar Al Ghaesh, 6619, Al Barakah Dist., 42333, Madinah, Kingdom of Saudi Arabia city: Madinah postcode: '42333' mobile: '905459149187' lon: 39.57451279 buildingNo: '2681' street: Abu Ammar Al Ghaesh secondaryAddressNumber: '6619' district: Al Barakah Dist. name: Muhammed PSGN id: 1 state: Madinah Province lat: 24.51820876 /rest/v2/checkOrderAvailability: post: operationId: checkOrderAvailability summary: Check Order Availability tags: - Orders description: 'Check Order Availability This API endpoint allows you to check the availability of an order based on the provided orderId and associated ruleIds . Request Parameters Existing Order (with OrderID) The user provides an orderId (increment ID) that is already created in OTO. The system checks the availability of the order and returns the list of locations where it can be fulfilled. By default, the API considers all OMS rules while checking availability. Optionally, the user can provide specific OMS ' requestBody: content: application/json: example: orderId: extra-test-10 ruleIds: - b781d9e6-36da-4cd1-bf7d-f8604561ca6a schema: type: object responses: '200': description: 200- Order ID content: application/json: example: success: true locations: - locationName: Home - John Doe distance: 2510.18 locationCoordinates: lon: 46.70160836 lat: 24.7310685 locationCode: '123452' orderAvailability: 'Yes' '404': description: 404 Not Found content: application/json: example: success: false orderAvailability: 'No' /rest/v2/checkOTODeliveryFee: post: operationId: checkOTODeliveryFee summary: Check OTO Delivery Fee tags: - Shipping Prices description: 'This API endpoint calculates shipping prices offered by OTO rates. By providing the origin city, destination city, and package details (such as weight and dimensions), the API computes the price based on the provided request parameters. Important Note: The prices returned by this API are applicable only to shipping options available under OTO''s contracts. To calculate prices for your own custom contracts, please use the Check Delivery Fee API. You can see the shipping prices of delivery companie' requestBody: content: application/json: example: weight: '3' originCity: Riyadh destinationCity: Jeddah height: 30 width: 30 length: 30 schema: type: object responses: '200': description: '200' content: application/json: example: traceId: 63545-73855-176.88.141.22-c4270220-89f8-4fe4-a645-2f82fb5c499d success: true deliveryCompany: - serviceType: sameDay deliveryOptionName: Deliver Now trackingType: excellent score5: 4.9 deliveryType: toCustomerDoorstep codCharge: 3 pickupCutOffTime: '12:00' maxOrderValue: 5000 maxCODValue: 3000 deliveryOptionId: 7109 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-17' deliveryCompanyName: delivernow estimatedPickupDate: '2025-11-17' returnFee: 16 maxFreeWeight: 15 avgDeliveryTime: Same Day of Pickup Date price: 16 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/delivery-now.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 3.0 SAR plus 0.0% of the amount to be collected - serviceType: lockerDelivery deliveryOptionName: Omni Llama deliveryType: locker codCharge: 8 maxOrderValue: 6000 maxCODValue: 1000 deliveryOptionId: 7252 estimatedDeliveryDate: '2025-11-17' deliveryCompanyName: omnillama estimatedPickupDate: '2025-11-16' checkAllBranches: https://map.omnillama.net/ returnFee: 8 maxFreeWeight: 15 avgDeliveryTime: 1to3WorkingDays price: 8 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/omni-llama.png currency: SAR pickupDropoff: lockerDropOff - serviceType: pudo deliveryOptionName: SPL PUDO trackingType: excellent deliveryType: pickupByCustomer codCharge: 8 maxOrderValue: 10000 maxCODValue: 5000 deliveryOptionId: 7144 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: splUpds estimatedPickupDate: '2025-11-17' checkAllBranches: https://splonline.com.sa/en/branches/ returnFee: 13 maxFreeWeight: 15 avgDeliveryTime: 1 to 2 Working Days price: 13 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/spl.jpg currency: SAR pickupDropoff: dropoffOnly cardOnDeliveryPercentage: 8.0 SAR plus 1.75% of the amount to be collected - serviceType: sameDay deliveryOptionName: Delivery Support score5: 4.4 deliveryType: toCustomerDoorstep codCharge: 3 pickupCutOffTime: '12:00' maxOrderValue: 5000 maxCODValue: 5000 deliveryOptionId: 7417 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: deliverysupport estimatedPickupDate: '2025-11-17' returnFee: 13 maxFreeWeight: 15 avgDeliveryTime: sameDayPickUp price: 13 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/delivery-support.png currency: SAR pickupDropoff: freePickup - serviceType: pudo deliveryOptionName: Aramex PUDO deliveryType: pickupByCustomer codCharge: 6 maxOrderValue: 7000 maxCODValue: 0 deliveryOptionId: 7231 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-21' deliveryCompanyName: aramex estimatedPickupDate: '2025-11-17' checkAllBranches: https://www.aramex.com/sa/en/find-aramex-office returnFee: 15 maxFreeWeight: 10 avgDeliveryTime: 1to5WorkingDays price: 15 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/aramex.png currency: SAR pickupDropoff: dropoffOnly cardOnDeliveryPercentage: 6.0 SAR plus 1.75% of the amount to be collected - serviceType: sameDay deliveryOptionName: Sent score5: 4 deliveryType: toCustomerDoorstep codCharge: 6 pickupCutOffTime: '11:00' maxOrderValue: 5000 maxCODValue: 0 deliveryOptionId: 7490 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: sent estimatedPickupDate: '2025-11-17' returnFee: 16 maxFreeWeight: 15 avgDeliveryTime: sameDayPickUp price: 16 logo: https://storage.googleapis.com/download/storage/v1/b/oto-v2-files/o/files%2F1%2Fimport%2F6ac47fcf-548c-407f-b474-6a241f459a1b.png?generation=1737624142402900&alt=media currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 6.0 SAR plus 2.0% of the amount to be collected - serviceType: express deliveryOptionName: Roadlink Logistics score5: 4.7 deliveryType: toCustomerDoorstep codCharge: 6 pickupCutOffTime: '12:00' maxOrderValue: 2500 maxCODValue: 0 deliveryOptionId: 7990 extraWeightPerKg: 2 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: road-link estimatedPickupDate: '2025-11-17' returnFee: 16 maxFreeWeight: 10 avgDeliveryTime: 1to3WorkingDays price: 16 logo: https://storage.googleapis.com/download/storage/v1/b/oto-v2-files/o/files%2F1%2Fimport%2Fd8fb28f0-2825-472e-9723-57672328ff36.png?generation=1747140104143959&alt=media currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 6.0 SAR plus 2.0% of the amount to be collected - serviceType: pudo deliveryOptionName: SMSA PUDO deliveryType: pickupByCustomer codCharge: 8 maxOrderValue: 6000 maxCODValue: 3750 deliveryOptionId: 7326 extraWeightPerKg: 2 needToVerifyCrDocStatus: true estimatedDeliveryDate: '2025-11-17' deliveryCompanyName: smsaV2 estimatedPickupDate: '2025-11-16' checkAllBranches: https://www.smsaexpress.com/map-location returnFee: 16.65 maxFreeWeight: 15 avgDeliveryTime: 1to5WorkingDays price: 16.65 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/smsa-logo.png currency: SAR pickupDropoff: dropoffOnly cardOnDeliveryPercentage: 8.0 SAR plus 4.0% of the amount to be collected - serviceType: express deliveryOptionName: iMile score5: 3.7 deliveryType: toCustomerDoorstep codCharge: 4 pickupCutOffTime: '18:00' maxOrderValue: 5000 maxCODValue: 5000 deliveryOptionId: 7147 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: imile estimatedPickupDate: '2025-11-17' returnFee: 17 maxFreeWeight: 15 avgDeliveryTime: 2to3WorkingDays price: 17 logo: https://storage.googleapis.com/download/storage/v1/b/oto-v2-files/o/files%2F1%2Fimport%2Fc1261774-f05c-4d74-a279-8dd22bbc4f5d.png?generation=1741461810060293&alt=media currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 4.0 SAR plus 1.0% of the amount to be collected - serviceType: sameDay deliveryOptionName: DELIVERIST Same Day trackingType: excellent score5: 4.9 deliveryType: toCustomerDoorstep codCharge: 3 pickupCutOffTime: '12:00' maxOrderValue: 3750 maxCODValue: 2500 deliveryOptionId: 7110 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-20' deliveryCompanyName: deliveristLogestechs estimatedPickupDate: '2025-11-17' returnFee: 17 maxFreeWeight: 10 avgDeliveryTime: sameDayPickUp price: 17 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/deliverist.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 3.0 SAR plus 2.5% of the amount to be collected - serviceType: express deliveryOptionName: Shipa Delivery trackingType: excellent score5: 3.5 deliveryType: toCustomerDoorstep codCharge: 3 pickupCutOffTime: '12:00' maxOrderValue: 3750 maxCODValue: 3750 deliveryOptionId: 7098 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-20' deliveryCompanyName: shipaV2 estimatedPickupDate: '2025-11-17' returnFee: 17 maxFreeWeight: 10 avgDeliveryTime: 1 to 3 Working Days price: 17 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/shipa.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 3.0 SAR plus 0.8% of the amount to be collected - serviceType: express deliveryOptionName: J&T Express trackingType: excellent score5: 5 deliveryType: toCustomerDoorstep codCharge: 8 pickupCutOffTime: '16:00' maxOrderValue: 6000 maxCODValue: 3000 deliveryOptionId: 7100 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-22' deliveryCompanyName: jtexpress estimatedPickupDate: '2025-11-18' checkAllBranches: https://www.jtexpress.me/KSA/service-points returnFee: 18 maxFreeWeight: 10 avgDeliveryTime: 1 to 2 Working Days price: 18 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/jandt.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 8.0 SAR plus 0.9% of the amount to be collected - serviceType: sameDay deliveryOptionName: Yamamah trackingType: excellent deliveryType: toCustomerDoorstep codCharge: 3 pickupCutOffTime: '11:00' maxOrderValue: 5000 maxCODValue: 5000 deliveryOptionId: 8530 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: yamamahLogestechs estimatedPickupDate: '2025-11-17' returnFee: 18 maxFreeWeight: 15 avgDeliveryTime: Same Day of Pickup Date price: 18 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/yamamah-express.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 3.0 SAR plus 2.5% of the amount to be collected - serviceType: express deliveryOptionName: Aymakan trackingType: excellent score5: 4.4 deliveryType: toCustomerDoorstep codCharge: 6 pickupCutOffTime: '17:00' maxOrderValue: 5000 maxCODValue: 3000 deliveryOptionId: 7102 extraWeightPerKg: 2 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: aymakan estimatedPickupDate: '2025-11-17' returnFee: 18.9 maxFreeWeight: 10 avgDeliveryTime: 1to3WorkingDays price: 18.9 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/aymakan.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 6.0 SAR plus 1.0% of the amount to be collected - serviceType: express deliveryOptionName: Thabit Logistics trackingType: excellent score5: 4.5 deliveryType: toCustomerDoorstep codCharge: 6 pickupCutOffTime: '13:00' maxOrderValue: 3750 maxCODValue: 0 deliveryOptionId: 7099 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: thabit estimatedPickupDate: '2025-11-17' returnFee: 19 maxFreeWeight: 10 avgDeliveryTime: 1to2WorkingDays price: 19 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/thabit.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 6.0 SAR plus 0.0% of the amount to be collected - serviceType: coldDelivery deliveryOptionName: Delex trackingType: excellent score5: 3.8 deliveryType: toCustomerDoorstep codCharge: 8 pickupCutOffTime: '10:00' maxOrderValue: 500 maxCODValue: 500 deliveryOptionId: 7113 extraWeightPerKg: 2 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: delexLogestechs estimatedPickupDate: '2025-11-17' returnFee: 19 maxFreeWeight: 12 avgDeliveryTime: 1to3WorkingDays price: 19 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/delex.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 8.0 SAR plus 0.0% of the amount to be collected - serviceType: sameDay deliveryOptionName: Linkers Express deliveryType: toCustomerDoorstep codCharge: 0 pickupCutOffTime: '12:00' maxOrderValue: 2500 maxCODValue: 0 deliveryOptionId: 7949 extraWeightPerKg: 10 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: linkers-express estimatedPickupDate: '2025-11-17' returnFee: 19 maxFreeWeight: 2 avgDeliveryTime: sameDayPickUp price: 19 logo: https://storage.googleapis.com/download/storage/v1/b/oto-v2-files/o/files%2F1%2Fimport%2F6e03c097-102f-4716-a99a-c2834824385a.png?generation=1742721672764745&alt=media currency: SAR pickupDropoff: freePickup - serviceType: express deliveryOptionName: Aramex trackingType: excellent score5: 4.7 deliveryType: toCustomerDoorstep codCharge: 6 pickupCutOffTime: '14:00' maxOrderValue: 7000 maxCODValue: 3750 deliveryOptionId: 7097 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-22' deliveryCompanyName: aramex estimatedPickupDate: '2025-11-17' checkAllBranches: https://www.aramex.com/sa/en/find-aramex-office returnFee: 19.26 maxFreeWeight: 10 avgDeliveryTime: 1 to 2 Working Days price: 19.26 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/aramex.png currency: SAR pickupDropoff: freePickupDropoff cardOnDeliveryPercentage: 6.0 SAR plus 1.75% of the amount to be collected - serviceType: express deliveryOptionName: Naqel Express trackingType: excellent score5: 4.6 deliveryType: toCustomerDoorstep codCharge: 6 pickupCutOffTime: '16:00' maxOrderValue: 5000 maxCODValue: 3500 deliveryOptionId: 7112 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-22' deliveryCompanyName: naqel estimatedPickupDate: '2025-11-17' returnFee: 19.8 maxFreeWeight: 10 avgDeliveryTime: 1to4WorkingDays price: 19.8 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/naqel.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 6.0 SAR plus 0.0% of the amount to be collected - serviceType: express deliveryOptionName: SMSA trackingType: excellent score5: 3.9 deliveryType: toCustomerDoorstep codCharge: 8 maxOrderValue: 6000 maxCODValue: 3750 deliveryOptionId: 7101 extraWeightPerKg: 1 needToVerifyCrDocStatus: true estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: secom estimatedPickupDate: '2025-11-16' checkAllBranches: https://www.smsaexpress.com/map-location returnFee: 19.98 maxFreeWeight: 15 avgDeliveryTime: 1to5WorkingDays price: 19.98 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/smsa-logo.png currency: SAR pickupDropoff: dropoffOnly cardOnDeliveryPercentage: 8.0 SAR plus 4.0% of the amount to be collected - serviceType: express deliveryOptionName: UPS trackingType: excellent score5: 5 deliveryType: toCustomerDoorstep codCharge: 8 pickupCutOffTime: '14:00' maxOrderValue: 5000 maxCODValue: 2000 deliveryOptionId: 7136 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-17' deliveryCompanyName: ups2 estimatedPickupDate: '2025-11-16' returnFee: 20 maxFreeWeight: 15 avgDeliveryTime: 1to5WorkingDays price: 20 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/ups.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 8.0 SAR plus 0.0% of the amount to be collected - serviceType: coldDelivery deliveryOptionName: Adwar Cold score5: 5 deliveryType: toCustomerDoorstep codCharge: 6 pickupCutOffTime: '12:00' maxOrderValue: 1000 maxCODValue: 1000 deliveryOptionId: 7410 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: adwarLogestechs estimatedPickupDate: '2025-11-17' returnFee: 21 maxFreeWeight: 15 avgDeliveryTime: 1to3WorkingDays price: 21 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/adwar.png currency: SAR pickupDropoff: freePickup - serviceType: heavyAndBulky deliveryOptionName: Aramex Heavy & Bulky score5: 4.2 deliveryType: toCustomerDoorstep codCharge: 0 pickupCutOffTime: '12:00' maxOrderValue: 5000 maxCODValue: 0 deliveryOptionId: 7898 estimatedDeliveryDate: '2025-11-21' deliveryCompanyName: aramex estimatedPickupDate: '2025-11-17' returnFee: 27.26 avgDeliveryTime: 1 to 2 Working Days price: 27.26 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/aramex.png currency: SAR pickupDropoff: freePickup - serviceType: heavyAndBulky deliveryOptionName: Flow PL trackingType: excellent deliveryType: toCustomerDoorstep codCharge: 0 pickupCutOffTime: '13:00' maxOrderValue: 20000 maxCODValue: 0 deliveryOptionId: 7106 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: flowpl estimatedPickupDate: '2025-11-17' returnFee: 52.2 maxFreeWeight: 30 avgDeliveryTime: 1to5WorkingDays price: 52.2 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/flow.png currency: SAR pickupDropoff: freePickup /rest/v2/checkDeliveryFee: post: operationId: checkDeliveryFee summary: Check Delivery Fee tags: - Shipping Prices description: 'This API endpoint calculates contract-based pricing using your own rates. By providing the origin city, destination city, and package details such as weight and dimensions, the API determines the price based on the supplied parameters. Important Note: The prices returned by this API apply exclusively to your own contracts. Request Parameters: Name Required Type Description originCity yes string pickup city destinationCity yes string destination city weight yes number weight of package(kg) totalD' requestBody: content: application/json: example: weight: '50' totalDue: 10 originCity: Riyadh destinationCity: Jeddah height: 170 width: 50 length: 50 schema: type: object responses: '200': description: '200' content: application/json: example: traceId: 63545-73855-176.88.141.22-c4270220-89f8-4fe4-a645-2f82fb5c499d success: true deliveryCompany: - serviceType: sameDay deliveryOptionName: Deliver Now trackingType: excellent score5: 4.9 deliveryType: toCustomerDoorstep codCharge: 3 pickupCutOffTime: '12:00' maxOrderValue: 5000 maxCODValue: 3000 deliveryOptionId: 7109 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-17' deliveryCompanyName: delivernow estimatedPickupDate: '2025-11-17' returnFee: 16 maxFreeWeight: 15 avgDeliveryTime: Same Day of Pickup Date price: 16 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/delivery-now.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 3.0 SAR plus 0.0% of the amount to be collected - serviceType: lockerDelivery deliveryOptionName: Omni Llama deliveryType: locker codCharge: 8 maxOrderValue: 6000 maxCODValue: 1000 deliveryOptionId: 7252 estimatedDeliveryDate: '2025-11-17' deliveryCompanyName: omnillama estimatedPickupDate: '2025-11-16' checkAllBranches: https://map.omnillama.net/ returnFee: 8 maxFreeWeight: 15 avgDeliveryTime: 1to3WorkingDays price: 8 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/omni-llama.png currency: SAR pickupDropoff: lockerDropOff - serviceType: pudo deliveryOptionName: SPL PUDO trackingType: excellent deliveryType: pickupByCustomer codCharge: 8 maxOrderValue: 10000 maxCODValue: 5000 deliveryOptionId: 7144 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: splUpds estimatedPickupDate: '2025-11-17' checkAllBranches: https://splonline.com.sa/en/branches/ returnFee: 13 maxFreeWeight: 15 avgDeliveryTime: 1 to 2 Working Days price: 13 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/spl.jpg currency: SAR pickupDropoff: dropoffOnly cardOnDeliveryPercentage: 8.0 SAR plus 1.75% of the amount to be collected - serviceType: sameDay deliveryOptionName: Delivery Support score5: 4.4 deliveryType: toCustomerDoorstep codCharge: 3 pickupCutOffTime: '12:00' maxOrderValue: 5000 maxCODValue: 5000 deliveryOptionId: 7417 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: deliverysupport estimatedPickupDate: '2025-11-17' returnFee: 13 maxFreeWeight: 15 avgDeliveryTime: sameDayPickUp price: 13 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/delivery-support.png currency: SAR pickupDropoff: freePickup - serviceType: pudo deliveryOptionName: Aramex PUDO deliveryType: pickupByCustomer codCharge: 6 maxOrderValue: 7000 maxCODValue: 0 deliveryOptionId: 7231 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-21' deliveryCompanyName: aramex estimatedPickupDate: '2025-11-17' checkAllBranches: https://www.aramex.com/sa/en/find-aramex-office returnFee: 15 maxFreeWeight: 10 avgDeliveryTime: 1to5WorkingDays price: 15 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/aramex.png currency: SAR pickupDropoff: dropoffOnly cardOnDeliveryPercentage: 6.0 SAR plus 1.75% of the amount to be collected - serviceType: sameDay deliveryOptionName: Sent score5: 4 deliveryType: toCustomerDoorstep codCharge: 6 pickupCutOffTime: '11:00' maxOrderValue: 5000 maxCODValue: 0 deliveryOptionId: 7490 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: sent estimatedPickupDate: '2025-11-17' returnFee: 16 maxFreeWeight: 15 avgDeliveryTime: sameDayPickUp price: 16 logo: https://storage.googleapis.com/download/storage/v1/b/oto-v2-files/o/files%2F1%2Fimport%2F6ac47fcf-548c-407f-b474-6a241f459a1b.png?generation=1737624142402900&alt=media currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 6.0 SAR plus 2.0% of the amount to be collected - serviceType: express deliveryOptionName: Roadlink Logistics score5: 4.7 deliveryType: toCustomerDoorstep codCharge: 6 pickupCutOffTime: '12:00' maxOrderValue: 2500 maxCODValue: 0 deliveryOptionId: 7990 extraWeightPerKg: 2 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: road-link estimatedPickupDate: '2025-11-17' returnFee: 16 maxFreeWeight: 10 avgDeliveryTime: 1to3WorkingDays price: 16 logo: https://storage.googleapis.com/download/storage/v1/b/oto-v2-files/o/files%2F1%2Fimport%2Fd8fb28f0-2825-472e-9723-57672328ff36.png?generation=1747140104143959&alt=media currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 6.0 SAR plus 2.0% of the amount to be collected - serviceType: pudo deliveryOptionName: SMSA PUDO deliveryType: pickupByCustomer codCharge: 8 maxOrderValue: 6000 maxCODValue: 3750 deliveryOptionId: 7326 extraWeightPerKg: 2 needToVerifyCrDocStatus: true estimatedDeliveryDate: '2025-11-17' deliveryCompanyName: smsaV2 estimatedPickupDate: '2025-11-16' checkAllBranches: https://www.smsaexpress.com/map-location returnFee: 16.65 maxFreeWeight: 15 avgDeliveryTime: 1to5WorkingDays price: 16.65 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/smsa-logo.png currency: SAR pickupDropoff: dropoffOnly cardOnDeliveryPercentage: 8.0 SAR plus 4.0% of the amount to be collected - serviceType: express deliveryOptionName: iMile score5: 3.7 deliveryType: toCustomerDoorstep codCharge: 4 pickupCutOffTime: '18:00' maxOrderValue: 5000 maxCODValue: 5000 deliveryOptionId: 7147 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: imile estimatedPickupDate: '2025-11-17' returnFee: 17 maxFreeWeight: 15 avgDeliveryTime: 2to3WorkingDays price: 17 logo: https://storage.googleapis.com/download/storage/v1/b/oto-v2-files/o/files%2F1%2Fimport%2Fc1261774-f05c-4d74-a279-8dd22bbc4f5d.png?generation=1741461810060293&alt=media currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 4.0 SAR plus 1.0% of the amount to be collected - serviceType: sameDay deliveryOptionName: DELIVERIST Same Day trackingType: excellent score5: 4.9 deliveryType: toCustomerDoorstep codCharge: 3 pickupCutOffTime: '12:00' maxOrderValue: 3750 maxCODValue: 2500 deliveryOptionId: 7110 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-20' deliveryCompanyName: deliveristLogestechs estimatedPickupDate: '2025-11-17' returnFee: 17 maxFreeWeight: 10 avgDeliveryTime: sameDayPickUp price: 17 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/deliverist.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 3.0 SAR plus 2.5% of the amount to be collected - serviceType: express deliveryOptionName: Shipa Delivery trackingType: excellent score5: 3.5 deliveryType: toCustomerDoorstep codCharge: 3 pickupCutOffTime: '12:00' maxOrderValue: 3750 maxCODValue: 3750 deliveryOptionId: 7098 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-20' deliveryCompanyName: shipaV2 estimatedPickupDate: '2025-11-17' returnFee: 17 maxFreeWeight: 10 avgDeliveryTime: 1 to 3 Working Days price: 17 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/shipa.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 3.0 SAR plus 0.8% of the amount to be collected - serviceType: express deliveryOptionName: J&T Express trackingType: excellent score5: 5 deliveryType: toCustomerDoorstep codCharge: 8 pickupCutOffTime: '16:00' maxOrderValue: 6000 maxCODValue: 3000 deliveryOptionId: 7100 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-22' deliveryCompanyName: jtexpress estimatedPickupDate: '2025-11-18' checkAllBranches: https://www.jtexpress.me/KSA/service-points returnFee: 18 maxFreeWeight: 10 avgDeliveryTime: 1 to 2 Working Days price: 18 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/jandt.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 8.0 SAR plus 0.9% of the amount to be collected - serviceType: sameDay deliveryOptionName: Yamamah trackingType: excellent deliveryType: toCustomerDoorstep codCharge: 3 pickupCutOffTime: '11:00' maxOrderValue: 5000 maxCODValue: 5000 deliveryOptionId: 8530 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: yamamahLogestechs estimatedPickupDate: '2025-11-17' returnFee: 18 maxFreeWeight: 15 avgDeliveryTime: Same Day of Pickup Date price: 18 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/yamamah-express.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 3.0 SAR plus 2.5% of the amount to be collected - serviceType: express deliveryOptionName: Aymakan trackingType: excellent score5: 4.4 deliveryType: toCustomerDoorstep codCharge: 6 pickupCutOffTime: '17:00' maxOrderValue: 5000 maxCODValue: 3000 deliveryOptionId: 7102 extraWeightPerKg: 2 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: aymakan estimatedPickupDate: '2025-11-17' returnFee: 18.9 maxFreeWeight: 10 avgDeliveryTime: 1to3WorkingDays price: 18.9 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/aymakan.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 6.0 SAR plus 1.0% of the amount to be collected - serviceType: express deliveryOptionName: Thabit Logistics trackingType: excellent score5: 4.5 deliveryType: toCustomerDoorstep codCharge: 6 pickupCutOffTime: '13:00' maxOrderValue: 3750 maxCODValue: 0 deliveryOptionId: 7099 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: thabit estimatedPickupDate: '2025-11-17' returnFee: 19 maxFreeWeight: 10 avgDeliveryTime: 1to2WorkingDays price: 19 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/thabit.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 6.0 SAR plus 0.0% of the amount to be collected - serviceType: coldDelivery deliveryOptionName: Delex trackingType: excellent score5: 3.8 deliveryType: toCustomerDoorstep codCharge: 8 pickupCutOffTime: '10:00' maxOrderValue: 500 maxCODValue: 500 deliveryOptionId: 7113 extraWeightPerKg: 2 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: delexLogestechs estimatedPickupDate: '2025-11-17' returnFee: 19 maxFreeWeight: 12 avgDeliveryTime: 1to3WorkingDays price: 19 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/delex.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 8.0 SAR plus 0.0% of the amount to be collected - serviceType: sameDay deliveryOptionName: Linkers Express deliveryType: toCustomerDoorstep codCharge: 0 pickupCutOffTime: '12:00' maxOrderValue: 2500 maxCODValue: 0 deliveryOptionId: 7949 extraWeightPerKg: 10 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: linkers-express estimatedPickupDate: '2025-11-17' returnFee: 19 maxFreeWeight: 2 avgDeliveryTime: sameDayPickUp price: 19 logo: https://storage.googleapis.com/download/storage/v1/b/oto-v2-files/o/files%2F1%2Fimport%2F6e03c097-102f-4716-a99a-c2834824385a.png?generation=1742721672764745&alt=media currency: SAR pickupDropoff: freePickup - serviceType: express deliveryOptionName: Aramex trackingType: excellent score5: 4.7 deliveryType: toCustomerDoorstep codCharge: 6 pickupCutOffTime: '14:00' maxOrderValue: 7000 maxCODValue: 3750 deliveryOptionId: 7097 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-22' deliveryCompanyName: aramex estimatedPickupDate: '2025-11-17' checkAllBranches: https://www.aramex.com/sa/en/find-aramex-office returnFee: 19.26 maxFreeWeight: 10 avgDeliveryTime: 1 to 2 Working Days price: 19.26 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/aramex.png currency: SAR pickupDropoff: freePickupDropoff cardOnDeliveryPercentage: 6.0 SAR plus 1.75% of the amount to be collected - serviceType: express deliveryOptionName: Naqel Express trackingType: excellent score5: 4.6 deliveryType: toCustomerDoorstep codCharge: 6 pickupCutOffTime: '16:00' maxOrderValue: 5000 maxCODValue: 3500 deliveryOptionId: 7112 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-22' deliveryCompanyName: naqel estimatedPickupDate: '2025-11-17' returnFee: 19.8 maxFreeWeight: 10 avgDeliveryTime: 1to4WorkingDays price: 19.8 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/naqel.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 6.0 SAR plus 0.0% of the amount to be collected - serviceType: express deliveryOptionName: SMSA trackingType: excellent score5: 3.9 deliveryType: toCustomerDoorstep codCharge: 8 maxOrderValue: 6000 maxCODValue: 3750 deliveryOptionId: 7101 extraWeightPerKg: 1 needToVerifyCrDocStatus: true estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: secom estimatedPickupDate: '2025-11-16' checkAllBranches: https://www.smsaexpress.com/map-location returnFee: 19.98 maxFreeWeight: 15 avgDeliveryTime: 1to5WorkingDays price: 19.98 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/smsa-logo.png currency: SAR pickupDropoff: dropoffOnly cardOnDeliveryPercentage: 8.0 SAR plus 4.0% of the amount to be collected - serviceType: express deliveryOptionName: UPS trackingType: excellent score5: 5 deliveryType: toCustomerDoorstep codCharge: 8 pickupCutOffTime: '14:00' maxOrderValue: 5000 maxCODValue: 2000 deliveryOptionId: 7136 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-17' deliveryCompanyName: ups2 estimatedPickupDate: '2025-11-16' returnFee: 20 maxFreeWeight: 15 avgDeliveryTime: 1to5WorkingDays price: 20 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/ups.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 8.0 SAR plus 0.0% of the amount to be collected - serviceType: coldDelivery deliveryOptionName: Adwar Cold score5: 5 deliveryType: toCustomerDoorstep codCharge: 6 pickupCutOffTime: '12:00' maxOrderValue: 1000 maxCODValue: 1000 deliveryOptionId: 7410 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: adwarLogestechs estimatedPickupDate: '2025-11-17' returnFee: 21 maxFreeWeight: 15 avgDeliveryTime: 1to3WorkingDays price: 21 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/adwar.png currency: SAR pickupDropoff: freePickup - serviceType: heavyAndBulky deliveryOptionName: Aramex Heavy & Bulky score5: 4.2 deliveryType: toCustomerDoorstep codCharge: 0 pickupCutOffTime: '12:00' maxOrderValue: 5000 maxCODValue: 0 deliveryOptionId: 7898 estimatedDeliveryDate: '2025-11-21' deliveryCompanyName: aramex estimatedPickupDate: '2025-11-17' returnFee: 27.26 avgDeliveryTime: 1 to 2 Working Days price: 27.26 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/aramex.png currency: SAR pickupDropoff: freePickup - serviceType: heavyAndBulky deliveryOptionName: Flow PL trackingType: excellent deliveryType: toCustomerDoorstep codCharge: 0 pickupCutOffTime: '13:00' maxOrderValue: 20000 maxCODValue: 0 deliveryOptionId: 7106 extraWeightPerKg: 1 estimatedDeliveryDate: '2025-11-18' deliveryCompanyName: flowpl estimatedPickupDate: '2025-11-17' returnFee: 52.2 maxFreeWeight: 30 avgDeliveryTime: 1to5WorkingDays price: 52.2 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/flow.png currency: SAR pickupDropoff: freePickup /rest/v2/getDeliveryFee: post: operationId: getDeliveryFee summary: Get Delivery Fee tags: - Shipping Prices description: 'This API endpoint calculates the shipping fee for a specific order in OTO. It offers two methods for price calculation: By Order ID: Provide the orderId, and the API will return all possible shipping rates for each defined shipping company. By Delivery Option ID: Provide the deliveryOptionId to calculate the shipping fee for a specific shipping company. You can get this information from checkOTODeliveryFee or from checkDeliveryFee endpoints. Request Parameters: Name Required Type Description ord' requestBody: content: application/json: example: orderId: OID-22700-1006 schema: type: object responses: '200': description: 200 all options content: application/json: example: success: true deliveryCompany: - serviceType: pudo deliveryOptionName: SPL PUDO trackingType: excellent codCharge: 8 maxOrderValue: 10000 maxCODValue: 5000 deliveryOptionId: 6927 extraWeightPerKg: 1 deliveryCompanyName: splUpds returnFee: 13 maxFreeWeight: 15 avgDeliveryTime: 1 to 2 Working Days price: 13 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/spl.jpg currency: SAR pickupDropoff: dropoffOnly cardOnDeliveryPercentage: 8.0 SAR plus 1.75% of the amount to be collected - serviceType: pudo deliveryOptionName: SPL PUDO trackingType: excellent codCharge: 8 maxOrderValue: 10000 maxCODValue: 5000 deliveryOptionId: 6925 extraWeightPerKg: 1 deliveryCompanyName: splUpds returnFee: 14 maxFreeWeight: 15 avgDeliveryTime: 1 to 2 Working Days price: 14 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/spl.jpg currency: SAR pickupDropoff: dropoffOnly cardOnDeliveryPercentage: 8.0 SAR plus 1.75% of the amount to be collected - serviceType: pudo deliveryOptionName: SPL PUDO trackingType: excellent codCharge: 8 maxOrderValue: 10000 maxCODValue: 5000 deliveryOptionId: 6926 extraWeightPerKg: 1 deliveryCompanyName: splUpds returnFee: 14 maxFreeWeight: 15 avgDeliveryTime: 1 to 2 Working Days price: 14 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/spl.jpg currency: SAR pickupDropoff: dropoffOnly cardOnDeliveryPercentage: 8.0 SAR plus 1.75% of the amount to be collected - serviceType: express deliveryOptionName: Shipa Delivery trackingType: excellent codCharge: 3 pickupCutOffTime: '12:00' maxOrderValue: 3750 maxCODValue: 3750 deliveryOptionId: 5552 extraWeightPerKg: 1 deliveryCompanyName: shipaV2 returnFee: 17 maxFreeWeight: 10 avgDeliveryTime: 1 to 3 Working Days price: 17 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/shipa.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 3.0 SAR plus 0.8% of the amount to be collected - serviceType: express deliveryOptionName: Aramex trackingType: excellent codCharge: 6 pickupCutOffTime: '14:00' maxOrderValue: 7000 maxCODValue: 5000 deliveryOptionId: 5551 extraWeightPerKg: 1 deliveryCompanyName: aramex returnFee: 18 maxFreeWeight: 10 avgDeliveryTime: 1 to 2 Working Days price: 18 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/aramex.png currency: SAR pickupDropoff: freePickupDropoff cardOnDeliveryPercentage: 6.0 SAR plus 1.75% of the amount to be collected - serviceType: express deliveryOptionName: Shipa Delivery trackingType: excellent codCharge: 3 pickupCutOffTime: '12:00' maxOrderValue: 3750 maxCODValue: 3750 deliveryOptionId: 5489 extraWeightPerKg: 1 deliveryCompanyName: shipaV2 returnFee: 18 maxFreeWeight: 10 avgDeliveryTime: 1 to 3 Working Days price: 18 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/shipa.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 3.0 SAR plus 0.8% of the amount to be collected - serviceType: express deliveryOptionName: J&T Express trackingType: excellent codCharge: 8 pickupCutOffTime: '16:00' maxOrderValue: 6000 maxCODValue: 3000 deliveryOptionId: 5555 extraWeightPerKg: 1 deliveryCompanyName: jtexpress returnFee: 18 maxFreeWeight: 10 avgDeliveryTime: 1 to 2 Working Days price: 18 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/jandt.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 8.0 SAR plus 0.9% of the amount to be collected - serviceType: express deliveryOptionName: Aymakan trackingType: excellent codCharge: 6 pickupCutOffTime: '17:00' maxOrderValue: 5000 maxCODValue: 3000 deliveryOptionId: 5557 extraWeightPerKg: 2 deliveryCompanyName: aymakan returnFee: 18 maxFreeWeight: 10 avgDeliveryTime: 1to3WorkingDays price: 18 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/aymakan.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 6.0 SAR plus 1.0% of the amount to be collected - serviceType: sameDay deliveryOptionName: Deliver Now trackingType: excellent codCharge: 3 pickupCutOffTime: '12:00' maxOrderValue: 5000 maxCODValue: 3000 deliveryOptionId: 5564 extraWeightPerKg: 1 deliveryCompanyName: delivernow returnFee: 18 maxFreeWeight: 15 avgDeliveryTime: Same Day of Pickup Date price: 18 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/delivery-now.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 3.0 SAR plus 0.0% of the amount to be collected - serviceType: express deliveryOptionName: Thabit Logistics trackingType: excellent codCharge: 6 pickupCutOffTime: '13:00' maxOrderValue: 3750 maxCODValue: 3750 deliveryOptionId: 5554 extraWeightPerKg: 1 deliveryCompanyName: thabit returnFee: 19 maxFreeWeight: 10 avgDeliveryTime: 1to2WorkingDays price: 19 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/thabit.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 6.0 SAR plus 0.0% of the amount to be collected - serviceType: express deliveryOptionName: Aymakan trackingType: excellent codCharge: 6 pickupCutOffTime: '17:00' maxOrderValue: 5000 maxCODValue: 3000 deliveryOptionId: 5494 extraWeightPerKg: 2 deliveryCompanyName: aymakan returnFee: 19 maxFreeWeight: 10 avgDeliveryTime: 1to3WorkingDays price: 19 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/aymakan.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 6.0 SAR plus 1.0% of the amount to be collected - serviceType: coldDelivery deliveryOptionName: Delex trackingType: excellent codCharge: 7 pickupCutOffTime: '10:00' maxOrderValue: 500 maxCODValue: 500 deliveryOptionId: 5568 extraWeightPerKg: 2 deliveryCompanyName: delexLogestechs returnFee: 19 maxFreeWeight: 12 avgDeliveryTime: 1to3WorkingDays price: 19 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/delex.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 7.0 SAR plus 0.0% of the amount to be collected - serviceType: sameDay deliveryOptionName: Deliver Now trackingType: excellent codCharge: 3 pickupCutOffTime: '12:00' maxOrderValue: 5000 maxCODValue: 3000 deliveryOptionId: 5501 extraWeightPerKg: 1 deliveryCompanyName: delivernow returnFee: 19 maxFreeWeight: 15 avgDeliveryTime: Same Day of Pickup Date price: 19 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/delivery-now.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 3.0 SAR plus 0.0% of the amount to be collected - serviceType: express deliveryOptionName: Thabit Logistics trackingType: excellent codCharge: 6 pickupCutOffTime: '13:00' maxOrderValue: 3750 maxCODValue: 3750 deliveryOptionId: 5491 extraWeightPerKg: 1 deliveryCompanyName: thabit returnFee: 20 maxFreeWeight: 10 avgDeliveryTime: 1to2WorkingDays price: 20 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/thabit.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 6.0 SAR plus 0.0% of the amount to be collected - serviceType: express deliveryOptionName: J&T Express trackingType: excellent codCharge: 8 pickupCutOffTime: '16:00' maxOrderValue: 6000 maxCODValue: 3000 deliveryOptionId: 5492 extraWeightPerKg: 1 deliveryCompanyName: jtexpress returnFee: 20 maxFreeWeight: 10 avgDeliveryTime: 1 to 2 Working Days price: 20 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/jandt.png currency: SAR pickupDropoff: freePickup cardOnDeliveryPercentage: 8.0 SAR plus 0.9% of the amount to be collected - serviceType: express deliveryOptionName: SMSA trackingType: excellent codCharge: 8 maxOrderValue: 6000 maxCODValue: 3750 deliveryOptionId: 5556 extraWeightPerKg: 1 deliveryCompanyName: secom returnFee: 20 maxFreeWeight: 15 avgDeliveryTime: 1to5WorkingDays price: 20 logo: https://storage.googleapis.com/tryoto-public/delivery-logo/smsa-logo.png currency: SAR pickupDropoff: dropoffOnly cardOnDeliveryPercentage: 8.0 SAR plus 0.0% of the amount to be collected '409': description: 400 could not find an option with delivery company content: application/json: example: success: false otoErrorCode: OTO1004 otoErrorMessage: There is no available delivery company setting /rest/v2/getDeliveryOptions: get: operationId: getDeliveryOptions summary: Get Delivery Options tags: - Shipping Prices description: 'This API endpoint allows you to check coverage for your active delivery company contracts by providing either the orderId or the city details. Follow these guidelines: Important: Do not include both orderId and city in the same request, as this will result in an error. Ensure your request contains only one of these parameters to proceed successfully. Request Parameters: Name Required Type Description city no string Check coverage in the city. orderId no string Check coverage for that specific or' responses: '200': description: '200' content: application/json: example: success: true options: - name: Tam deliveryOptionId: 4 integrationName: tam - name: Aymakan deliveryOptionId: 20 webhookUrl: https://login.tryoto.com/shipmentStatus?token=7NhG6Fhsk8MMoLYBMmMo&dc=aymakan - name: Aramex deliveryOptionId: 22 webhookUrl: https://login.tryoto.com/shipmentStatus?token=TMcFSCSFSD3ctGpIk7wX&dc=aramex /rest/v2/createShipment: post: operationId: createShipment summary: Create Shipment tags: - Shipments description: 'This API endpoint allows you create shipment for orders, while creating shipments need a valid delivery option id. You can get valid delivery options in two ways: Delivery Options with OTO rates : No contracted delivery companies or activation is required. OTO offers a range of delivery company options, which are available for use. You can view these options and their associated fees by using the Check OTO Delivery Fee endpoint. Delivery Options with your own rates: In this case, you already hav' requestBody: content: application/json: example: orderId: '1232464' deliveryOptionId: '12345' schema: type: object responses: '200': description: '200' content: application/json: example: success: true message: create shipment request is received. '404': description: '404' content: application/json: example: success: false otoErrorCode: OTO1002 otoErrorMessage: Order is not exist '400': description: 400 - credit content: application/json: example: success: false otoErrorCode: OTO1006 otoErrorMessage: Credit is not enough /rest/v2/cancelShipment: post: operationId: cancelShipment summary: Cancel Shipment tags: - Shipments description: 'This API initiates the cancellation process with the shipping company. Shipments cannot be canceled once they have reached the " picked up " status. Some shipping companies do not support shipment cancellations, which may result in a failure response indicating the shipment could not be canceled. Request Parameters: Name Required Type Description orderId yes( if there is no otoId) string orderId from which shipment was created otoId yes( if there is no orderId) string Unique id created by OTO. s' requestBody: content: application/json: example: orderId: 24543ec5-1dd2-46a1-b4b3-d3bd47837665 shipmentId: F21SACO00227700000 schema: type: object responses: '200': description: '200' content: application/json: example: success: true '400': description: '400' content: application/json: example: success: false otoErrorCode: OTO1079 otoErrorMessage: Shipment id is required '409': description: '400' content: application/json: example: success: false otoErrorCode: OTO1082 otoErrorMessage: Order Status is not allowed for cancel shipment /rest/v2/createReturnShipment: post: operationId: createReturnShipment summary: Create Return Shipment tags: - Return Shipments description: 'This API endpoint creates a new return order for delivered forward orders. A new return order ID is generated by appending a suffix (e.g. -R1, -R2) to the original order ID and is returned in the response for return tracking and related operations. Return processing is handled on an item basis, meaning only the specified items are included in the return order and used for all return-related calculations. Example: Original order ID: ORD-1234 Order status: delivered Result: A new return order is c' requestBody: content: application/json: example: orderId: '202111080914' deliveryOptionId: '156' pickupLocationCode: wh1 items: - quantity: '1' sku: SKU045857 schema: type: object responses: '200': description: '200' content: application/json: example: success: true returnOrderId: 2204749035-R1 message: A new return order is created for return shipment /rest/v2/getReturnLink: post: operationId: getReturnLink summary: Get Return Link tags: - Return Shipments description: 'This API endpoint generates a link that serves as a return request portal for end customers. The portal allows customers to initiate return requests seamlessly. Additionally, the portal''s details and settings can be customized in the OTO Dashboard to align with your specific requirements. Request Parameters: Name Required Type Description orderId yes string The order for which a return request is requested.' requestBody: content: application/json: example: orderId: '123' schema: type: object responses: '200': description: '200' content: application/json: example: success: true returnLink: https://app.tryoto.com/sms/return-request?key=Y3RnL0MwMTJiTFYwOVo5UnhGS0lOcU0xcnhBclRVMGwzTENGcjd4bEZCST0= '404': description: '404' content: application/json: example: success: false otoErrorCode: OTO1002 otoErrorMessage: Order is not exist '400': description: '400' content: application/json: example: success: false otoErrorCode: OTO1001 otoErrorMessage: Invalid or missing order Id /rest/v2/getReturnDetails: post: operationId: getReturnDetails summary: Get Return Details tags: - Return Shipments description: 'This API endpoint allows you to retrieve detailed information about the reverse shipment associated with a specific order. Reverse shipments are typically created when an order is returned or exchanged. This endpoint provides comprehensive insights into the reverse shipment process, including: return reason, returned items etc. Request Parameters: Name Required Type Description orderId yes string Id of the order Response Parameters: returnedItems: An array showing information about items to be r' requestBody: content: application/json: example: orderId: OID-9616-1008 schema: type: object responses: '200': description: 200 OK content: application/json: example: returnLocationCode: Riyadh orderId: OID-9616-1008 returnReason: Damaged items: - sku: '123456' quantityOrdered: 1 status: returned '401': description: 401 Unauthorized content: application/json: example: message: Jwt is expired code: 401 /rest/v2/triggerReturnSms: post: operationId: triggerReturnSms summary: Trigger Return SMS tags: - Return Shipments description: 'This API endpoint will trigger an SMS for a successful return request, If your SMS settings are configured correctly. Please note that, since the SMS service operates asynchronously, the response does not confirm that the SMS has been delivered to the end customer. For a more detailed investigation of any SMS delivery issues, we recommend checking the SMS Logs under the Logs section in the OTO UI. Request Parameters: Name Required Type Description orderId yes string The orderId you want to trigg' requestBody: content: application/json: example: orderId: '523939' schema: type: object responses: '200': description: '200' content: application/json: example: success: true otoId: 3077435 '400': description: '400' content: application/json: example: success: false otoErrorCode: OTO1002 otoErrorMessage: Order is not exist /rest/v2/print/orderId: get: operationId: orderId summary: Print AWB tags: - Shipping Label(AWB) description: 'This API endpointallows you to access print URL for generated Air Waybill (AWB) for shipments. An AWB is a crucial document used in air delivery transport that contains essential shipping information. Request Parameters: Name Required Type Description orderId yes string Order id of the order to be printed internationalProforma no boolean If set to true, the response will include the International Proforma for international shipments. printReverseShipment no boolean Generates the AWB for a revers' responses: '200': description: 200-Print AWB content: application/json: example: dcTrackingNumber: '' success: true printAWBURL: https://app.tryoto.com/print/awb?enc=eyJjb21wYW55SWQiOiIxNzA2OCIsImlkcyI6WzMwMDQzMjc5XX0= deliveryCompany: saudiPostV2 trackingNumber: GNTUPD0042953826 /rest/v2/orderStatus: post: operationId: orderStatus summary: Order Tracking tags: - Tracking description: 'This API endpoint enables you to track the real-time status and progress of an order. By using this endpoint, you can retrieve detailed tracking information, including: Current order status (e.g.,pickedUp, outForDelivery, delivered). Shipment details such as carrier, tracking number, and estimated delivery time, print AWB URL. Request Parameters: Name Required Type Description orderId yes (if there is no otoId) string Id of the order that you will track. otoId yes (if there is no orderId) string' requestBody: content: application/json: example: orderId: '1234' schema: type: object responses: '200': description: 200- PDF content: application/json: example: date: '2026-04-27 12:42:07' customerAddress: Khayran Al Murrah totalValue: 10 orderId: OID-23331-9749 trackingUrl: https://app.tryoto.com/otoflex-tracking?enc=dUszSFUzRDZRVnZYWU9LZTBPODV0MG1pWldrU3JSVnh6QWVEYXJCRWN4cz0= dcTrackingNumber: '' deliveryCompany: otoDriverApp printAWBURL: https://app.tryoto.com/print/awb?enc=eyJjb21wYW55SWQiOiIxNzA2OCIsImlkcyI6WyIzMDUxNDI4MSJdLCJyZXZlcnNlIjp0cnVlfQ== customerName: redcar testing shipmentId: DCA87E10 success: true otoId: '30514281' status: returnShipmentProcessing '401': description: 401 Unauthorized content: application/json: example: message: Jwt is expired code: 401 /rest/v2/orderHistory: post: operationId: orderHistory summary: Order History tags: - Tracking description: 'This API endpoint allows you to retrieve the complete history of an order, providing detailed insights into its lifecycle. This includes: Status changes (e.g., pickedUp, arrivedTerminal, delivered). Timestamps for each status update. Actions taken during the order process, such as cancellations or modifications. Request Parameters: Name Required Type Description orderIds yes( if there is no otoIds or shipmentIds) array Ids of the order that you will track. otoIds yes( if there is no orderIds or ' requestBody: content: application/json: example: orderIds: - '2414124' - '3223523' schema: type: object responses: '200': description: 200 OK content: application/json: example: success: true items: - amount: 1 orderId: OID-23331-9743 trackingURL: https://app.tryoto.com/otoflex-tracking?enc=MUZEMGdSVXNaTkxYWU9LZTBPODV0K1JSYzJYMXlHMnd6QWVEYXJCRWN4cz0= dcTrackingNumber: '' history: - date: '2025-11-30 08:09:54' description: Created by fatmanur yavuz asd status: new currentLocation: {} - date: '2025-11-30 08:09:54' description: Created by fatmanur yavuz asd status: assignedToWarehouse currentLocation: {} - date: '2025-11-30 08:11:47' description: Order status changed to Inter depot transfer by fatmanur yavuz asd status: interDepotTransfer currentLocation: {} - date: '2025-12-07 08:12:37' shipmentId: DERWI87150 description: Shipment created automatically by fatmanur yavuz asd deliveryCompany: swftbox status: searchingDriver currentLocation: {} - date: '2025-12-07 08:12:42' shipmentId: DERWI87150 description: REQUESTED - REQUESTED deliveryCompany: swftbox status: shipmentCreated currentLocation: {} - date: '2025-12-08 10:00:00' shipmentId: DERWI87150 description: REQUESTED - REQUESTED deliveryCompany: swftbox status: shipmentCreated currentLocation: {} - date: '2025-12-09 10:03:17' shipmentId: DERWI87150 description: Order status changed as Delivered by fatmanur yavuz asd deliveryCompany: swftbox status: delivered currentLocation: {} - date: '2025-12-24 08:50:19' shipmentId: F87E6F4E description: Return shipment created by fatmanur yavuz asd deliveryCompany: otoDriverApp status: returnShipmentProcessing currentLocation: {} deliveryCompany: Swftbox warehouseName: test123 destinationCountry: SA destinationCity: Riyadh shipmentId: F87E6F4E otoId: '22255300' originCity: Madinah originCountry: SA returnOrderIds: - OID-23331-9743-R1 amount_due: 0 currency: SAR packageCount: 1 items: [] orderDate: 30/11/2025 08:09:07 printAwbUrl: https://app.tryoto.com/print/awb?enc=eyJjb21wYW55SWQiOiIxNzA2OCIsImlkcyI6WyIyMjI1NTMwMCJdLCJyZXZlcnNlIjp0cnVlfQ== payment_method: paid status: returnShipmentProcessing - amount: 12 orderId: OID-23331-1037 trackingURL: https://app.tryoto.com/otoflex-tracking?enc=UkJFVFJGZ3NFT1RYWU9LZTBPODV0N05IOVlLZmJBbTJ6QWVEYXJCRWN4cz0= history: - date: '2025-04-02 09:58:33' description: Created by fatmanur yavuz status: new currentLocation: {} - date: '2025-04-02 09:58:33' description: Created by fatmanur yavuz status: assignedToWarehouse currentLocation: {} - date: '2025-04-20 13:28:54' shipmentId: '' description: Order status changed as Delivered by fatmanur yavuz deliveryCompany: '' status: delivered currentLocation: {} - date: '2025-10-12 09:04:50' shipmentId: 765a9bdf description: Return shipment created automatically by fatmanur yavuz asd deliveryCompany: otoDriverApp status: returnShipmentProcessing currentLocation: {} warehouseName: DefaultWH destinationCountry: AE destinationCity: Dubai shipmentId: 765a9bdf otoId: '14965883' originCity: ABU DHABI CITY originCountry: AE amount_due: 12 currency: SAR packageCount: 1 items: [] orderDate: 02/04/2025 09:58:24 printAwbUrl: https://app.tryoto.com/print/awb?enc=eyJjb21wYW55SWQiOiIxNzA2OCIsImlkcyI6WyIxNDk2NTg4MyJdLCJyZXZlcnNlIjp0cnVlfQ== payment_method: cod status: returnShipmentProcessing /rest/v2/trackShipment: post: operationId: trackShipment summary: Track Shipment tags: - Tracking description: 'This API endpoint enables you to track a shipment by providing the tracking number and delivery company name. Without requiring any authorization, it offers detailed shipment information, including tracking URL, real time status updates and status history. If you are a marketplace, you can track your sellers'' shipments without requiring additional authorization. Request Parameters: Name Required Type Description trackingNumber yes string The shipment/ tracking number that you wanna track. delive' requestBody: content: application/json: example: trackingNumber: '290692134777' deliveryCompanyName: smsaecom statusHistory: true brandName: test brand schema: type: object responses: '200': description: 200 OK history content: application/json: example: trackingUrl: https://www.naqelexpress.com/en/sa/tracking/ success: true items: - dcStatus: '1' updateStatusDate: true shipmentId: '289812708' otoStatus: pickedUp success: true dcUpdateDate: '2024-08-15T11:36:00' dcDescription: '1 Picked up by Naqel at : JEDDAH' history: - dcStatus: '0' updateStatusDate: true shipmentId: '289812708' otoStatus: shipmentCreated dcUpdateDate: '2024-08-14T15:24:13' dcDescription: 0 Waybill created. Shipment has not been received from the retailer - dcStatus: '0' updateStatusDate: true shipmentId: '289812708' otoStatus: pickedUp dcUpdateDate: '2024-08-14T15:24:13' dcDescription: 0 Waybill created. Shipment has not been received from the retailer currentLocation: currentCountry: SA currentCity: Jeddah currentDistrict: Ar Rawdah currentBranch: Jeddah Warehouse - dcStatus: '1' updateStatusDate: true shipmentId: '289812708' otoStatus: delivered dcUpdateDate: '2024-08-15T11:36:00' dcDescription: 'Delivered: RIYADH' currentLocation: currentCountry: SA currentCity: Riyadh currentDistrict: As Salam currentBranch: Riyadh Warehouse '400': description: 400 invalid format content: application/json: example: success: false otoErrorCode: OTO1075 otoErrorMessage: Invalid Json format '409': description: 409 No tracking config content: application/json: example: success: false otoErrorCode: OTO1004 otoErrorMessage: There is no available delivery company setting /rest/v2/orders/{orderId}/customer-notifications: get: operationId: customernotifications summary: Customer Notifications tags: - Customer Notifications description: 'This endpoint allows you to retrieve all system-generated customer communication artifacts related to a specific order. It enables you to fully control your customer communication by consuming these artifacts and sending them through your own CRM, ERP, or communication platforms. The API endpoint provides the below customer notifications if generated and still valid. You can configure the actionTypes: Tracking Link Feedback (Rating) Link Undelivered Attempt Link Delivery Slot Selection Link Addr' parameters: - name: orderId in: path required: true schema: type: string responses: '200': description: '200' content: application/json: example: orderId: '123456' actions: - type: trackingLink value: https://tracking-link... - type: feedbackLink value: https://feedback-link... - type: clickCollectOTP channel: OTP value: '458921' /rest/v2/getDeliveryEstimation: post: operationId: getDeliveryEstimation summary: Get Delivery Estimation tags: - Carrier Integrations description: This API endpoint allows you to access estimated delivery dates, times, and other last-mile process details by utilizing the SLA configurations of your shipping partners. By providing key information such as the pickup and customer addresses, you can retrieve precise delivery and pickup date estimates. This capability enhances the accuracy of your shipping operations and proves invaluable for businesses and logistics providers aiming to streamline workflows and deliver reliable delivery timeline requestBody: content: application/json: example: calculationData: originAddress: city: Riyadh country: SA lat: 45 lon: 45 district: '' destinationAddress: city: Riyadh country: SA lat: 45 lon: 45 district: '' deliveryCompanySettingsId: 1233 slaMethodType: CITY_BASED schema: type: object responses: '200': description: '200' content: application/json: example: result: - estimatedTransferDuration: 3 shippingContract: agreementType: INTEGRATOR deliveryCompanySettingsId: 1233 name: Smsa Ecom V2 id: 117 slaMethodType: TIER_BASED deliveryIntegrationName: secom estimatedPickupDate: '2024-01-15' cutOffSameDayPickup: '15:00' estimatedTransferCompletionDate: '2024-01-18' estimatedDeliveryDate: '2024-01-18' shipmentCreateDate: '2024-01-10' success: true /rest/v2/aiEstimatedDeliveryDates: post: operationId: aiEstimatedDeliveryDates summary: AI Estimated Delivery Dates tags: - Carrier Integrations description: 'This API endpoint allows you retrieve OTO’s AI-generated estimated pickup and delivery dates . The endpoint is designed solely for prediction purposes —it does not create or update any shipments. The prediction model uses all up-to-date operational data within OTO , including historical delivery patterns, courier performance, service types, regions, and peak-time behavior. Based on this data, it produces a reliable estimate for both pickup and delivery timelines. Request Parameters: Name Require' requestBody: content: application/json: example: weight: '1' originCity: Riyadh destinationCity: Riyadh height: 15 width: 10 length: 10 includeEstimatedDates: true schema: type: object responses: '200': description: '200' content: application/json: example: traceId: 63545-73855-176.88.141.22-04260af8-e9da-4597-b652-1d6f9f89554c success: true deliveryCompany: - deliveryCompanyName: Deliver Now estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7109 estimatedDeliveryDate: '2025-11-17' - deliveryCompanyName: Omni Llama estimatedPickupDate: '2025-11-16' deliveryCompanySettingsId: 7252 estimatedDeliveryDate: '2025-11-17' - deliveryCompanyName: SPL PUDO estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7144 estimatedDeliveryDate: '2025-11-18' - deliveryCompanyName: Delivery Support estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7417 estimatedDeliveryDate: '2025-11-18' - deliveryCompanyName: Aramex PUDO estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7231 estimatedDeliveryDate: '2025-11-21' - deliveryCompanyName: Sent estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7490 estimatedDeliveryDate: '2025-11-18' - deliveryCompanyName: Roadlink Logistics estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7990 estimatedDeliveryDate: '2025-11-18' - deliveryCompanyName: SMSA PUDO estimatedPickupDate: '2025-11-16' deliveryCompanySettingsId: 7326 estimatedDeliveryDate: '2025-11-17' - deliveryCompanyName: iMile estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7147 estimatedDeliveryDate: '2025-11-18' - deliveryCompanyName: DELIVERIST Same Day estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7110 estimatedDeliveryDate: '2025-11-20' - deliveryCompanyName: Shipa Delivery estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7098 estimatedDeliveryDate: '2025-11-20' - deliveryCompanyName: J&T Express estimatedPickupDate: '2025-11-18' deliveryCompanySettingsId: 7100 estimatedDeliveryDate: '2025-11-22' - deliveryCompanyName: Yamamah estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 8530 estimatedDeliveryDate: '2025-11-18' - deliveryCompanyName: Aymakan estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7102 estimatedDeliveryDate: '2025-11-18' - deliveryCompanyName: Thabit Logistics estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7099 estimatedDeliveryDate: '2025-11-18' - deliveryCompanyName: Delex estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7113 estimatedDeliveryDate: '2025-11-18' - deliveryCompanyName: Linkers Express estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7949 estimatedDeliveryDate: '2025-11-18' - deliveryCompanyName: Aramex estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7097 estimatedDeliveryDate: '2025-11-22' - deliveryCompanyName: Naqel Express estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7112 estimatedDeliveryDate: '2025-11-22' - deliveryCompanyName: SMSA estimatedPickupDate: '2025-11-16' deliveryCompanySettingsId: 7101 estimatedDeliveryDate: '2025-11-18' - deliveryCompanyName: UPS estimatedPickupDate: '2025-11-16' deliveryCompanySettingsId: 7136 estimatedDeliveryDate: '2025-11-17' - deliveryCompanyName: Adwar Cold estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7410 estimatedDeliveryDate: '2025-11-18' - deliveryCompanyName: Aramex Heavy & Bulky estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7898 estimatedDeliveryDate: '2025-11-21' - deliveryCompanyName: Flow PL estimatedPickupDate: '2025-11-17' deliveryCompanySettingsId: 7106 estimatedDeliveryDate: '2025-11-18' /rest/v2/checkCoverage: post: operationId: checkCoverage summary: Check Coverage tags: - Carrier Integrations description: 'This API endpoint allows you to verify whether the location provided in your request is within the coverage area defined by your OTO settings, including the coverage configurations for delivery companies and the branches. Request Parameters: Name Required Type Description city yes string City to check coverage lat yes long Latitude lon yes long Longitude pickupLocation no boolean If you pass true, it will list the covered and available pickup locations. pickupLocationCode no string Lists only th' requestBody: content: application/json: example: lat: '24.28738403' lon: '46.44305038' city: Riyadh schema: type: object responses: '200': description: 200 OK content: application/json: example: branchCoverage: true courierDelivery: true success: true bulletDelivery: true '401': description: '401' content: application/json: example: message: Jwt is expired code: 401 '400': description: 400 Bad Request content: application/json: example: success: false otoErrorCode: OTO1098 otoErrorMessage: Lat and Lon is missing or invalid /rest/v2/availableCities: post: operationId: availableCities summary: Available Cities tags: - Carrier Integrations description: 'This API endpoint retrieves a list of cities available for delivery based on your coverage settings for active delivery companies you have contracts with. To obtain results, ensure that the delivery companies'' coverage areas are configured by adding cities through the OTO UI. Request Parameters: Name Required Type Description page no number Number of page, default is 1 limit no number Number of cities in a single page, default is 100' requestBody: content: application/json: example: limit: 3 schema: type: object responses: '200': description: '200' content: application/json: example: success: true limit: 3 page: 1 orders: - city: Riyadh city_ar: الرياض - city: Dammam city_ar: الدمام - city: Jeddah city_ar: جدة /rest/v2/availableTimeslots: post: operationId: availableTimeslots summary: Available Time Slots tags: - Carrier Integrations description: 'This API endpoint retrieves the available delivery time slots for delivery companies based on their specified working hours. Request Parameters: Name Required Type Description lat no string Latitude lon no string Longitude serviceType yes string Possible values: bullet , courier packageSize no string' requestBody: content: application/json: example: serviceType: bullet packageSize: simCard lat: '24.00' lon: '46.00' schema: type: object responses: '200': description: '200' content: application/json: example: success: true availableSlots: - times: - 9:30AM-11:30AM - 11:30AM-1:30PM - 1:30PM-3:30PM - 3:30PM-5:30PM - 5:30PM-7:30PM - 7:30PM-9:30PM - 9:30PM-11:30PM day: 05/11/2020 - times: - 5:30PM-7:30PM - 7:30PM-9:30PM - 9:30PM-11:30PM day: 06/11/2020 - times: - 9:30AM-11:30AM - 11:30AM-1:30PM - 1:30PM-3:30PM - 3:30PM-5:30PM - 5:30PM-7:30PM - 7:30PM-9:30PM - 9:30PM-11:30PM day: 07/11/2020 /rest/v2/dcList: post: operationId: dcList summary: DC List tags: - Carrier Integrations description: This API endpoint provides a list of all delivery companies integrated with OTO. If you have a contract with any of these companies, you can connect your account to OTO. Use the company's unique code to configure settings through the DC Activation and DC Config API endpoints. If a delivery company you have a contract with is not listed, please notify us to initiate the integration process. responses: '200': description: '200' content: application/json: example: data: - Name: 3speeds code: 3speeds - Name: 4PL code: 4pl - Name: 4U Express code: 4uexpress - Name: 4U Logistics code: 4u - Name: 9Cloud code: 9cloud - Name: Adam Pharmacy code: adamPharmacy - Name: Adwar Logistics code: adwar - Name: Adwar Logistics (Logestechs) code: adwarLogestechs - Name: AHOY code: ahoy - Name: Ajalogistic code: ajalogistic - Name: Ajeek code: ajeek - Name: AJEX Logistics code: ajex - Name: AJEX Türkiye code: ajex-tr - Name: Ajoul code: ajoul - Name: Ajwaa Afaq code: ajwa - Name: Al Hajer Logistics code: alhajer - Name: Al Saif Express code: alsaifexpress - Name: Al Shouroq express code: alshouroq - Name: Alam alkon code: alamalkon - Name: Alamyal code: alamyal - Name: Albabtain Logistic code: albabtainLogistic - Name: Alma Express code: alma - Name: Altariq App code: altariq - Name: Anwan Express code: anwan - Name: Araba Shipping Service code: araba - Name: Aramex code: aramex - Name: Aras Kargo code: araskargo - Name: Asyad Express code: asyadV2 - Name: Atheryoun Express code: atheryoun - Name: Awfar Express code: awfar - Name: Awssal code: awssal - Name: Aymakan code: aymakan - Name: Banabikurye code: banabikurye - Name: Barig Logistics code: barig - Name: Barq Express code: barqexpress - Name: Barq Fleet code: barq - Name: Barq Jawhara code: barq-jawhara - Name: Beebolt code: beebolt - Name: BeeThere Delivery code: beethere - Name: Beez code: beez - Name: Beone code: beone - Name: Beone Fulfillment V2 code: beoneFfl - Name: Beone Lastmile code: beoneLastmile - Name: Best One code: bestone - Name: Beyond Delivery code: beyondDelivery - Name: BlueSky Express code: bskyexpress - Name: Bolt Kargo code: boltkargo - Name: Bosta code: bostaV2 - Name: Boxed Up code: boxedup - Name: Boxex Express code: boxex - Name: BTC Logistics code: btclogistic - Name: Captain H code: captainh - Name: Careem code: careem - Name: Cigo code: cigo - Name: Cloud Express code: cloudexpress - Name: Cloud Shelf code: cloud-shelf - Name: Coldt code: coldt - Name: Collect+ code: collectplus - Name: Dal code: channels - Name: Dal Cross City code: dalCrossCity - Name: Dal Fulfillment code: channelsfulfillment - Name: Dash Delivery code: dashSaudi - Name: Dayer Logistics code: dayer - Name: Dele Fast code: delefast - Name: Delex code: delex - Name: Delex (Logestechs) code: delexLogestechs - Name: Delifast code: delifast - Name: Deliver Now Logistics code: delivernow - Name: Deliverist code: deliverist - Name: Deliverist (Logestechs) code: deliveristLogestechs - Name: Delivery Support code: deliverysupport - Name: Delybell code: delybell - Name: DHL Express MyDHL code: mydhl - Name: DHL Türkiye code: dhlTr - Name: DOS Express code: dosexpress - Name: Drb Express code: drbexpress - Name: Easy Delivery code: easyDelivery - Name: Ejack code: ejack - Name: Elite code: elite - Name: Emdad code: emdad - Name: Emirates Post code: emiratespost - Name: EMX code: emx - Name: Esal Parcel Transport Company code: esal - Name: Esnad Express code: esnad - Name: Eva Express code: evaexpress - Name: Falcon Express code: falconExpress - Name: Fareye code: fareye - Name: Fast Move Express code: fastMove - Name: Fastlo code: fastlo - Name: Fawran Logistics code: fawran - Name: Fazaah Logistics code: fazaahLogistics - Name: Fedex code: fedex - Name: FedEx Uluslararası (PTS) code: ptsv5FedEx - Name: FedexGlobal code: fedexGlobal - Name: Fenix Express code: fenix - Name: Fenx Kuwait code: fenxKuwait - Name: Flexe Express code: flexe - Name: Flexible code: flexible - Name: Flickapp code: flickapp - Name: Flow Business - Flow LTD code: flowldt - Name: Flow Express code: flowexpress - Name: Flowpl code: flowpl - Name: FODEL code: fodel - Name: Fulfillment Bridge code: fulfillmentbridge - Name: FULLex code: fullex - Name: Galaxy Delivery code: galaxy - Name: Gawamen code: gawamen - Name: Genac code: genac - Name: Getswift code: getswift - Name: GFS Express code: gfsexpress - Name: GLC code: glcLogestechs - Name: GLT Express code: gltexpress - Name: Happiness Gem code: happinessgem - Name: Hawa Logistics code: hawa - Name: Hejen Expresss code: hejen - Name: HepsiJet code: hepsijet - Name: HepsiJet Marketplace code: hepsijetmarketplace - Name: Hiblocks code: hiblocks - Name: Holol Al Diar code: holol-aldiar - Name: Horizon Speed code: horizons - Name: Horoz Lojistik code: horoz - Name: Horoz Lojistik Pazaryeri code: horoz-marketplace - Name: İletmen code: iletmen - Name: iMile code: imile - Name: IntercityXpress code: intercityxpress - Name: J&T Express code: jtexpress - Name: Jana Express code: janaExpress - Name: Jeebly code: jeebly - Name: Jeebly Now code: jeeblynow - Name: Jeebly V2 code: jeeblyV2 - Name: Jetizz code: jetizz - Name: JFL Express code: jflexpress - Name: Jones International Transportation Co. code: jonestco - Name: Jumia Logistics code: jumia - Name: KargoIst code: kargoist - Name: Kargoist code: kargoistmarketplace - Name: Kasib Express code: kasib - Name: Kedan code: kedan - Name: Kolay Gelsin code: kolaygelsin - Name: Kolay Gelsin (OTO) code: kolaygelsin-marketplace - Name: Kwick Box code: kwickbox - Name: Labaih code: labaih - Name: Lafasta code: lafasta - Name: Lafasta V4 code: lafastaV4 - Name: Lamha code: lamha - Name: Last Step code: laststep - Name: LastPoint code: lastpoint - Name: Logistic Care code: logcare - Name: Logistic Supplier code: logisticSupplier - Name: Logistiq code: logistiq - Name: Lyve code: lyve - Name: Lyve Bullet code: lyve317 - Name: Macm code: macm - Name: Madar Express code: madarexpress - Name: Magic Delivery code: magicexpress - Name: Mahmool code: mahmool - Name: MajEx Express code: majex - Name: MATP Logistics code: matp - Name: Milenow code: milenow - Name: Miles Speed code: milespeeds - Name: Mina Excellence code: minaExcellence - Name: Mkhdoom code: mkhdoom - Name: Mlc Go code: mlcgo - Name: MNG Kargo code: mngkargo - Name: MNG Kargo (OTO) code: mngkargo-marketplace - Name: 'Modern Support ' code: msc - Name: Moments Logistics Service code: momentsksa - Name: Moovo Express code: moovo - Name: Mosool code: mosool - Name: Motqen code: motqen - Name: Mowasalt code: mowasalt - Name: MQ Express code: mqexpress - Name: Mrsool code: mrsool - Name: Munch On code: munchon - Name: Mylerz code: mylerz - Name: Najiz code: najiz - Name: Najiz Express code: najizxpress - Name: Naqel Bullet code: naqelbullet - Name: Naqel express code: naqel - Name: Naqel Fulfillment code: naqelfulfillment - Name: Naql Express code: naql - Name: Naseem Cold Delivery code: naseem - Name: Nashmi code: nashmiLogestechs - Name: Nasxpress code: nasxpress - Name: nGage code: ngage - Name: NiceOne Fleet code: niceOneFleet - Name: Nizar Logistics code: nizar - Name: Nord Logistics code: nordlogistics - Name: NYAZIK Logistics code: nyazik - Name: Octovan code: octovan - Name: Okadoc code: okadoc - Name: Omni Llama code: omnillama - Name: One Click Delivery code: oneclick - Name: Ontime Express code: ontime - Name: Onway code: onway - Name: OTO DMS code: OTODMS - Name: OTO Flex code: otoDriverApp - Name: PackUpp Delivery code: packupp - Name: Paket Taxi code: pakettaxi - Name: PDC code: pdc - Name: Pharmaciaty code: pharmaciaty - Name: Pharmaciaty TMS code: pharmaciatyTMS - Name: Placer code: placer - Name: Porter Express code: porterex - Name: Posta Plus V2 code: postaPlusV2 - Name: Postage Fulfillment code: postageFulfillment - Name: Postagexp code: postagexp - Name: PostaPlus code: postaplus - Name: Premium Shipping code: premium-shipping - Name: Pro Logistics code: prolo - Name: PTL Logistics code: ptlLogistics - Name: PTS Flex Uluslararası code: ptsv5Flex - Name: PTT Kargo code: pttKargo - Name: Qatar Post code: qatarpost - Name: QDelivery code: qdelivery - Name: QLS Express code: qlsexpress - Name: Quick Ship code: quickship - Name: Quick Silver code: quicksilver - Name: Quiqup code: quiqup - Name: R2 Express code: r2express - Name: R2S Logistics code: r2slogistics - Name: Rabbit Delivery code: rabbitsa - Name: Rabel Express code: rabel - Name: ReceiveHere code: receivehere - Name: RedBox code: redbox - Name: Redbox V2 code: redboxv2 - Name: Reverse Delivery code: reverseDelivery - Name: Road logistics code: roadlogistic - Name: Roban AlQiadah code: robanAlQiadah - Name: Roz Express code: rozexpress - Name: Run-X Logistics code: runx - Name: Runner code: runner - Name: S:Mile code: smile - Name: SaaSMile code: saasmile - Name: SACO LM code: medscan - Name: Saee code: saee - Name: 'Safe Arrival ' code: safearrival - Name: Safe Box code: safebox - Name: Sahab Express code: sahabexpress - Name: Sahab Logistics code: sahabLogistics - Name: Sahm code: sahm - Name: Salasa (API Dog) code: salasaApiDog - Name: Sarokh code: sarokh - Name: Saudi Salam Logistics code: salam - Name: Send code: send - Name: Shgardi code: shgardi - Name: Ship Hero code: shiphero - Name: Shipa code: shipa - Name: Shipa Delivery V2 code: shipaV2 - Name: Shipa Fulfillment code: shipafulfillment - Name: Shipco Transport code: shipco - Name: ShipEntegra code: shipEntegra - Name: Shipox code: shipox - Name: Shuttle code: shuttle - Name: Skip Express code: skipexpress - Name: Skynet code: skynet - Name: SLD (Saudi Logistics and Delivery) code: sld - Name: SLS Express code: sls - Name: SLSC Logistic code: slsclogsitic - Name: Smart Point code: smartpoint - Name: SMB Express code: smbexpress - Name: SMI Express code: smiexpress - Name: SMSA B2B code: smsab2b - Name: Smsa Ecom V2 code: secom - Name: Smsa Express code: smsaV2 - Name: Smsa Omni code: smsaomni - Name: SMSA SDM code: smsasdm - Name: Soon Express code: soonexpress - Name: Sor3a Express code: sor3aexpress - Name: Speed Logistics code: speedLogistics - Name: SPL code: saudiPost - Name: SPL Fulfillment code: splfulfillment - Name: SPL UPDS code: splUpds - Name: SPL V2 code: saudiPostV2 - Name: Sprint code: sprint - Name: Sps Express code: spsexpress - Name: Starlinks code: starlinks - Name: Starlinks (New) code: starlinksNew - Name: Styla Sewa code: stylasewa - Name: Sundouq code: sundouq - Name: Sürat Kargo (OTO) code: surat-kargo-marketplace - Name: SWEX Express code: swex - Name: Swift code: swift - Name: Syaal code: syaal - Name: Tabex code: tabex - Name: Tal Delivery code: talDelivery - Name: Tam code: tam - Name: Tamex code: tamex - Name: Tard Delivery code: tard - Name: Tard Delivery 2 code: tardV2 - Name: Tasawuq code: tasawuq - Name: Tawsela code: tawsela - Name: Tawzea Logistics code: tawzea - Name: TD Logistics code: touchDown - Name: TFM Express code: tfmexpress - Name: Thabit Logistics code: thabit - Name: The Arrow code: thearrow - Name: Tookan code: tookan - Name: Transcorp code: transcorp - Name: UPS code: ups - Name: UPS OAuth code: ups2 - Name: UPS Uluslararası (PTS) code: ptsv5Ups - Name: Uruk Express code: uruk - Name: USPS code: usps - Name: uTrac code: utrac - Name: Utrac Delivery code: utracDelivery - Name: VAAL code: vaal - Name: Wadha code: wadha - Name: Waseel Logistics code: waseel - Name: Waslnee code: waslnee - Name: Way Express code: wayexpress - Name: WeDeliver code: wedeliver - Name: Weenk App code: weenkapp - Name: Wepik Express code: wepikexpress - Name: XTurbo code: xturbo - Name: Yallow code: yallow - Name: Yamamah Express code: yamamahexpress - Name: Yamamah Express Logestechs code: yamamahLogestechs - Name: Yango code: yango - Name: Yango Next Day Delivery code: yangondd - Name: Yeswa code: yeswa - Name: Yurtiçi Kargo code: yurticiKargo - Name: Yurtiçi Kargo code: yurtici-kargo-marketplace - Name: Zajel code: zajel - Name: Zajil code: zajil success: true /rest/v2/dcConfig: post: operationId: dcConfig summary: DC Config tags: - Carrier Integrations description: 'This API endpoint allows you to view the required account credentials and the template for the delivery company specified in the request, which are needed for the next step: DC activation. Retrieve the delivery company configuration template. Use this template to create a valid configuration object, similar to the given exampleJson . This configuration object is then used to activate the delivery company with the DC Activation API endpoint. Request Parameters: Name Required Type Description code' requestBody: content: application/json: example: code: aramex schema: type: object responses: '200': description: '200' content: application/json: example: settings: - fieldName: UserName parentJson: ClientInfo fieldType: string - fieldName: Password parentJson: ClientInfo fieldType: string - fieldName: Version parentJson: ClientInfo fieldType: string - fieldName: AccountNumber parentJson: ClientInfo fieldType: string - fieldName: AccountPin parentJson: ClientInfo fieldType: string - fieldName: AccountEntity parentJson: ClientInfo fieldType: string - fieldName: AccountCountryCode parentJson: ClientInfo fieldType: string - fieldName: Source parentJson: ClientInfo fieldType: string - fieldName: productType fieldType: enum enumValues: EPX,CDS,OND,GPX,GDX,DPX,DDX,PLX,PPX,PDX success: true exampleJSON: delivery_fee: 0 rating: 0 ClientInfo: UserName: '' Version: v1 AccountPin: '' AccountCountryCode: SA AccountEntity: RUH Source: 24 Password: '' AccountNumber: '' productType: CDS /rest/v2/dcActivation: post: operationId: dcActivation summary: DC Activation tags: - Carrier Integrations description: 'This API endpoint is used to perform Delivery Company (DC) activation. It enables you to activate a delivery company by providing the required configuration details. Request Parameters: Name Required Type Description code yes string The integration name obtained from the DC List. deliveryOptionName yes string A name you assign to easily identify this configuration. brandID no number id of the brand created by Create Brand endpoint settings yes object A configuration object created based on the e' requestBody: content: application/json: example: code: aramex deliveryOptionName: api test aramex settings: ClientInfo: UserName: apitest@example.com Version: v1 AccountPin: '123' AccountCountryCode: SA AccountEntity: RUH Source: 24 Password: 123abc AccountNumber: '123456' productType: CDS schema: type: object responses: '200': description: '200' content: application/json: example: success: true deliveryOptionId: '123' /rest/v2/getCities: post: operationId: getCities summary: Get Cities tags: - Carrier Integrations description: 'This API endpoint is used to retrieve a list of cities of a given country. Request Parameters: Name Required Type Description country yes string The country for which cities are to be retrieved. perPage no integer The number of cities to be displayed per page. Default value is 100, max value is 500. page no integer The page number for pagination. Example Response: { "getCities": { "totalCount": 1, "perPage": 1, "Cities": [ { "name": "Riyadh" } ] } }' requestBody: content: application/json: example: country: SA perPage: 10 page: 1 schema: type: object responses: '200': description: 200 OK content: application/json: example: getCities: totalCount: 704 perPage: 400 Cities: - name: Aba Alworood - name: Abayt - name: Abha - name: Abha Manhal - name: Abiar Al Mashi - name: Abil - name: Abu Ajram - name: Abu Al Arj - name: Abu Arish - name: Abu Arradeef - name: Abu Dhiba - name: Abu Hadriyah - name: Abu Hajar - name: Abu Muloh - name: Abu Rakah - name: Abu Rakh - name: Ad Dahinah - name: Ad Dalfaah - name: Ad Dilam - name: Ad Diriyah - name: Ad Dubaiyah - name: Ad Dumayriyah - name: Ad Duwadimi - name: Addayer - name: Adham - name: Afif - name: Afraa - name: Ahad Al Musarihah - name: Ahad Bani Zayd - name: Ahad Rifaydah - name: Ain Al Nakhal - name: Ain Dar - name: Airj - name: Al Aarid - name: Al Abar - name: Al Abyar - name: Al Adari - name: Al Adhiriyah - name: Al Aflaj (Layla) - name: Al Ahmar - name: Al Ahmar-Yanbu - name: Al Ahsaa - name: Al Ais - name: Al Aithmah - name: Al Ajfar - name: Al Ama ir - name: Al Amaaria - name: Al Amajiyah - name: Al Amar - name: Al Amlah - name: Al Ammarah - name: Al Amoah - name: AL Andalus - name: Al Aqiqah - name: Al Aqool - name: Al Aradiyah - name: Al Araq - name: Al Ardah - name: Al Ardiyat - name: 'Al Arfaa ' - name: Al Arin - name: Al Arja - name: Al Aroos - name: Al Artawi - name: Al Asad - name: Al Aseelh - name: Al Ataya - name: Al Atheeb - name: Al Atif - name: Al Awamer - name: Al Bada - name: Al Badai - name: 'Al Badie Al Shamali ' - name: Al Baha - name: Al Bahah Region - name: Al Baheem - name: Al Bashayer - name: AL BASR - name: Al Batra - name: Al Bijadyah - name: Al Bikreyah - name: Al Bir - name: Al Bukayriyah - name: Al Butayn - name: Al Dalemya - name: Al Dhabyah - name: Al Dhahreyah - name: Al Dheelah - name: AL DUGHAIMIYAH - name: Al Dulaymiyah - name: Al Fagali - name: Al Fara - name: Al Farshah - name: Al Fatiha - name: Al Fawwarah - name: Al Furaysh - name: Al Fuwaileq - name: Al Gafrat - name: Al Gamri - name: Al Gandla - name: 'Al Gharif ' - name: Al Ghat - name: Al Habjeia - name: Al Haddar - name: Al Hadror - name: Al Haeer - name: Al Haith - name: Al Haqu - name: Al Harara - name: Al Hariq - name: Al Harth - name: Al Hayathem - name: Al Hayeet - name: Al Hazim - name: Al Hazmi - name: Al Henayah - name: Al Heno - name: Al Hifah - name: Al Hijf - name: Al Hilaliyah - name: Al Hinnah - name: Al huda - name: Al Hudud Al Shamaliyah - name: Al Hufayr - name: Al Hufayyirah - name: Al Hufuf - name: Al Hulayfah As Sufla - name: Al Hulwah - name: Al Husayni - name: Al Husayniyah - name: Al Husayy - name: Al Husima - name: Al Huwaya east - name: Al Idabi - name: Al JABRIYAH - name: Al Jafr - name: Al Jaradiyah - name: Al Jarf - name: Al Jarn - name: Al Jawf Region - name: Al Jawwah - name: Al Jifah - name: Al Jithamiyah - name: Al Jubail - name: Al Jubailah - name: Al Jumum - name: Al kadami - name: Al Kadarah - name: Al Kamil - name: Al Khafji - name: Al Khalaf - name: Al Khaniq - name: Al Kharj - name: Al Kharkhir - name: Al Khashabiyah - name: Al Khasiybahi - name: Al Khitah - name: Al khoba - name: Al Khubar - name: Al Khuffiyah - name: Al khuraybah - name: Al Khuraytah - name: Al Khurmah - name: Al Khushaybi - name: Al Lahien - name: Al Laqayit - name: Al Lsawiyah - name: Al Ma`ashabah - name: Al Mada - name: Al Madaya - name: Al Madha - name: Al Madinah Region - name: AL MAHANI - name: Al Mahd - name: Al Majardah - name: Al Majmaah - name: AL MALIDA - name: Al Marameh - name: Al Markaz - name: Al Marmuthah - name: Al Marooj - name: Al Masgi - name: Al Mayyah - name: Al Midhnab - name: Al Midrij - name: Al Mishaliah - name: Al Mothalath - name: Al Mozvin - name: Al Mubarakah - name: Al Mudayyih - name: Al Mukhwah - name: Al Mulaylih - name: Al Muntashar - name: Al Musayjid - name: Al Muwaylih - name: Al Muzahimiyah - name: Al Nabah - name: Al Nuzha - name: Al Ogam - name: Al Qaa - name: Al Qaid - name: Al Qaied - name: Al Qarin - name: Al Qarinah - name: Al Qassim Region - name: Al Qatif - name: Al Qeddeh - name: Al Qirawan - name: Al qowarah - name: Al Qulayyib - name: Al Qunfidhah - name: Al Qurainah - name: Al Qurayyat - name: AL QURESHIYAT - name: Al Rafaeya'a - name: Al Rafaie - name: Al Rathaya - name: Al Rayis - name: Al Reeth - name: Al Ruqi - name: Al Sahalil - name: Al Salamah - name: AL SAYL ALKHABIR - name: AL SAYL ALSAGHIR - name: Al Shatt - name: Al Shegrah - name: Al Shehiyah - name: Al Sheqiqah - name: Al Shlayil - name: Al Shoqiyah - name: Al Shuaba - name: Al Sih - name: Al Subaykhah - name: Al Sulaimi - name: Al tanumah - name: Al Taraf - name: Al Theniah - name: Al Torkiyah - name: Al Twaitheer - name: Al Udayd - name: Al Uferiah - name: Al Uwayqilah - name: Al Waddean - name: Al Wajh - name: Al Wannan - name: Al Wasayta - name: Al-Batna - name: Al-halaa - name: AL-JUAYMAH - name: Al-Matan - name: Al-MNSALA - name: Al-Nasifa - name: Al-Umran - name: Al-Wozeyh - name: Alabadilah - name: Alarjeen - name: Alasilan - name: Alearduh - name: Algayed - name: Alhada - name: Alhayma - name: Aliland - name: AlJanadria - name: Alkhazzan - name: AlKhhafah - name: Almazef - name: Almutayrifi - name: Almuzayri - name: Alnabhanya - name: Alqabil - name: Alquaba - name: AlQudaih - name: Alqurra - name: Alshahili - name: Alshihyah - name: Alshuqayri - name: Alshwaaq - name: Alsilaa - name: Alsulmania - name: Alturfiyah - name: Alwasqah - name: Alyutamah - name: Amaaer Ben Sana'a - name: Amaq - name: An Nabiyah - name: An Nabk Abu Qasr - name: An nabqiyyah - name: An Nafiah - name: An Nasiriyah - name: An Nawwariyyah - name: An Nazayim - name: An Nuayriyah - name: An Nuqrah - name: Aqiq - name: Ar Radifah - name: Ar Rafi'ah - name: Ar Rafiah - name: Ar Rass - name: 'Ar Rawdah ' - name: AR RAYN - name: Ar Rishawiyah - name: Arafa - name: Arar - name: Artawiah - name: As Sahwah - name: As Sam'uriyah - name: As Shamli - name: As Sihaf - name: As Sulaimaniyah - name: As Sulayyil - name: As Sulubiayh - name: Asbtar - name: asdadadeaed - name: asdasd - name: asdasdrertyr - name: asdqtrawqew - name: Asfan - name: Ash Shaara - name: Ash Shananah - name: Ash Shimasiyah - name: Ash Shinan - name: Ash Shumaysi - name: Ash Shuqaiq - name: Ash Shuqrah - name: Asheerah Sudayer - name: Asir - name: Asir Region - name: Assadawi - name: Assalmanyah - name: Assiyah - name: Asuwayq - name: At Tan'Im - name: At Tiraq - name: At Tuwal - name: At Tuwayr - name: Atawleh - name: Ath Thamiriyah - name: Ath Thybiyah - name: Awamiah - name: Awdah Sudayer - name: Ayn Fuhayd - name: Az Zughayn - name: Az Zulfi - name: Badar Hunain - name: Badr - name: Badr Al Janoub - name: Bahara - name: Bahr Abu Sukaynah - name: Bahrain Causeway - name: Bahrat Al Moujoud - name: Balahmar - name: Baljurashi - name: Balqarn - name: Banban - name: Bani Hamim - name: Bani Hasan - name: Bani Malek - name: Baqa Ash Sharqiyah - name: Baqaa - name: Bareq - name: Batha - name: Bawathil - name: Baynah - name: Baysh - name: Billasmar - name: Bin Aqeel Palace - name: Bir Bin Harmas - name: Birk - name: Bishah - name: Buqayq - name: Buraydah - name: Daelim - name: Dahu - name: Damad - name: Dammam - name: Darb - name: Dariyah - name: Dawmat Al Jandal - name: dayida - name: Deraab - name: Dhahban - name: Dhahran - name: Dhahran Al Janoub - name: DHALAM - name: Dhurma - name: Duba - name: DUBAY'AH - name: Duhknah - name: Dulay Rashid - name: Dulayhan - name: dummy - name: Eaqabat shiear - name: Eastern Province - name: Eastern Region - name: Eayan dar aljadida - name: Eayan dar alqadima - name: Edadh - name: Either - name: El-Ebva - name: Eshirah '409': description: 409 country null content: application/json: example: success: false errorMsg: country is null /rest/v2/checkDCBranchList: post: operationId: checkDCBranchList summary: Check DC Branch List tags: - Carrier Integrations description: This API endpoint retrieves the available branch list, PUDO (Pick-Up/Drop-Off) points, parcel shops, lockers, and other supported service locations for the selected delivery company. It can be used to obtain the latest carrier location information required for branch deliveries, pickup point selection, return shipments, and other location-based shipping services. The response includes all available service points supported by the carrier based on the provided request parameters. Request Paramete requestBody: content: application/json: example: deliveryCompanyName: acs countryCode: GR schema: type: object responses: '200': description: 200- Check DC Branch List content: application/json: example: pickupPoints: - dcBranchName: Saudi Post Riyadh Olaya Branch country: SA address: King Fahd Road, Al Olaya District city: RIYADH codSupported: true branchEmail: olaya@splonline.com.sa lon: 46.675296 paymentType: Cash, Mada, Visa, Mastercard branchCode: SPL1001 phoneNumber: '+966112345678' postCode: '12214' state: RIYADH branchType: POST_OFFICE workingHours: 08:00-21:00 weekendWorkingHours: 16:00-21:00 lat: 24.713552 - dcBranchName: Saudi Post Smart Locker Riyadh Olaya country: SA address: Olaya Mall, King Fahd Road city: RIYADH codSupported: false branchEmail: lockers@splonline.com.sa lon: 46.679321 paymentType: Not available branchCode: SPL5001 postCode: '12214' state: RIYADH branchType: SMART_LOCKER workingHours: 24HOURS weekendWorkingHours: 24HOURS lat: 24.715021 - dcBranchName: Saudi Post Smart Locker Riyadh Al Malaz country: SA address: Salah Ad Din Al Ayyubi Road, Al Malaz city: RIYADH codSupported: false branchEmail: lockers@splonline.com.sa lon: 46.738591 paymentType: Not available branchCode: SPL5002 postCode: '12831' state: RIYADH branchType: SMART_LOCKER workingHours: 24HOURS weekendWorkingHours: 24HOURS lat: 24.666912 - dcBranchName: Saudi Post Jeddah Al Rawdah Branch country: SA address: Prince Sultan Road, Al Rawdah city: JEDDAH codSupported: true branchEmail: jeddah@splonline.com.sa lon: 39.174893 paymentType: Cash, Mada, Visa, Mastercard branchCode: SPL1002 phoneNumber: '+966126789012' postCode: '23432' state: MAKKAH branchType: POST_OFFICE workingHours: 08:00-21:00 weekendWorkingHours: 16:00-21:00 lat: 21.583333 - dcBranchName: Saudi Post Smart Locker Jeddah Mall country: SA address: Red Sea Mall, King Abdulaziz Road city: JEDDAH codSupported: false branchEmail: lockers@splonline.com.sa lon: 39.108922 paymentType: Not available branchCode: SPL5003 postCode: '23612' state: MAKKAH branchType: SMART_LOCKER workingHours: 24HOURS weekendWorkingHours: 24HOURS lat: 21.634017 - dcBranchName: Saudi Post Dammam Al Faisaliyah Branch country: SA address: King Saud Road, Al Faisaliyah city: DAMMAM codSupported: true branchEmail: dammam@splonline.com.sa lon: 50.103306 paymentType: Cash, Mada, Visa, Mastercard branchCode: SPL1003 phoneNumber: '+966138765432' postCode: '32272' state: EASTERN PROVINCE branchType: POST_OFFICE workingHours: 08:00-21:00 weekendWorkingHours: 16:00-21:00 lat: 26.420683 - dcBranchName: Saudi Post Smart Locker Dammam Corniche country: SA address: Corniche Road, Ash Shati District city: DAMMAM codSupported: false branchEmail: lockers@splonline.com.sa lon: 50.110912 paymentType: Not available branchCode: SPL5004 postCode: '32413' state: EASTERN PROVINCE branchType: SMART_LOCKER workingHours: 24HOURS weekendWorkingHours: 24HOURS lat: 26.451209 /rest/v2/createPickupLocation: post: operationId: createPickupLocation summary: Create Pickup Location tags: - Pickup Locations description: 'This API endpoint allows you to define and register a new pickup location within the system. By specifying the location details, you can expand your network of pickup points, improving logistics and delivery workflows. Request Parameters: Name Required Type Description name yes string Name of the pickup location; should be unique. type no string You can enter these values: branch , warehouse . Branch can only be used by enterprise and marketplace packages code yes string Code of the pickup locat' requestBody: content: application/json: example: type: branch code: code-0211112 name: Location-02 Name11111 mobile: '555888777' address: 3474, Abi Almahd, 7026, Al Olaya, 12221, Riyadh, Kingdom of Saudi Arabia contactName: Test Contact contactEmail: Test Email lat: '26.001' lon: '50.001' city: Dammam country: SA street: Abi Almahd district: Al Olaya buildingNo: '3474' secondaryAddressNumber: '7026' postcode: '12221' servingRadius: '10' shortAddressCode: RHOD3474 brandName: Example Seller schema: type: object responses: '200': description: 200 warehouse content: application/json: example: warhouseId: '123' pickupLocationCode: code-01 success: true message: warehouse has been created /rest/v2/updatePickupLocation: post: operationId: updatePickupLocation summary: Update Pickup Location tags: - Pickup Locations description: 'This API endpoint allows you to modify the details of your existing pickup locations efficiently. This endpoint provides a streamlined way to ensure that your pickup location information remains accurate and up to date, enabling smooth and reliable operations. Request Parameters: Name Required Type Description name yes string Name of the pickup location type yes string You can enter these values: branch , warehouse . Branch can only be used by enterprise and marketplace packages code yes string ' requestBody: content: application/json: example: type: warehouse code: code-02 name: Location-02 Name mobile: '555888777' address: Test warehouse 3539, Al Khalidiyyah Al Janubiyyah, Dammam 32225 contactName: Test Contact contactEmail: Test Email lat: '26.001' lon: '50.001' city: Dammam district: Latifah Manaf street: Long Street state: Eastern Province country: SA postcode: '77777' servingRadius: '10' brandName: Example Seller 2 status: active schema: type: object responses: '200': description: 200 OK content: application/json: example: branchId: '1878' pickupLocationCode: code-02 success: true '400': description: 400 Bad Request content: application/json: example: success: false errorCode: 5 errorMsg: Code, Mobile and Location must be provided '404': description: '404' content: application/json: example: success: false otoErrorCode: OTO1070 otoErrorMessage: Pickup location code is missing or invalid /rest/v2/getPickupLocationList: get: operationId: getPickupLocationList summary: Get Pickup Location List tags: - Pickup Locations description: 'This API endpoint enables you to retrieve a comprehensive list of pickup locations by specifying a date range and status. This endpoint provides an efficient way to filter and access relevant pickup location data, ensuring streamlined tracking and management. Request Parameters: Name Required Type Description minDate no date Starting Pickup location create date in "yyyy-mm-dd" format. (e.g. "2024-08-01") maxDate no date Ending Pickup location create date in "yyyy-mm-dd" format. (e.g. "2024-08-05' parameters: - name: minDate in: query required: false schema: type: string - name: maxDate in: query required: false schema: type: string - name: status in: query required: false schema: type: string responses: '200': description: 200 OK content: application/json: example: success: true warehouses: - code: code-999 address: Test warehouse 3539, Al Khalidiyyah Al Janubiyyah, Dammam 32225 contactEmail: Test Email city: Dammam country: SA street: Abi Almahd district: Al Olaya buildingNo: '3474' secondaryAddressNumber: '7026' postcode: '12221' name: Location Name contactPerson: Test Contact lon: 50.001 id: 17051 contactPhone: '555888777' lat: 26.001 branches: - code: code-96 address: Test warehouse 3539, Al Khalidiyyah Al Janubiyyah, Dammam 32225 contactEmail: Test Email district: Al Mughaisilah Dist. city: Madinah buildingNo: '8089' street: Salam Ibn Salim secondaryAddressNumber: '4314' shortAddressCode: DMAJ8089 postcode: '42315' name: Location-02 Name contactPerson: Test Contact lon: 50.001 id: 18203 contactPhone: '555888777' lat: 26.002 '400': description: 400 Bad Request content: application/json: example: success: false errorCode: 4 errorMsg: maxDate is invalid '401': description: 401 Unauthorized content: application/json: example: message: Jwt is expired code: 401 /rest/v2/getBrandList: get: operationId: getBrandList summary: Get List of Brands (Client Store) tags: - Brands description: 'This API endpoint provides access to a comprehensive list of brand (client store) details. This endpoint enables users to retrieve information about brands associated with their account, including key attributes such as brand name, store identifiers, and other relevant metadata. Request Parameters: No request body parameters are required for this GET request. Response: Upon a successful execution, the server responds with a 200 status code and a JSON object containing the following fields: succe' responses: '200': description: '200' content: application/json: example: success: true clientStores: - companyId: 24772 storeName: test123 ID: 1161 wareHouseName: DefaultWH brandLogo: https://storage.googleapis.com/download/storage/v1/b/oto-files-stage/ defaultWarehouseId: 16415 /rest/v2/createBrand: post: operationId: createBrand summary: Create Brand (Client Store) tags: - Brands description: 'This API endpoint allows you to add a new brand (client store) to the system. By using this endpoint, you can define and register a brand with essential details, enabling integration with various systems. Request Parameters: Name Required Type Description storeName yes string The name of the store logo no string The logo URL of the brand defaultWarehouseID no integer The ID of the default warehouse stores no array An array of store objects containing the following fields storeName no string The ' requestBody: content: application/json: example: storeName: Brand A logo: https://storage.googleapis.com/download/storage/v1/b/oto-files-stage/o/files%2F24772%2Fimport%2Fb58b6d41-af83-492c-a416-d4bb0d076be1.png?generation=1721804238908930&alt=media defaultWarehouseID: 16415 stores: - storeName: store A salesChannelCredentialsID: 4512 schema: type: object responses: '200': description: '200' content: application/json: example: success: true clientStoreId: 1193 /rest/v2/salesChannel/getSalesChannelsList: get: operationId: getSalesChannelsList summary: Sales Channels List tags: - Sales Channels description: This API endpoint provides a list of all sales channels integrated with OTO. If you have a store with any of these sales channels, you can connect your store to OTO. Use the sales channel's unique code to configure settings through the Sales Channels Config and Sales Channels Activation API endpoints. responses: '200': description: '200' content: application/json: example: salesChannelsList: - name: Adobe Commerce code: adobeEcommerce - name: WooCommerce code: wooCommerce - name: Shopify code: shopify - name: OpenCart code: opencart - name: Store Hippo code: storehippo - name: Foodics code: foodics - name: Tsoft code: tsoft - name: shahbandr code: shahbandr - name: TrendyolInt code: TrendyolInt /rest/v2/salesChannel/getSalesChannelConfig: post: operationId: getSalesChannelConfig summary: Sales Channel Config tags: - Sales Channels description: 'Available Packages : Starter Package, Scale Package, Enterprise Package, Marketplaces This API endpoint allows you to view the required store credentials and the template for the sales channels specified in the request, which are needed for the next step: Sales Channel Activation. Retrieve the sales channel configuration template. Use this template to create a valid configuration object, similar to the given exampleJson . This configuration object is then used to activate the sales channel with ' requestBody: content: application/json: example: code: shopify schema: type: object responses: '200': description: '200' content: application/json: example: code: shopify storeURL: '' adminApiAccessToken: '' active: true storeName: '' /rest/v2/salesChannel/salesChannelActivation: post: operationId: salesChannelActivation summary: Sales Channel Activation tags: - Sales Channels description: 'This API endpoint is used to perform Sales Channels Activation. It enables you to activate a sales channel by providing the required configuration details. Request Parameters: Name Required Type Description code yes string The integration name obtained from the Sales Channels List' requestBody: content: application/json: example: code: shopify storeURL: https://shopifytest.myshopify.com adminApiAccessToken: shopifytoken active: true storeName: Shopify Store schema: type: object responses: '200': description: '200' content: application/json: example: success: true /rest/v2/createProduct: post: operationId: createProduct summary: Create Product tags: - Products description: 'This API endpointallows clients to add new products to the system by providing key product details. This endpoint is essential for catalog management, enabling businesses to define and register products for use in their operations, such as inventory management, sales, and order processing. Request Parameters: Name Required Type Description sku yes string SKU of the product productName yes string Name of the product price yes string Price of the product taxAmount no string Tax Amount of the produ' requestBody: content: application/json: example: productName: Pencil sku: 1234AB123CDEas price: '23.5' taxAmount: '11' barcode: '1245125123421' secondBarcode: '231412312' description: This is product description brandId: 6345 category: Category of the product productImage: '' packagingMaterial: true customAttributes: - attributeName: '112' attributeValue: test product schema: type: object responses: '200': description: '200' content: application/json: example: productId: 6084100 success: true '400': description: 400 wrong price value content: application/json: example: success: false otoErrorCode: OTO1009 otoErrorMessage: Something went wrong /rest/v2/productList: post: operationId: productList summary: Product List tags: - Products description: 'This API endpoint provides a simple and efficient way to retrieve a list of products available in your inventory. This endpoint returns essential product details such as names, images, SKUs, and barcodes, enabling applications to display and manage product information effectively. Request Parameters: Name Required Type Description pageSize no number items per page, default is 100 currentPage no number page numbe to be called, default is 1' requestBody: content: application/json: example: pageSize: 100 currentPage: 1 schema: type: object responses: '200': description: '200' content: application/json: example: success: true productCount: 3 products: - name: renegade productImage: https://i.pinimg.com/564x/8b/46/bd/8b46bd024b6a53f09ad35c29f8ffb50b.jpg sku: '001' barcode: '1111' - name: football productImage: https://i.pinimg.com/236x/e4/be/bb/e4bebbaf7a4b7efa305e198720248e9b.jpg sku: '002' barcode: '6120000210' - name: icecream productImage: https://i.pinimg.com/236x/96/e7/ac/96e7accacdb0c1ec87c7ebfd2dc26f3b.jpg sku: '003' barcode: '46666588851222000574' /rest/v2/addBox: post: operationId: addBox summary: Add Box tags: - Products description: 'This API endpoint allows you to create new boxes with the dimensions you provided. Request Parameters: Name Required Type Description name yes string name of the box, name should be unique length yes double length of the package width yes double width of the package height yes double height of the package' requestBody: content: application/json: example: name: xsmall length: 25 width: 24 height: 9 schema: type: object responses: '200': description: 200 OK content: application/json: example: success: true message: Box successfully created '409': description: 409-already exists content: application/json: example: success: false otoErrorCode: OTO1147 otoErrorMessage: Box already exists /rest/v2/updateBox: post: operationId: updateBox summary: Update Box tags: - Products description: You can change the dimension information of an existing box. Since the name is unique, you can change the information of that box by entering the name information in the request. requestBody: content: application/json: example: name: xsmall length: 3 width: 4 height: 3 schema: type: object responses: '200': description: 200 OK content: application/json: example: success: true message: Box successfully updated '409': description: 409-not found content: application/json: example: success: false otoErrorCode: OTO1149 otoErrorMessage: Box could not be found /rest/v2/getBox: get: operationId: getBox summary: Get Box tags: - Products description: This API endpoint you to retrieve the name, id and dimension information of all boxes currently in your account. responses: '200': description: 200 OK content: application/json: example: boxes: - length: 10 width: 9 boxName: medium id: 2642 height: 5 success: true '409': description: 409-not found content: application/json: example: success: false otoErrorCode: OTO1149 otoErrorMessage: Box could not be found /rest/v2/updateStockQuantity: post: operationId: updateStockQuantity summary: Update Stock Quantity tags: - Stock Management description: 'This API endpoint enables efficient inventory management by allowing you to update the quantity of a SKU in two flexible ways: Adjust : Modify the existing quantity by adding or deducting a specified amount. To decrease the quantity, provide a negative value for qty . For example, setting qty to -5 will deduct 5 units from the current stock. Set : Directly set the quantity on hand to a specific value, replacing the current stock with the provided qty . Request Parameters: Name Required Type Desc' requestBody: content: application/json: example: actionType: adjust locationCode: ASDS sku: '156487494561' qty: '40' schema: type: object responses: '200': description: 200 actionType "set" content: application/json: example: success: true warnings: - Inventory quantity set to the given qty according to the action type transactionID: 591611 '400': description: 400 invalid quantity content: application/json: example: success: false otoErrorCode: OTO1132 otoErrorMessage: Quantity is missing or invalid /rest/v2/checkInventoryStock: get: operationId: checkInventoryStock summary: Check Inventory Stock tags: - Stock Management description: 'This API endpoint allows you to retrieve real-time stock availability for products at specific locations. It provides detailed information on the quantity of items on hand and forecasted stock for each product at various pickup locations, offering a location-based view of inventory distribution. Request Parameters: Name Required Type Description sku yes string The product''s SKU identifier pickupLocationCode no string The code representing the specific location. Response: success : Indicates whet' parameters: - name: sku in: query required: false schema: type: string responses: '200': description: '200' content: application/json: example: success: true stock: SG1: - pickupLocationCode: DMW sku: SG1 quantityForecasted: 261 quantityOnHand: 277 - sku: SG1 quantityForecasted: -16 quantityOnHand: -7 SG3: - pickupLocationCode: DMW sku: SG3 quantityForecasted: 55 quantityOnHand: 67 - sku: SG3 quantityForecasted: -7 quantityOnHand: -6 SG2: - pickupLocationCode: DMW sku: SG2 quantityForecasted: 185 quantityOnHand: 198 - sku: SG2 quantityForecasted: -20 quantityOnHand: -12 /rest/v2/checkGlobalStock: get: operationId: checkGlobalStock summary: Check Global Stock tags: - Stock Management description: 'This API endpoint provides an overview of total stock availability for SKUs across all locations. This endpoint aggregates stock levels to display a global view, helping businesses understand their overall inventory status. Request Parameters: Name Required Type Description sku yes string The product''s SKU identifier Response: success : Indicates whether the request was successful ( true or false ). stock : A dictionary with SKUs as keys, containing global stock details for each product: sku : T' parameters: - name: sku in: query required: false schema: type: string responses: '200': description: '200' content: application/json: example: success: true stock: '12': - minInventory: 50 sku: '12' quantityForecasted: 122 quantityOnHand: 39 '123123': - sku: '123123' quantityOnHand: 14 /rest/v2/createInventoryOrder: post: operationId: createInventoryOrder summary: Create Inventory Order tags: - Stock Management description: 'This API endpoint creates inventory order as inbound or outbound for a warehouse or branch location. This API is used mostly to provide the incoming or outgoing bulk items from ERP systems to OTO. Once the order is created the status will be new for the warehouse or branch to accept and process the order. Request Parameters: Name Required Type Description action yes enum "inbound": Creates the order as purchase type and sets the ingoing location field "outbound": Creates the order as disposal an' requestBody: content: application/json: example: action: inbound locationCode: WHA binLocationName: test orderDate: 31/03/2022 deliveryDate: 31/03/2023 waybillNumber: '12345' description: loc1 items: - sku: '123123' qty: '1' schema: type: object responses: '200': description: '200' content: application/json: example: success: true otoId: 4026 '400': description: 400 wrong location code content: application/json: example: success: false otoErrorCode: OTO1133 otoErrorMessage: Location Code is missing or invalid /rest/v2/updatePackingStatus: post: operationId: updatePackingStatus summary: Update Packing Status tags: - Stock Management description: 'This API endpoint allows you to update the packing status of an order during the fulfillment process. This endpoint is used to record and track the progress of orders as they move through the packing stage, ensuring accurate status updates for operational visibility. Request Parameters: Name Required Type Description orderId yes string Id of the order that you wanna update packing status packingStatus yes string Packing status value can be packed or picked' requestBody: content: application/json: example: orderId: '123' packingStatus: packed schema: type: object responses: '200': description: '200' content: application/json: example: success: true message: Successfully updated /rest/v2/getPackingOrders: post: operationId: getPackingOrders summary: Get Orders Ready For Packing tags: - Stock Management description: 'This API endpoint retrieves a list of orders that are ready for pick and pack operations. This endpoint is designed to streamline warehouse workflows by providing access to orders that have completed prior processes and are prepared for fulfillment. Request Parameters: Name Required Type Description warehouseCode yes String pickupLocationCode of the warehouse.' requestBody: content: application/json: example: warehouseCode: WH123 schema: type: object responses: '200': description: 200 OK content: application/json: example: success: true count: 2 orders: - orderId: '11022' items: - productId: 112 name: test product quantity: 1 sku: test-product - name: test product 2 quantity: 1 sku: test-product-2 - orderId: '11051222' items: - productId: 12312 name: test2 product quantity: 1 sku: test-product - name: test3 product 3 quantity: 2 sku: test3-product-3 '401': description: 401 Unauthorized content: application/json: example: message: Jwt is expired code: 401 /rest/v2/availableStoresForPickup: post: operationId: availableStoresForPickup summary: Check Available Stores For Pickup tags: - Stock Management description: This API endpoint retrieves a list of physical stores where the requested items are currently available for customer pickup. By providing a list of SKUs with required quantities and a selected city, the endpoint validates stock availability and returns eligible stores that can fulfill the pickup request. The response includes detailed store information such as store name, location coordinates, address details, operating hours by day, and stock status. This endpoint is designed to support omnicha requestBody: content: application/json: example: items: - sku: Umberella-2 qty: 11 - sku: Umberella-1 qty: 11 selectedCity: Jeddah schema: type: object responses: '200': description: 200 OK content: application/json: example: success: true stores: - streetName: M5M8+5M storeHours: - from: 00:00 to: '23:30' day: monday - from: 00:00 to: '23:30' day: tuesday - from: 00:00 to: '23:30' day: wednesday - from: 00:00 to: '23:30' day: thursday - from: 00:00 to: '18:30' day: friday - from: 00:00 to: '23:30' day: saturday - from: 00:00 to: '23:30' day: sunday city: Jeddah district: King Abdulaziz International Airport storeName: BR-1 lon: 39.1732665 id: 17438 stock: available lat: 21.6609297 storeCode: br12 /rest/v2/availableCitiesForPickup: post: operationId: availableCitiesForPickup summary: Available Cities For Pickup tags: - Stock Management description: This API endpoint retrieves a list of cities where in-store pickup is currently supported. It allows marketplaces and merchants to identify eligible cities in which customers can select the pickup option during checkout or order creation. You can enable and disable it. from Warehouse/ Branch form. The response returns a simple list of city names where pickup-enabled stores are available, helping ensure that pickup options are only displayed for supported locations. This endpoint is designed to e responses: '200': description: '200' content: application/json: example: cities: - Jeddah - Aqiq success: true /rest/v2/getNationalAddressFromShortCode: post: operationId: getNationalAddressFromShortCode summary: Get NationalAddress From ShortCode tags: - National Address description: This API endpoint accepts a short address code (also called shortAddressCode or national address short code) and returns the complete national address details for the corresponding location in the Kingdom of Saudi Arabia. It allows you to quickly retrieve full address information from the abbreviated code. requestBody: content: application/json: example: shortAddressCode: RGUC8214 schema: type: object responses: '200': description: 200 OK content: application/json: example: data: zipCode: '12325' country: unitOfMeasurement: metricSystem createdDate: '2020-11-12T08:38:46' nameAr: المملكة العربية السعودية dateFormat: dateFormat.type1 name: Kingdom of Saudi Arabia modifiedDate: '2025-12-31T11:59:22' phoneCode: '966' currency: SAR id: 1 shortCode: SA countrySettings: monetizedIntroVideoAmount: 10 flag: Llq%2FIAM8asmOQzLTjHPCrUaI%2F3sqXwd9Hom6M6zcZsern0hyWdMhcWchHUGf0qEWsUBzL7dZWMHdygEgoEhmaA%3D%3D monetizedIntroVideoURL: '{"en":"https://www.youtube.com/watch?v=V-Ix9YgwO1s","ar":"https://www.youtube.com/watch?v=Wm9ihz01NO8"}' referralAvailable: true allowDistrictCustomValue: true otoFeePerOrder: 1.4 allowCityCustomValue: false starterOtoFeePerOrder: 1.3 refereeAmount: 25 vatPercentage: 15 refererAmount: 75 featureBreakdownJSON: "[\n\t{\n\t\t\"title\": \"Upgrade.generalFeatures\",\n\t\t\ \"properties\": [\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.multipleUsers\",\n\t\t\ \t\t\"free\": \"Upgrade.multipleUsers.Free\",\n\t\t\t\t\"startUp\": \"Upgrade.multipleUsers.Startup\"\ ,\n\t\t\t\t\"scale\": \"Upgrade.multipleUsers.Scale\",\n\t\t\t\t\"enterprise\"\ : \"Upgrade.multipleUsers.Enterprise\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\":\ \ \"Upgrade.MultipleWarehouses\",\n\t\t\t\t\"free\": \"Upgrade.MultipleWarehouses.Free\"\ ,\n\t\t\t\t\"startUp\": \"Upgrade.MultipleWarehouses.Startup\",\n\t\t\t\t\"scale\"\ : \"Upgrade.MultipleWarehouses.Scale\",\n\t\t\t\t\"enterprise\": \"Upgrade.MultipleWarehouses.Enterprise\"\ \n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.SalesChannels\",\n\t\t\t\t\"\ free\": \"Upgrade.SalesChannels.Free\",\n\t\t\t\t\"startUp\": \"Upgrade.SalesChannels.Startup\"\ ,\n\t\t\t\t\"scale\": \"Upgrade.SalesChannels.Scale\",\n\t\t\t\t\"enterprise\"\ : \"Upgrade.SalesChannels.Enterprise\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\":\ \ \"Upgrade.BrandConfigurations\",\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\"\ : \"Upgrade.BrandConfigurations.Startup\",\n\t\t\t\t\"scale\": \"Upgrade.BrandConfigurations.Scale\"\ ,\n\t\t\t\t\"enterprise\": \"Upgrade.BrandConfigurations.Enterprise\"\n\t\t\t\ },\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.Branches\",\n\t\t\t\t\"free\": false,\n\ \t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": false,\n\t\t\t\t\"enterprise\"\ : \"Upgrade.Branches.Enterprise\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.CODTransfers\"\ ,\n\t\t\t\t\"free\": \"Upgrade.CODTransfers.Free\",\n\t\t\t\t\"startUp\": \"Upgrade.CODTransfers.Startup\"\ ,\n\t\t\t\t\"scale\": \"Upgrade.CODTransfers.Scale\",\n\t\t\t\t\"enterprise\"\ : \"Upgrade.CODTransfers.Enterprise\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"\ Upgrade.CNS\",\n\t\t\t\t\"free\": \"Upgrade.CNS.Free\",\n\t\t\t\t\"startUp\":\ \ \"Upgrade.CNS.Startup\",\n\t\t\t\t\"scale\": \"Upgrade.CNS.Scale\",\n\t\t\t\t\ \"enterprise\": \"Upgrade.CNS.Enterprise\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\"\ : \"Upgrade.OTOPack\",\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\ \t\t\t\t\"scale\": \"Upgrade.OTOPack.Scale\",\n\t\t\t\t\"enterprise\": \"Upgrade.OTOPack.Enterprise\"\ \n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"title\": \"Upgrade.OrderMangementSystem\",\n\ \t\t\"properties\": [\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.ManualOrderCreation\"\ ,\n\t\t\t\t\"free\": true,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.ImportingBulkorders\"\ ,\n\t\t\t\t\"free\": true,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.SynchronizeProducts\"\ ,\n\t\t\t\t\"free\": true,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.ImportingProducts\"\ ,\n\t\t\t\t\"free\": true,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.CityCorrector\"\ ,\n\t\t\t\t\"free\": true,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.OrderSplitting\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.AutomatedHoldOrders\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": false,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.AutomatedConfirmation\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": false,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.CodConfirmationProcess\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": false,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.ClickCollect\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": false,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"title\": \"Upgrade.ReturnSystem\"\ ,\n\t\t\"properties\": [\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.ReturnLabels\"\ ,\n\t\t\t\t\"free\": true,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.returnLablesDifferentOrigin\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.ReturnPortal\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.CustomerSupportUser\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.ReturnPolicy\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": false,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"title\": \"Upgrade.TrackingAndNotification\"\ ,\n\t\t\"properties\": [\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.CustomizableTracking\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.CustomerFeedback\ \ \",\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\"\ : true,\n\t\t\t\t\"enterprise\": true\n\t\t\t},\n {\n\t\t \"label\"\ : \"Upgrade.CustomizableReturn\",\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\"\ : false,\n\t\t\t\t\"scale\": true,\n\t\t\t\t\"enterprise\": true\n\t\t\t},\n \ \ {\n\t\t \"label\": \"Upgrade.CustomizableDeliverySlot\",\n\t\t\t\t\ \"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": false,\n\t\t\ \t\t\"enterprise\": true\n\t\t\t},\n {\n\t\t\t\t\"label\": \"Upgrade.AddressVerification\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": false,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.TrackingSms\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.FailedDeliverySms\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.FeedbackSms\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.adManagement\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.SMTPSettings\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.EmailTemplate\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": false,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"title\": \"Upgrade.LastMile\"\ ,\n\t\t\"properties\": [\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.ShippingCalculator\"\ ,\n\t\t\t\t\"free\": true,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.OTORates\"\ ,\n\t\t\t\t\"free\": true,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.bulkAWBs\"\ ,\n\t\t\t\t\"free\": true,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.AWBwithInvoice\"\ ,\n\t\t\t\t\"free\": true,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.RealTimeTracking\"\ ,\n\t\t\t\t\"free\": true,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.YourOwnRates\"\ ,\n\t\t\t\t\"free\": \"Upgrade.YourOwnRates.Free\",\n\t\t\t\t\"startUp\": \"Upgrade.YourOwnRates.Startup\"\ ,\n\t\t\t\t\"scale\": \"Upgrade.YourOwnRates.Scale\",\n\t\t\t\t\"enterprise\"\ : \"Upgrade.YourOwnRates.Enterprise\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"\ Upgrade.TransactionFees\",\n\t\t\t\t\"free\": \"Upgrade.TransactionFees.Free\"\ ,\n\t\t\t\t\"startUp\": \"Upgrade.TransactionFees.Startup\",\n\t\t\t\t\"scale\"\ : \"Upgrade.TransactionFees.Scale\",\n\t\t\t\t\"enterprise\": \"Upgrade.TransactionFees.Enterprise\"\ \n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.OTOFlex\",\n\t\t\t\t\"free\"\ : false,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\t\t\t\t\"enterprise\"\ : true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.ShippingAutomationRules\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": \"\ Upgrade.ShippingAutomationRules.Scale\",\n\t\t\t\t\"enterprise\": \"Upgrade.ShippingAutomationRules.Enterprise\"\ \n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.PerformanceTracker\",\n\t\t\t\ \t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": true,\n\t\t\ \t\t\"enterprise\": true\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"title\": \"Upgrade.Support\"\ ,\n\t\t\"properties\": [\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.SupportChannels\"\ ,\n\t\t\t\t\"free\": \"Upgrade.SupportChannels.free\",\n\t\t\t\t\"startUp\": \"\ Upgrade.SupportChannels.Startup\",\n\t\t\t\t\"scale\": \"Upgrade.SupportChannels.Scale\"\ ,\n\t\t\t\t\"enterprise\": \"Upgrade.SupportChannels.Enterprise\"\n\t\t\t},\n\t\ \t\t{\n\t\t\t\t\"label\": \"Upgrade.KnolwedgeBase \",\n\t\t\t\t\"free\": true,\n\ \t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\t\t\t\t\"enterprise\":\ \ true\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"title\": \"Upgrade.ReportsAndAnalytics\"\ ,\n\t\t\"properties\": [\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.AnalyticsDashboard\"\ ,\n\t\t\t\t\"free\": true,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.CODReports\ \ \",\n\t\t\t\t\"free\": true,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\"\ : true,\n\t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"\ Upgrade.DCPerformance\",\n\t\t\t\t\"free\": true,\n\t\t\t\t\"startUp\": true,\n\ \t\t\t\t\"scale\": true,\n\t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\ \t\t\"label\": \"Upgrade.CustomerAnalysis\",\n\t\t\t\t\"free\": true,\n\t\t\t\t\ \"startUp\": true,\n\t\t\t\t\"scale\": true,\n\t\t\t\t\"enterprise\": true\n\t\ \t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.DriversPerformance\",\n\t\t\t\t\"\ free\": false,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\t\t\t\t\ \"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.BrandPerformance\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.WarehousePerformance\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": true,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.SLABreaches\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.BranchPerformance\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": true,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"label\": \"Upgrade.CustomReports\"\ ,\n\t\t\t\t\"free\": false,\n\t\t\t\t\"startUp\": false,\n\t\t\t\t\"scale\": false,\n\ \t\t\t\t\"enterprise\": true\n\t\t\t}\n\t\t]\n\t}\n]" id: 186 minimumChargeAmount: 10 mapSettings: null allowStateCustomValue: false configJSON: "{\n\t\"country\": {\n\t\t\"show\": true,\n\t\t\"label\": \"country\"\ ,\n\t\t\"required\": true,\n\t\t\"col\": 12\n\t},\n\t\"fullAddressLine\": {\n\t\ \t\"show\": true,\n\t\t\"label\": \"fullAddressLine\",\n\t\t\"placeholder\": \"\ fullAddressPlaceholder\",\n\t\t\"shortAddress\": true,\n\t\t\"autocomplete\":\ \ true,\n\t\t\"required\": true,\n\t\t\"col\": 12\n\t},\n\t\"building\": {\n\t\ \t\"show\": true,\n\t\t\"label\": \"building\",\n\t\t\"col\": 6\n\t},\n\t\"street\"\ : {\n\t\t\"show\": true,\n\t\t\"label\": \"street\",\n\t\t\"col\": 6\n\t},\n\t\ \"secondary\": {\n\t\t\"show\": true,\n\t\t\"label\": \"secondaryAddressFieldLabel\"\ ,\n\t\t\"col\": 6\n\t},\n\t\"city\": {\n\t\t\"show\": true,\n\t\t\"complex\":\ \ true,\n\t\t\"label\": \"city\",\n\t\t\"required\": true,\n\t\t\"col\": 6\n\t\ },\n\t\"district\": {\n\t\t\"show\": true,\n\t\t\"label\": \"district\",\n\t\t\ \"allowCustomValue\": true,\n\t\t\"col\": 6\n\t},\n\t\"zipCode\": {\n\t\t\"show\"\ : true,\n\t\t\"label\": \"zipCode\",\n\t\t\"col\": 6\n\t}\n}" hasShortAddress: true ecomPlusFee: null paymentGatewayType: TAP_PAYMENT hasNeighbourhood: false otoSMSProviderId: 11 allowedCountries: SA,BH,AE,OM,QA,KW,CN,CA hasState: true minimumBankTransferLimit: 500 createdDate: '2024-10-31T07:26:46' zipCodeRequired: false internationalDocRequirement: false bankTransferAvailable: true bankTransferReceiverAccount: '{"bankName":"BANK ALJAZIRA","ibanNumber":"SA8460100032095017958001","bankHolderName":"OTO Global Arabia IT Company"}' modifiedDate: '2025-12-31T11:59:22' scaleOtoFeePerOrder: 0.5 useComplexCityComponent: true chargeCreditOptions: 100,500,1000,2000,4000 status: active districtName: East Umm Al Hamam lng: '46.65533407' city: createdDate: '2019-10-22T15:40:45' stateID: 2777018 name: Riyadh modifiedDate: '2025-12-30T00:49:31' id: 1 countryName: SA countryID: 1 defaultZipCode: '12251' stateID: 2777018 cityID: 1 countryID: 1 secondary: '4593' buildingName: '8214' streetName: Wadi Samael districtID: 2783096 shortAddressCode: RGUC8214 cityName: Riyadh stateName: Riyadh Province neighbourhoodName: null neighbourhood: null district: createdDate: '2024-07-30T12:21:28' name: East Umm Al Hamam modifiedDate: '2024-07-30T12:21:28' id: 2783096 cityID: 1 countryShortCode: SA countryName: Kingdom of Saudi Arabia state: deliveryCompanies: null createdDate: null name: Riyadh Province modifiedDate: null id: 2777018 countryName: null shortCode: RYD countryID: 1 neighbourhoodID: null formattedFullAddress: 8214, Wadi Samael, 4593, East Umm Al Hamam, 12325, Riyadh, Kingdom of Saudi Arabia, RGUC8214 lat: '24.69447065' success: true /rest/v2/webhook: post: operationId: webhook summary: webhook tags: - Webhook description: 'This endpoint enables OTO to send update payloads to the specified URL using the defined method. Optional security measures, such as token authentication and payload validation, can be configured for enhanced security. Request Parameters: Name Required Type Description method yes string POST or PUT url yes string Your endpoint listens to get OTO webhook payload, when order status changes. exp. https://webhook.site/3e53c98a-a089-4ca4-9bc4-df10e5a71e4b secretKey no string With this key message is ' requestBody: content: application/json: example: method: post url: https://webhook.site/3e53c98a-a089-4ca4-9bc4-df10e5a71e4b orderPrefix: fulfillment timestampFormat: '2025-01-01 13:14:34' secretKey: key1234 authorizationKey: authorizationkey123 webhookType: shipmentError schema: type: object responses: '200': description: 200 webhook-order status content: application/json: example: success: true id: '59' message: webhook has been created get: operationId: getWebhook summary: webhook tags: - Webhook description: 'This endpoint allows you to retrieve a list of all registered webhook definitions. It provides detailed information about each webhook, including its configuration and associated event triggers, enabling you to manage and review your webhook integrations effectively. Note: You can filter by id if you know the id of the webhook. Request Parameters: Name Required Type Description id no string id of the webhook' responses: '200': description: '200' content: application/json: example: webhooks: - method: post secretKey: secret123 authorizationKey: authorization123 timestampFormat: '2025-01-01 10:10:10' id: 59 url: https://webhook.site/3e53c98a-a089-4ca4-9bc4-df10e5a71e4b orderPrefix: fulfillment success: true put: operationId: putWebhook summary: webhook tags: - Webhook description: 'This API endpoint allows updating an already registered webhook by providing its unique ID. This ensures you can modify existing webhook configurations, such as URL, secretKey, or other parameters, without needing to delete and recreate it. Request Parameters: Name Required Type Description id yes string Id of the webhook record. method yes string POST or PUT url yes string Your endpoint listens to get OTO webhook payload, when order status changes. exp. https://webhook.site/3e53c98a-a089-4ca4-9' requestBody: content: application/json: example: id: 59 method: post url: https://webhook.site/3e53c98a-a089-4ca4-9bc4-df10e5a71e4b orderPrefix: test-2 timestampFormat: '2025-01-01 10:10:10' secretKey: secret123 authorizationKey: authorizationkey123 webhookType: orderStatus schema: type: object responses: '200': description: '200' content: application/json: example: success: true message: webhook has been updated delete: operationId: deleteWebhook summary: webhook tags: - Webhook description: 'This API endpoint enables the removal of a registered webhook from the system using its unique ID. This ensures you can effectively manage and clean up webhook configurations that are no longer needed. Request Parameters: Name Required Type Description id yes string Id of the webhook record.' responses: '200': description: webhook content: application/json: example: success: true message: webhook has been deleted /rest/v2/assignDriver: post: operationId: assignDriver summary: assignDriver tags: - OTO FLEX description: 'This API endpoint enables clients to assign a specific driver to their shipments for the OTO Flex app. This endpoint streamlines the allocation process, allowing businesses to efficiently manage driver assignments and ensure smooth delivery operations. Either valid driverID or driverEmail is required. Request Paramaters: Name Required Type Description orderIDs yes array An array of orderIDs objects containing the order ids driverID yes (If driverEmail isn''t present) long ID of the driver driverE' requestBody: content: application/json: example: orderIDs: - 3079460 driverID: 8702 driverEmail: test@driver.com schema: type: object responses: '200': description: 200 OK driverId content: application/json: example: '31071127': success: true otoId: 31071127 /rest/v2/trackDriver: post: operationId: trackDriver summary: trackDriver tags: - OTO FLEX description: This API endpoint provides real-time location updates for a specific order within the Oto Flex application and for the OTO Flex orders. By continuously tracking the active driver's GPS position, the endpoint returns a stream of latitude and longitude updates , allowing the client to monitor the order’s movement throughout the delivery journey. Name Required Type Description orderId yes string OrderId of the OTO flex shipment requestBody: content: application/json: example: orderID: OID-9885-70000203806 schema: type: object responses: '200': description: '200' content: application/json: example: lng: 29.285591158223777 data: - createdDate: '2025-11-12T18:04:29.273Z' lng: 29.285591158223777 onDuty: true lat: 40.96489515570657 - createdDate: '2025-11-12T18:04:08.171Z' lng: 29.286784231123974 onDuty: true lat: 40.96497927896817 - createdDate: '2025-11-12T18:01:35.302Z' lng: 29.286580389904795 onDuty: true lat: 40.96435106894622 - createdDate: '2025-11-12T18:00:52.093Z' lng: 29.28637669086292 onDuty: true lat: 40.96449471804315 - createdDate: '2025-11-12T18:00:51.362Z' lng: 29.28637110062752 onDuty: true lat: 40.964506384859355 - createdDate: '2025-11-12T17:56:40.196Z' lng: 29.294892153533794 onDuty: true lat: 40.956111235680105 - createdDate: '2025-11-12T17:56:40.129Z' lng: 29.286636752864517 onDuty: true lat: 40.96452744380308 - createdDate: '2025-11-12T17:56:40.109Z' lng: 29.286636752864517 onDuty: true lat: 40.96452744380308 - createdDate: '2025-11-12T17:56:40.080Z' lng: 29.294892153533794 onDuty: true lat: 40.956111235680105 - createdDate: '2025-11-12T17:56:40.037Z' lng: 29.294892153533794 onDuty: true lat: 40.956111235680105 - createdDate: '2025-11-12T16:20:24.488Z' lng: 29.28652829734919 onDuty: true lat: 40.96445449486164 - createdDate: '2025-11-12T16:20:23.556Z' lng: 29.28648490515261 onDuty: true lat: 40.96453081227422 - createdDate: '2025-11-12T16:20:23.483Z' lng: 29.286484905143116 onDuty: true lat: 40.96453081237234 - createdDate: '2025-11-12T14:33:53.009Z' lng: 29.28333783075058 onDuty: true lat: 40.96393364160413 - createdDate: '2025-11-12T14:33:53.004Z' lng: 29.283292890084162 onDuty: true lat: 40.963989271862516 - createdDate: '2025-11-12T14:33:52.986Z' lng: 29.28329548074905 onDuty: true lat: 40.96400527320485 - createdDate: '2025-11-12T13:45:17.189Z' lng: 29.286636752864517 onDuty: true lat: 40.96452744380308 - createdDate: '2025-11-12T13:45:17.185Z' lng: 29.286636752864517 onDuty: true lat: 40.96452744380308 - createdDate: '2025-11-12T13:42:50.935Z' lng: 29.286636752864517 onDuty: true lat: 40.96452744380308 - createdDate: '2025-11-12T13:42:50.796Z' lng: 29.286636752864517 onDuty: true lat: 40.96452744380308 lastLatLonUpdated: '2025-11-12T18:04:29.273Z' driverName: Cinar id: 1028 userID: 12872 onDuty: true lat: 40.96489515570657