The Deliveroo Site API provides developers with the ability to manage site information.

You can begin testing here

This API consists of the following components:

Opening Hours

This endpoint is used to retrieve and update the opening hours for each weekday, which can have multiple opening hours as long as they do not overlap.

  • GET https://partners.deliveroo.com/api/v1/brands/{brandId}/sites/{siteId}/opening_hours
  • POST https://partners.deliveroo.com/api/v1/brands/{brandId}/sites/{siteId}/opening_hours

Status

This endpoint is used to retrieve and set the online status of a site to be open or closed. Please note that it is not allowed to open a site outside of its opening hours, the call will return 400 (bad request) error.

  • GET https://partners.deliveroo.com/api/v1/brands/{brandId}/sites/{siteId}/status
  • PUT https://partners.deliveroo.com/api/v1/brands/{brandId}/sites/{siteId}/status

Sometimes a site is closed intentionally, either by the partner or Deliveroo. The responses below reflect the reason.

  • When the restaurant when it was closed because of opening hours
    Unable to open restaurant, reason: OPENING_HOURS
  • When vacation mode is enabled by Deliveroo or the partner
    Unable to open restaurant, reason: VACATION_MODE
  • When the restaurant was closed as the partner put themselves into a day off either via the Hub or tablet.
    Unable to open restaurant, reason: CLOSED_PERIOD
  • When the restaurant was closed because they experienced three auto-rejections within 15 consecutive minutes.
    Unable to open restaurant, reason: CLOSED_PERIOD

Days Off

This endpoint is used to add, retrieve, update or cancel days off periods for a given site. Days off are exceptions to the normal opening hours of a site that are applied each day. It is important to note that this endpoint allows multiple days off periods with overlapping hours to be created.

  • GET https://partners.deliveroo.com/api/v1/brands/{brandId}/sites/{siteId}/days_off?page_size={pageSize}&page_number={pageNumber}
  • POST https://partners.deliveroo.com/api/v1/brands/{brandId}/sites/{siteId}/days_off
  • DELETE https://partners.deliveroo.com/api/v1/brands/{brandId}/sites/{siteId}/days_off/{daysOffId}

Workload (Busy Mode)

This endpoint is used to change workload mode as well as set the preparation time for each mode.

  • GET https://partners.deliveroo.com/api/v1/brands/{brandId}/sites/{siteId}/workload/mode
  • PUT https://partners.deliveroo.com/api/v1/brands/{brandId}/sites/{siteId}/workload/mode
  • GET https://partners.deliveroo.com/api/v1/brands/{brandId}/sites/{siteId}/workload/times?allowed_ranges={true|false}
  • PUT https://partners.deliveroo.com/api/v1/brands/{brandId}/sites/{siteId}/workload/times
// GET /api/v1/brands/{brandId}/sites/{siteId}/opening_hours
// Get site opening hours response body example:
{
    "opening_hours": {
       "monday": [
            {
                "local_start_time": "12:00",
                "local_end_time": "15:00"
            }
        ],
        "friday": [
            {
                "local_start_time": "11:30",
                "local_end_time": "16:00"
            },
            {
                "local_start_time": "18:00",
                "local_end_time": "23:00"
            }
        ]
    }
}

// POST /api/v1/brands/{brandId}/sites/{siteId}/opening_hours
// Update site opening hours request body example:
{
    "opening_hours": {
       "monday": [
            {
                "local_start_time": "12:00",
                "local_end_time": "15:00"
            }
        ],
        "wednesday": [
            {
                "local_start_time": "13:00",
                "local_end_time": "15:00"
            }
        ],
        "friday": [
            {
                "local_start_time": "11:30",
                "local_end_time": "16:00"
            },
            {
                "local_start_time": "18:00",
                "local_end_time": "23:00"
            }
        ]
    }
}
// When opening a site outside of its opening hours, its status will be set to `READY_TO_OPEN`.

// GET /api/v1/brands/{brandId}/sites/{siteId}/status
// Update site status request body example:

{
    "status": "CLOSED"
}

// Update site status
// PUT /api/v1/brands/{brandId}/sites/{siteId}/status
// Update site status request body example:
{
    "status": "CLOSED"
}
// GET /api/v1/brands/{brandId}/sites/{siteId}/workload/mode
// Get site workload mode response body example:
{
    "mode": "BUSY"
}

// PUT /api/v1/brands/{brandId}/sites/{siteId}/workload/mode
// Set site workload mode response body example:
{
    "mode": "BUSY"
}
// GET /api/v1/brands/{brandId}/sites/{siteId}/workload/times?allowed_ranges={true|false}
// Get site's workload times response body example:
{
    "busy": 35,
    "quiet": 15,
    "allowed_ranges": {
        "busy": {
            "min": 25,
            "max": 240
        },
        "quiet": {
            "min": 20,
            "max": 60
        }
    }
}


// Set site workload times
// PUT /api/v1/brands/{brandId}/sites/{siteId}/workload/times
// Set site workload times request body example:
{
    "busy": 35,
    "quiet": 15
}


// Set site workload times response body example:
{
    "busy": 35,
    "quiet": 15
}
// GET /api/v1/brands/{brandId}/sites/{siteId}/time_zone
// Get site time zone response body example:
{
    "time_zone": "Europe/London"
}
// Get Site Days Off
// GET /api/v1/brands/{brandId}/sites/{siteId}/days_off?page_size={pageSize}&page_number={pageNumber}&upcoming={true|false}
// Get site days off response body example:
{
    "days_off": [
        {
            "id": 1,
            "days_off_id": "gb:fab7c7f3-e6eb-4eef-8d06-9f57aa521af5",
            "local_start_time": "2021-11-16 00:00",
            "local_end_time": "2021-12-17 23:00",
            "reason": "DAYS_OFF",
            "cancelled_at": null
        },
        {
            "id": 2,
            "days_off_id": "gb:6ae4516d-71c0-4d78-8a58-8015561cae51",
            "local_start_time": "2021-12-24 00:00",
            "local_end_time": "2021-12-26 10:00",
            "reason": "DAYS_OFF",
            "cancelled_at": "2021-04-30 14:26"
        }
    ],
    "page": {
        "number": 1,
        "size": 20,
        "total_items": 2
    }
}


// POST /api/v1/brands/{brandId}/sites/{siteId}/days_off
// Add site days off.
// Add site days off period request body example:
{
    "local_start_time": "2020-11-24 00:00",
    "local_end_time": "2020-12-26 23:59",
}

// Add site days off period response body example:
{
    "id": 15158,
    "days_off_id": "gb:fab7c7f3-e6eb-4eef-8d06-9f57aa521af5",
    "local_start_time": "2020-11-24 00:00",
    "local_end_time": "2020-12-26 23:59",
    "reason": "DAYS_OFF",
    "cancelled_at": null
}

// Add site days off period request body example:
{
    "days_off_id": "gb:fab7c7f3-e6eb-4eef-8d06-9f57aa521af5",
    "local_start_time": "2020-11-24 00:00",
    "local_end_time": "2020-12-26 23:59",
}


// PUT /api/v1/brands/{brandId}/sites/{siteId}/days_off/{daysOffId}
// Update a site days off period.
// Add site days off period request body example:
{
    "days_off_id": "gb:fab7c7f3-e6eb-4eef-8d06-9f57aa521af5",
    "local_start_time": "2020-11-24 00:00",
    "local_end_time": "2020-12-26 23:59",
}

// Add site days off period response body example:
{
    "id": 15158,
    "days_off_id": "gb:fab7c7f3-e6eb-4eef-8d06-9f57aa521af5",
    "local_start_time": "2020-11-24 00:00",
    "local_end_time": "2020-12-26 23:59",
    "reason": "DAYS_OFF",
    "cancelled_at": null
}

// Cancel a site days off period
// Cancel site days off period response body example:

{
    "id": 15158,
    "days_off_id": "gb:fab7c7f3-e6eb-4eef-8d06-9f57aa521af5",
    "local_start_time": "2020-11-24 00:00",
    "local_end_time": "2020-12-26 23:59",
    "reason": "DAYS_OFF",
    "cancelled_at": "2020-05-20 11:23"
}


// DELETE /api/v1/brands/{brandId}/sites/{siteId}/days_off/{daysOffId}
// Get a single a site days off period
// Get site days off period response body example:

{
    "id": 15158,
    "days_off_id": "gb:fab7c7f3-e6eb-4eef-8d06-9f57aa521af5",
    "start_at": "2021-12-10 00:00",
    "end_at": "2021-12-12 23:59",
    "reason": "DAYS_OFF",
    "cancelled_at": null
}

// GET /api/v1/brands/{brandId}/sites/{siteId}/days_off/{daysOffId}
// Get site days off period response body example:
{
    "id": 15158,
    "days_off_id": "gb:fab7c7f3-e6eb-4eef-8d06-9f57aa521af5",
    "start_at": "2021-12-10 00:00",
    "end_at": "2021-12-12 23:59",
    "reason": "DAYS_OFF",
    "cancelled_at": null
}
// GET /api/v1/brands/:brand_id/sites

// Get sites for a brand response body example:
{
  "sites": [
    {
      "location_id": "location-test-1",
      "name": "Name of site1",
      "status": "OPEN",
      "api_access": {
        "fulfillment": false,
        "kiosk": true,
        "menu": true,
        "picking": false,
        "pos": false,
        "rider_status_updates": true,
        "site": false,
        "update_order_status": false
      },
      "phone_number": "",
      "branch_type": "RESTAURANT",
      "on_vacation": false,
      "timezone": "Europe/London"
    },
    {
      "location_id": "location-test-2",
      "name": "Name of site2",
      "status": "OPEN",
      "api_access": {
        "fulfillment": false,
        "kiosk": true,
        "menu": true,
        "picking": true,
        "pos": false,
        "rider_status_updates": false,
        "site": false,
        "update_order_status": false
      },
      "phone_number": "07987342740",
      "branch_type": "UNKNOWN",
      "on_vacation": false,
      "timezone": "Europe/London"
    }
  ]
}

What’s Next