Fetch Delivery Slots
This endpoint is part of the advanced Home Delivery integration, where consumers can choose between different available delivery days. Only implement this if you have agreed on this setup with your Implementation Manager.
For the standard integration, use Validate Postal Code instead — which simply confirms whether we deliver to the postal code.
The Availability API accepts both GET and POST requests and returns available delivery windows for home delivery.
Overview
When using the advanced delivery slot flow, this endpoint allows you to:
- Validate if a postal code is serviceable
- Get available delivery slots for an address
- Filter options by brand, dates, and other preferences
Current setup looks something like this:
With Instabee API we will be able to clean up the above mess
And in the future this will enable us to get to this beautiful stage.
Key Concepts
Availability Token
Availability API endpoints return an availability token that you must save and use when creating a parcel. This token contains essential information about the selected delivery option and is valid for 14 days. Optional integration paths exist, talk to your Implementation Manager for more information.
Postal Code Validation
Validating a postal code is the first step in determining if Instabee can provide delivery services to a particular area. Not all postal codes are serviceable - this can depend on the delivery type (home vs locker) and brand.
Delivery Windows
For home delivery services, the API returns time slots (delivery windows)if requested when a delivery can be made. These slots typically include:
- Date (YYYY-MM-DD format)
- Start time (HH:MM format)
- End time (HH:MM format)
Endpoints
| Name | Endpoint | Method | Header | Description |
|---|---|---|---|---|
| Get Delivery Options (production) | api.integration.instabee.com/availability/countries/{countryCode}/postal-codes/{postalCode}/delivery-options | GET / POST | Auth key, version, content header | Unified endpoint for both locker and home delivery options. Use GET for simple requests, POST for complex requests with full context |
| Get Delivery Options (sandbox) | sandbox-api.integration.instabee.com/availability/countries/{countryCode}/postal-codes/{postalCode}/delivery-options | GET / POST | Auth key, version, content header | Same path as production; use sandbox credentials. |
Unified Endpoint Design
The new Availability API consolidates all delivery options into a single, unified endpoint that supports both GET and POST methods:
- GET Method: For lightweight requests using query parameters (minimal availability checks)
- POST Method: For full-featured requests with request body (complex scenarios with cart, dispatch, options)
Get Delivery Options
Unified Endpoint for All Delivery Types
Endpoint
Production
GET/POST api.integration.instabee.com/availability/countries/{countryCode}/postal-codes/{postalCode}/delivery-options
Sandbox
GET/POST sandbox-api.integration.instabee.com/availability/countries/{countryCode}/postal-codes/{postalCode}/delivery-options
Same path as production; use sandbox credentials.
Path Parameters:
{countryCode}- Required. Country code (DK, FI,NO, SE){postalCode}- Required. Postal code to check availability
Query Parameters (Required for both GET and POST):
brand- Required. Brand identifier (e.g.,budbee,porterbuddy)product- Required. Product type:HOME_DELIVERY
You can call this endpoint with different levels of information depending on your needs.
Home Delivery
Get Home Delivery Options
Endpoint
Production
GET/POST api.integration.instabee.com/availability/countries/{countryCode}/postal-codes/{postalCode}/delivery-options
Sandbox
GET/POST sandbox-api.integration.instabee.com/availability/countries/{countryCode}/postal-codes/{postalCode}/delivery-options
Same path as production; use sandbox credentials.
Required Query/Body Parameters:
brand- Brand identifierproduct- Set toHOME_DELIVERY
1POST /availability/countries/SE/postal-codes/11353/delivery-options 2Content-Type: application/json1POST /availability/countries/SE/postal-codes/11353/delivery-options 2Content-Type: application/json
1{ 2 "brand": "instabox", 3 "product": "HOME_DELIVERY", 4 "recipient": { 5 "street": "Hälsingegatan 40", 6 "city": "Stockholm", 7 "email": "test@instabee.com" 8 }, 9 "deliverySlotCount": 7 10}1{ 2 "brand": "instabox", 3 "product": "HOME_DELIVERY", 4 "recipient": { 5 "street": "Hälsingegatan 40", 6 "city": "Stockholm", 7 "email": "test@instabee.com" 8 }, 9 "deliverySlotCount": 7 10}
Response Code: 201 (Created)
1{ 2 "availabilityToken": "019d8c17-7f32-74bf-8257-bde6184c63db", 3 "checkoutId": "XBO12-2923048", 4 "deliveryOptions": [ 5 { 6 "sortCode": "INh0", 7 "type": "HOMEDELIVERY", 8 "brand": "Instabox", 9 "deliveryOption": "Monday May 13, 16:00-22:30", 10 "deliveryOptionWithEta": "Monday May 13, 16:00-22:30", 11 "eta": { 12 "certainty": "INTERVAL", 13 "etaInterval": { 14 "from": "2025-05-13T16:00:00.000Z", 15 "to": "2025-05-13T22:30:00.000Z" 16 } 17 }, 18 "localEta": { 19 "date": "2025-05-13", 20 "dayText": "Monday" 21 }, 22 "packBeforeDatetime": "2025-05-12T19:30:00.000Z", 23 "consumerCutoffDatetime": "2025-05-11T12:00:00.000Z", 24 "consolidation": false 25 } 26 ], 27 "preselection": "RECOMMENDED", 28 "responseExpiresAt": "2026-04-14T14:04:03.378Z", 29 "showAsOptionInCheckout": true 30}1{ 2 "availabilityToken": "019d8c17-7f32-74bf-8257-bde6184c63db", 3 "checkoutId": "XBO12-2923048", 4 "deliveryOptions": [ 5 { 6 "sortCode": "INh0", 7 "type": "HOMEDELIVERY", 8 "brand": "Instabox", 9 "deliveryOption": "Monday May 13, 16:00-22:30", 10 "deliveryOptionWithEta": "Monday May 13, 16:00-22:30", 11 "eta": { 12 "certainty": "INTERVAL", 13 "etaInterval": { 14 "from": "2025-05-13T16:00:00.000Z", 15 "to": "2025-05-13T22:30:00.000Z" 16 } 17 }, 18 "localEta": { 19 "date": "2025-05-13", 20 "dayText": "Monday" 21 }, 22 "packBeforeDatetime": "2025-05-12T19:30:00.000Z", 23 "consumerCutoffDatetime": "2025-05-11T12:00:00.000Z", 24 "consolidation": false 25 } 26 ], 27 "preselection": "RECOMMENDED", 28 "responseExpiresAt": "2026-04-14T14:04:03.378Z", 29 "showAsOptionInCheckout": true 30}
Response Details:
product: UseHOME_DELIVERYfor home delivery requeststype: Delivery type in UPPERCASE format ("HOMEDELIVERY")
Request Parameters
The Availability API accepts various parameters to customize the delivery options returned. Here's a comprehensive reference of all available parameters.
Endpoint Overview
| Endpoint | Method | Description |
|---|---|---|
/availability/countries/{countryCode}/postal-codes/{postalCode}/delivery-options | GET | Lightweight availability check with query parameters |
/availability/countries/{countryCode}/postal-codes/{postalCode}/delivery-options | POST | Full-featured availability check with request body |
Path Parameters
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
| countryCode | string | required | Country code for the delivery address | DK, FI, NO, SE |
| postalCode | string | required | Postal code to check availability |
Query Parameters (GET Method)
For GET requests, these parameters are passed as query strings:
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
| brand | string | required | Brand identifier | budbee, porterbuddy |
| product | string | required | Product type | HOME_DELIVERY |
| address | string | optional | Recipient street address | Use %20 for space |
| city | string | optional | Recipient city | |
| string | optional | Recipient email (for geolocation and favorites) | ||
| deliverySlotCount | number | optional | Number of delivery slots to return | Min: 5, Max: 10 |
| deliverySlotsByDate | string | optional | Specific date range for delivery slots | ISO-8601 date format |
| readyToShip | string | optional | When parcel is ready for pickup | ISO-8601 datetime |
| readyToPack | string | optional | When packing process will start | ISO-8601 datetime |
Request Body (POST Method)
The Availability API accepts a JSON request body with detailed information about the recipient, cart, and delivery preferences.
| Parameter | Type | Required | Description | Enum | Comment |
|---|---|---|---|---|---|
| brand | string | required | Brand identifier | budbee, porterbuddy | Required parameter |
| product | string | required | Product type | HOME_DELIVERY | Required parameter |
| merchantBrandId | string | optional | Currently not live. For merchants with multiple brand configurations. Needs to be configured by your implementation manager | ||
| recipient | object | optional | Recipient information | ||
| dispatch | object | optional | Define when a parcel will be ready for pickup. And where it will be packed from, if partner uses multiple warehouses | ||
| options | object | optional | Define what information should be returned in the response. Also possible to set language. | ||
| cart | object | optional | Send information about the parcel and/or products in the parcel | ||
| deliverySlotCount | number | optional | Number of delivery slots to return | Min: 5, Max: 10 | |
| deliverySlotsByDate | string | optional | Specific date range for delivery slots | ISO-8601 date format | YYYY-MM-DD,YYYY-MM-DD |
recipient
| Parameter | Type | Required | Description | Constraints | Enum | Comment |
|---|---|---|---|---|---|---|
| name | string | optional | Recipient name | |||
| string | optional | Recipient email | Valid email, e.g email@domain.com | |||
| phone | string | optional | Recipient mobile phone number | Minimum 6 digits and maximum 15 digits | ||
| ssn | string | optional | Social security number | YYMMDDXXXX | For age verification services | |
| street | string | optional | Recipient address | |||
| street2 | string | optional | Recipient additional address information | |||
| postalCode | string | required* | Recipient postal code | |||
| city | string | optional | Recipient city | |||
| countryCode | string | required* | Recipient country code | ISO 3166 alpha 2 | "SE", "DK", "NO", "FI" |
dispatch
| Parameter | Type | Required | Description | Constraints | Enum |
|---|---|---|---|---|---|
| readyToShip | string | optional | When the parcel is ready for pickup. Instabee will look for the next pickup time based on this datetime | ISO-8601-date | |
| readyToPack | string | optional | When the parcels packing process will be initiated. Instabee will add packing time to this datetime | ISO-8601-date | |
| outOfStock | boolean | optional | One of the products in the checkout is out of stock. This will remove the ETA from the delivery options. Parcel can be packed whenever in the future. | true/false | |
| packingTime | number | optional | The number of minutes of packing time that is required for the items in the checkout | ||
| collectionPointId | string | optional | This is to define a specific warehouse the products will be sent from. The warehouse ID will be defined by configuration on Instabee side |
Note: Only one of readyToShip, readyToPack, outOfStock can be provided
options
| Parameter | Type | Required | Description | Constraints | Enum |
|---|---|---|---|---|---|
| responseFields | object | optional | Define which information should be returned in the Availability API response | ||
| languageCode | string | optional | Define the language of e.g descriptions and local term of the response. If omitted, this will default to the main language based on the countryCode | ISO 639-1 |
options.responseFields
| Parameter | Type | Required | Description | Enum |
|---|---|---|---|---|
| price | boolean | optional | If set to true a dynamic price for the delivery option can be returned in the Availability API response. This needs to be agreed and configured together with Instabee. | true/false |
| localEtas | boolean | optional | If set to true a set of different local terms of the delivery promise will be returned in the Availability API response | true/false |
| estimatedParcelType | boolean | optional | If set to true a calculated estimated parcel size will be returned in the Availability API response. This needs to be configured | true/false |
| sender | boolean | optional | Not currently implemented. If set to true the sender information sent in the Availability API request will be returned | true/false |
| recipient | boolean | optional | Not currently implemented. If set to true the sender information sent in the Availability API request will be returned | true/false |
cart
| Parameter | Type | Required | Description | Enum |
|---|---|---|---|---|
| checkoutId | string | optional | The checkout session ID | |
| orderNumber | string | optional | The merchants order number | |
| totalValueInCents | number | optional | Total value of the contents inside of the cart/parcel | |
| totalWeightInGrams | number | optional | Total weight of the cart/parcel in grams | |
| parcel | object | optional | Parcel object |
cart.parcel
| Parameter | Type | Required | Description | Enum |
|---|---|---|---|---|
| heightMm | number | optional | Height of the parcel in mm | |
| widthMm | number | optional | Width of the parcel in mm | |
| lengthMm | number | optional | Length of the parcel in mm | |
| volumeDm3 | number | optional | Volume of the parcel in liters | |
| estimatedSize | string | optional | Estimated size of the parcel. The sizes will be configured together with Instabee | SMALL, LARGE, TOOLARGE |
| weightGram | number | optional | The weight of the parcel in gram | |
| type | string | optional | Type of the parcel material | BOX, BAG |
| products | object | optional | Products inside of the parcel |
cart.parcel.products
| Parameter | Type | Required | Description | Enum | Comment |
|---|---|---|---|---|---|
| name | string | optional | Name of the product | ||
| quantity | string | optional | Quantity of the product | ||
| productId | string | optional | The unique identifier of the product e.g EAN number | Not to be confused with (product) serial number. | |
| details | string | optional | Details of the product | ||
| temperature | object | optional | Temperature restraints of the product |
cart.parcel.products.details
| Parameter | Type | Required | Description | Enum |
|---|---|---|---|---|
| productType | string | optional | Type of product, e.g Toys | |
| imgUrl | string | optional | An URL link to the image of the product | |
| category | string | optional | The category of the product e.g Plushie | |
| brand | string | optional | The brand of the product | |
| description | string | optional | The description of the product | |
| price | object | optional | The price of the product for a single item |
cart.parcel.products.details.price
| Parameter | Type | Required | Description | Constraints | Enum | Comment |
|---|---|---|---|---|---|---|
| priceInCents | number | optional | Price of a single item in cents without discount | |||
| taxRateInCents | number | optional | The tax rate of the item in cents | % | ||
| discountRateInCents | number | optional | The active discount set on the product in cents | |||
| currency | string | optional | The currency of the checkout session | ISO-4217 | SEK, NOK, DKK, EUR |
cart.parcel.products.details.temperature
| Parameter | Type | Required | Description | Constraints | Enum |
|---|---|---|---|---|---|
| min | number | optional | The minimum temperature the product can experience during transport and at the delivery option before pickup. Temperature in celsius | Min 8 | |
| max | number | optional | The maximum temperature the product can experience during transport and at the delivery option before pickup. Temperature in celsius | Max 25 |
cart.parcel.products.packages
| Parameter | Type | Required | Description | Enum |
|---|---|---|---|---|
| heightMm | string | optional | The height of the individual product package in mm | |
| widthMm | string | optional | The width of the individual product package in mm | |
| lengthMm | string | optional | The length of the individual product package in mm | |
| weightGram | string | optional | The weight of the individual product package in gram | |
| volumeDm3 | string | optional | The volume of the individual product package in liters | |
| barcodes | object | optional | The barcodes of the individual product |
cart.parcel.products.packages.barcodes
| Parameter | Type | Required | Description | Enum |
|---|---|---|---|---|
| code | string | optional | The content of the barcode e.g 123-456-789 | |
| type | string | optional | The barcode type e.g EAN13 |
Response Parameters
The Availability API returns comprehensive information about available delivery options, including lockers and home delivery slots.
Common Response Fields
| Parameter | Type | Description |
|---|---|---|
| availabilityToken | string | Token to use when creating a parcel (valid for 14 days) |
| checkoutId | string | The checkout session ID |
| deliveryOptions | array | List of available delivery options |
| preselection | string | Recommended preselection option |
| responseExpiresAt | string | When this response expires (ISO-8601 datetime) |
| showAsOptionInCheckout | boolean | Whether this option should be shown in checkout |
| estimatedParcelType | string | Estimated parcel type based on cart contents |
Home Delivery Response
For home delivery requests, the response includes delivery time slots and sender information.
Additional Fields for Home Delivery
| Parameter | Type | Description |
|---|---|---|
| deliveryOptions | array | Available home delivery slots |
deliveryOptions
| Parameter | Type | Description |
|---|---|---|
| sortCode | string | Sort code for the delivery |
| sortToken | string | Sort token identifier |
| type | string | Type of delivery ("HOME_DELIVERY") |
| brand | string | Delivery brand |
| originCollectionPoint | string | Origin collection point ID |
| eta | object | Delivery ETA information |
| consumerCutoffDatetimeUtc | string | Consumer cutoff time (UTC) |
| packBeforeDatetimeUtc | string | Pack before time (UTC) |
| consolidation | boolean | Consolidation availability |
Error Handling
The API may return the following errors:
| Status Code | Description | Solution |
|---|---|---|
400 | Invalid request parameters | Check your request body/query parameters |
404 | Postal code not serviceable | Try a different postal code |
429 | Rate limit exceeded | Reduce request frequency or contact support |