Welcome to the API documentation! This page provides information about the available API endpoints and their usage. Please review the documentation before making API calls.
Base URL: Will be provided for staging and production environments
Requirements:
Authentication: The API requires authentication using an bearer token.
Include the token in the Authorization request header
Authorization: Bearer the_provided_api_token.
Pickup location code: You will have one unique identifier per pickup location which will be provided by SLM.
Creates a new shipping order in the database and returns a voucher to be printed and stuck on the parcel.
Instructions about the pickup date and times: The pickup date must be the date the order will be ready for pickup from the merchant location. At pickup times you can use either the morning pickup window (10:00-14:00) or the afternoon one (15:00-17:00). Please note that you can use today as a pickup date with the afternoon pickup window but only if the order is created until 14:00.
There are three supported order creation flows: Skroutz Point delivery with a preselected locker, Skroutz Point delivery where SLM selects the closest locker based on address, and home delivery to a customer-provided address.
Endpoint: POST /api/v1/shipping_order
Order creation modes:
| Flow | Required destination fields | Explanation |
|---|---|---|
| Locker delivery with selected Skroutz Point | skroutz_point_id |
The client has already selected a specific Skroutz Point. |
| Locker delivery to closest Skroutz Point |
recipient_address_text, recipient_zip,
recipient_city
|
The client provides area details and SLM selects the closest available Skroutz Point. |
| Home delivery |
recipient_street_name, recipient_street_number,
recipient_city, recipient_zip
|
The parcel is delivered to the full customer address. |
Variables:
| Name | Type | Explanation |
|---|---|---|
| customer_reference | string | The customer reference (Your internal unique identifier of the order) |
| is_return | boolean | Indicates if the shipment is a return (Always use false) |
| number_of_parcels | number | The number of parcels (Always use 1 for Skroutz Point deliveries, multiple-package orders are not supported, please spit them to more shipping orders to send them.) |
| pickup_date | string ("YYYY-MM-DD") |
The date of the order pickup |
| pickup_location_code | string | The unique code for the pickup location. It corresponds to a pre-agreed location for picking up parcels. A merchant can have multiple pickup location codes where each one corresponds to a different pickup location. |
| pickup_notes | string | Any additional notes for the pickup |
| pickup_time_from | UTC datetime | The start time of the pickup time window |
| pickup_time_to | UTC datetime | The end time of the pickup time window |
| recipient_name | string | The full name of the recipient |
| recipient_phone | string | The mobile phone number of the recipient |
| sender_phone | string | The phone number of the merchant |
| sender_name | string | The name of the merchant sender (optional) |
| skroutz_point_id | string | The ID of the chosen Skroutz Point locker from the map (Mandatory when the client has selected a locker) |
| recipient_address_text | string | Free-text address used to identify the closest locker (Mandatory when SLM should select the closest locker) |
| recipient_street_name | string | Street name of the recipient's address (Mandatory for home delivery) |
| recipient_street_number | string | Street number of the recipient's address (Mandatory for home delivery) |
| recipient_city | string | City of the recipient's address (Mandatory for home delivery and closest-locker selection) |
| recipient_zip | string | Zip code of the recipient's address (Mandatory for home delivery and closest-locker selection) |
| weight | number | The weight of the parcel |
| external_tracking_number | string | External partner voucher (optional) |
| estimated_slot_size | string | Estimated slot size where the parcel fits. Possible values: {null, 'S', 'S_SB', 'M', 'M_SB', 'L', 'L_SB', 'XL'} |
Example Request Body: Locker Delivery With Selected Locker
{
"customer_reference": "CustRef123",
"is_return": false,
"number_of_parcels": 1,
"pickup_date": "2026-10-22",
"pickup_location_code": "zbamies",
"pickup_notes": "Απο την πλαινή πόρτα",
"pickup_time_from": "2026-10-22T12:00:00+00:00",
"pickup_time_to": "2026-10-22T14:00:00+00:00",
"recipient_name": "Γιώργος Αποστολόπουλος",
"recipient_phone": "6900000000",
"sender_phone": "2100000000",
"skroutz_point_id": "skroutz_demo",
"weight": 2.5,
"estimated_slot_size": "S_SB"
}
Example Request Body: Locker Delivery With Closest Locker Selection
{
"customer_reference": "CustRef123",
"is_return": false,
"number_of_parcels": 1,
"pickup_date": "2026-10-22",
"pickup_location_code": "zbamies",
"pickup_notes": "Απο την πλαινή πόρτα",
"pickup_time_from": "2026-10-22T12:00:00+00:00",
"pickup_time_to": "2026-10-22T14:00:00+00:00",
"recipient_name": "Γιώργος Αποστολόπουλος",
"recipient_phone": "6900000000",
"sender_phone": "2100000000",
"recipient_address_text": "Πλουτάρχου 10",
"recipient_city": "Αθήνα",
"recipient_zip": "10676",
"weight": 2.5,
"estimated_slot_size": "S_SB"
}
Example Request Body: Home Delivery
{
"customer_reference": "CustRef123",
"is_return": false,
"number_of_parcels": 1,
"pickup_date": "2026-10-22",
"pickup_location_code": "zbamies",
"pickup_notes": "Απο την πλαινή πόρτα",
"pickup_time_from": "2026-10-22T12:00:00+00:00",
"pickup_time_to": "2026-10-22T14:00:00+00:00",
"recipient_name": "Γιώργος Αποστολόπουλος",
"recipient_phone": "6900000000",
"sender_phone": "2100000000",
"recipient_street_name": "Πλουτάρχου",
"recipient_street_number": "10",
"recipient_city": "Αθήνα",
"recipient_zip": "10676",
"weight": 2.5
}
Example Response:
{
"success": true,
"order_id": "soid123",
"tracking_ids": ["X84K9ZN13K0W5"]
}
Returns tracking information on the parcel delivery and pickup.
Endpoint: GET /api/v1/shipment/track/:tracking_id
Variables:
| Name | Type | Explanation |
|---|---|---|
| tracking_id | string | The tracking ID of the shipment |
Example Response:
{
"success": true,
"status_description": "picked_up",
"courier_notes": "Parcel picked up",
"picked_up_at": "2023-06-05T12:30:00+00:00",
"delivered_at": null,
"updated_at": "2023-06-05T12:30:00+00:00",
"expected_day_of_delivery": null,
"shipping_order_id": "order123",
"TrackingDetails": [
{
"created_at": "2023-06-05T12:30:00+00:00",
"description": "Shipment was picked up",
"notes": "Parcel collected from sender"
}
]
}
This is the exact response format returned by the GET /api/v1/shipment/track/:tracking_id
endpoint.
Cancel an order any time before it is received by the customer.
Endpoint: DELETE /api/v1/shipping_order/:order_id
Example Response:
{
"success": true
}
Returns the voucher on pdf or base64 encoded string
Endpoint: GET api/v1/shipping_order/voucher/:tracking_id
Variables:
| Name | Type | Explanation |
|---|---|---|
| tracking_id | string | The tracking ID of the shipment |
| paper_size | string | The form of the voucher to print, can be 'thermal' or 'A4' |
| direct_download | boolean | If it is true it returns the voucher as pdf file, else as a base64 encoded string |
Used to reschedule the pickup date and time window for an order. Use the same instruction for these fields as in the order creation endpoint.
Endpoint: PUT api/v1/shipping_order/:order_id
Variables:
| Name | Type | Explanation |
|---|---|---|
| pickup_date | string("YYYY-MM-DD") |
The date of the order pickup |
| pickup_time_from | UTC datetime | The start time of the pickup time window |
| pickup_time_to | UTC datetime | The end time of the pickup time window |
Example Request Body:
{
"pickup_date": "2023-06-19",
"pickup_time_from": "2023-06-19T12:00:00+00:00",
"pickup_time_to": "2023-06-19T14:00:00+00:00"
}
Example Response:
{
"success": true,
"order_id": "soid123",
"tracking_ids": ["X84K9ZN13K0W5"]
}
Returns all available lockers for the consumer to choose from.
Endpoint: GET /mapwidget/list_all
Example Response:
{
"skroutz_points": [
{
"id": "sb_roma_pizza_glyfada",
"type": "locker",
"name": "Skroutz Point Roma Pizza Γλυφάδα (Σοφίας Βέμπο)",
"street_name": "Σοφίας Βέμπο",
"street_number": "33",
"city": "Γλυφάδα",
"zip": "16561",
"region": "Αττική",
"working_hours": [
{
"to": "24:00",
"day": "Monday",
"from": "12:00"
},
{
"to": "24:00",
"day": "Tuesday",
"from": "12:00"
},
{
"to": "24:00",
"day": "Wednesday",
"from": "12:00"
},
{
"to": "24:00",
"day": "Thursday",
"from": "12:00"
},
{
"to": "24:00",
"day": "Sunday",
"from": "12:00"
}
],
"indoor": true,
"lng": 37.880232923,
"lat": 23.758159832,
"model": "SwipboxInfinity",
"active": true,
"obsolete": false,
"swipbox_version": "v2"
}
]
}
Webhook notifications for shipment tracking use the same payload structure as the
GET /api/v1/shipment/track/:tracking_id response.
Payload Structure:
{
"status_description": "Enum",
"courier_notes": "string | null",
"picked_up_at": "datetime | null",
"delivered_at": "datetime | null",
"updated_at": "datetime",
"expected_day_of_delivery": "datetime | null",
"shipping_order_id": "string",
"TrackingDetails": [
{
"created_at": "datetime",
"description": "string",
"notes": "string"
}
]
}
| status_description | Explanation |
|---|---|
| awaiting_pickup | Not yet collected from sender. |
| picked_up | Collected from sender. |
| assigned_to_courier_for_delivery | Handed off to a courier for final delivery. |
| delivered | Successfully delivered to recipient. |
| recipient_rejected | Recipient refused the parcel. |
| returning_to_sender | In transit back to sender. |
| returned_to_sender | Parcel fully returned to the sender. |
| attempted_delivery | Delivery was attempted but failed. |
| lost_or_damaged | Parcel confirmed lost or damaged. |
| at_locker | Parcel is stored in a locker awaiting pickup. |
| at_courier_store | Parcel is in a PUDO store awaiting pickup. |
| TrackingDetails.description | Explanation |
|---|---|
| Waiting For Pickup | Parcel is registered and awaiting collection from the sender. |
| Shipment was assigned to courier for delivery | Parcel has been assigned to a courier for final delivery. |
| Shipment was picked up | Parcel was collected from the sender. |
| Shipment was delivered | Parcel was successfully delivered to the recipient. |
| Shipment was not delivered | Delivery attempt failed (generic reason). |
| Shipment was not delivered. Recipient rejected | Recipient explicitly refused to accept the parcel. |
| Order was cancelled | The shipment order has been cancelled. |
| Collected expired order | Courier collected an order not picked up from a locker in time. |
| Order was marked as lost | Parcel confirmed as lost. |
| Order was marked as damaged | Parcel confirmed as damaged. |