---
title: "Get the store"
description: "The restaurant's address, branding, order types, payment methods, delivery\nzones and opening hours. Load this first: `orderTypes` tells you what\nthe shopper can order right now.\n"
---

> Documentation Index
> Fetch the complete documentation index at: https://developer.unipage.be/llms.txt
> Use this file to discover all available pages before exploring further.

Path: Storefront API › Store

`GET /store`

The restaurant's address, branding, order types, payment methods, delivery
zones and opening hours. Load this first: `orderTypes` tells you what
the shopper can order right now.

## Authentication

Requires one of the following:

- `publicKey`, apiKey, in header, header `X-Unipage-Key`
- `secretKey`, http, header `Authorization`

## Code samples

### cURL

```bash
curl --request GET \
  --url https://api.unipage.eu/storefront/v1/store \
  --header 'X-Unipage-Key: <X-Unipage-Key>'
```

### TypeScript

```typescript
const url = 'https://api.unipage.eu/storefront/v1/store';
const options = {method: 'GET', headers: {'X-Unipage-Key': '<X-Unipage-Key>'}};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://api.unipage.eu/storefront/v1/store"

headers = {"X-Unipage-Key": "<X-Unipage-Key>"}

response = requests.get(url, headers=headers)

print(response.text)
```

## Responses

### 200

The store.

#### Example

```json
{
  "id": "k3x9p",
  "name": "Example Fries",
  "address": {
    "line1": "Main Street 1",
    "postcode": "1000",
    "city": "Brussels",
    "country": "BE"
  },
  "phone": "+32 2 000 00 00",
  "email": "shop@example.com",
  "timezone": "Europe/Brussels",
  "currency": "EUR",
  "branding": {
    "primaryColor": "#800F4D",
    "secondaryColor": "#002352",
    "coverImage": "string",
    "logo": "string"
  },
  "acceptsOrders": true,
  "orderTypes": [
    "TAKEOUT",
    "DELIVERY"
  ],
  "payment": {
    "methods": [
      "online"
    ],
    "default": "online"
  },
  "delivery": {
    "enabled": true,
    "minimumAmount": 50,
    "zones": [
      {
        "id": "z81qm",
        "postcode": "1000",
        "name": "1000",
        "cost": 10,
        "freeFrom": 100
      }
    ]
  },
  "serviceCost": {
    "amount": 0.5,
    "omitFrom": 0
  },
  "notesEnabled": true,
  "openingHours": [
    {
      "day": "MON",
      "isOpen": true,
      "periods": [
        {
          "start": "11:00",
          "end": "14:00"
        }
      ]
    }
  ]
}
```

- `id` (`getStore.response.200.id`; string, optional)
- `name` (`getStore.response.200.name`; string, optional)
- `address` (`getStore.response.200.address`; object, optional)
  - `line1` (`getStore.response.200.address.line1`; string, optional)
  - `postcode` (`getStore.response.200.address.postcode`; string, optional)
  - `city` (`getStore.response.200.address.city`; string, optional)
  - `country` (`getStore.response.200.address.country`; string, optional)
- `phone` (`getStore.response.200.phone`; string | null, optional)
- `email` (`getStore.response.200.email`; string | null, optional)
- `timezone` (`getStore.response.200.timezone`; string, optional) — Every `date` and `time` in the API is in this timezone.
- `currency` (`getStore.response.200.currency`; string, optional)
- `branding` (`getStore.response.200.branding`; object, optional)
  - `primaryColor` (`getStore.response.200.branding.primaryColor`; string | null, optional)
  - `secondaryColor` (`getStore.response.200.branding.secondaryColor`; string | null, optional)
  - `coverImage` (`getStore.response.200.branding.coverImage`; string | null, optional) — Image URL.
  - `logo` (`getStore.response.200.branding.logo`; string | null, optional) — Image URL.
- `acceptsOrders` (`getStore.response.200.acceptsOrders`; boolean, optional)
- `orderTypes` (`getStore.response.200.orderTypes`; array<string>, optional) — What you can order through this API right now. Empty when the restaurant does not accept orders. `TAKEOUT` unless the restaurant only delivers; `DELIVERY` when delivery is on and the restaurant has at least one postcode zone. A delivery-only restaurant without a postcode zone has no order type here.
  - one of `"TAKEOUT"`, `"DELIVERY"`
- `payment` (`getStore.response.200.payment`; object, optional)
  - `methods` (`getStore.response.200.payment.methods`; array<string>, optional) — The ways the restaurant collects the money itself: pass one of these as `paymentType` when placing an order. `external` (you collect the money) is always accepted and is not listed here.
    - one of `"online"`, `"offline"`
  - `default` (`getStore.response.200.payment.default`; string | null, optional) — The first of `methods`, `null` when there is none.
    - one of `"online"`, `"offline"`, `null`
- `delivery` (`getStore.response.200.delivery`; object, optional)
  - `enabled` (`getStore.response.200.delivery.enabled`; boolean, optional)
  - `minimumAmount` (`getStore.response.200.delivery.minimumAmount`; number, optional)
  - `zones` (`getStore.response.200.delivery.zones`; array<object>, optional) — Postcode zones.
    - `id` (`getStore.response.200.delivery.zones.id`; string, optional) — Send as `delivery.zoneId`.
    - `postcode` (`getStore.response.200.delivery.zones.postcode`; string, optional)
    - `name` (`getStore.response.200.delivery.zones.name`; string, optional)
    - `cost` (`getStore.response.200.delivery.zones.cost`; number, optional)
    - `freeFrom` (`getStore.response.200.delivery.zones.freeFrom`; number, optional) — `0` means the fee is always charged.
- `serviceCost` (`getStore.response.200.serviceCost`; object, optional)
  - `amount` (`getStore.response.200.serviceCost.amount`; number, optional) — `0` means no service cost.
  - `omitFrom` (`getStore.response.200.serviceCost.omitFrom`; number, optional) — `0` means always charged; otherwise only when the subtotal is below it.
- `notesEnabled` (`getStore.response.200.notesEnabled`; boolean, optional)
- `openingHours` (`getStore.response.200.openingHours`; array<object>, optional)
  - `day` (`getStore.response.200.openingHours.day`; string, optional)
    - one of `"MON"`, `"TUE"`, `"WED"`, `"THU"`, `"FRI"`, `"SAT"`, `"SUN"`
  - `isOpen` (`getStore.response.200.openingHours.isOpen`; boolean, optional)
  - `periods` (`getStore.response.200.openingHours.periods`; array<object>, optional)
    - `start` (`getStore.response.200.openingHours.periods.start`; string, optional) — `HH:MM`.
    - `end` (`getStore.response.200.openingHours.periods.end`; string, optional) — `HH:MM`.

### 401

A missing, unknown or revoked key (`UNAUTHENTICATED`).

#### Example

```json
{
  "error": {
    "code": "UNAUTHENTICATED",
    "message": "No valid key."
  }
}
```

- `error` (`getStore.response.401.error`; object, required)
  - `code` (`getStore.response.401.error.code`; string, required)
    - one of `"UNAUTHENTICATED"`, `"FORBIDDEN"`, `"NOT_FOUND"`, `"METHOD_NOT_ALLOWED"`, `"VALIDATION"`, `"SLOT_UNAVAILABLE"`, `"DELIVERY_UNAVAILABLE"`, `"PRODUCT_UNAVAILABLE"`, `"COUPON_INVALID"`, `"MINIMUM_NOT_REACHED"`, `"RATE_LIMITED"`, `"INTERNAL"`
  - `message` (`getStore.response.401.error.message`; string, required) — Human readable.
  - `fields` (`getStore.response.401.error.fields`; map<string>, optional) — Only present when the error belongs to specific request fields.

### 403

A public key on a secret route, or used from an origin that is not
registered for it (`FORBIDDEN`).

#### Example

```json
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Origin not registered for this key."
  }
}
```

- `error` (`getStore.response.403.error`; object, required)
  - `code` (`getStore.response.403.error.code`; string, required)
    - one of `"UNAUTHENTICATED"`, `"FORBIDDEN"`, `"NOT_FOUND"`, `"METHOD_NOT_ALLOWED"`, `"VALIDATION"`, `"SLOT_UNAVAILABLE"`, `"DELIVERY_UNAVAILABLE"`, `"PRODUCT_UNAVAILABLE"`, `"COUPON_INVALID"`, `"MINIMUM_NOT_REACHED"`, `"RATE_LIMITED"`, `"INTERNAL"`
  - `message` (`getStore.response.403.error.message`; string, required) — Human readable.
  - `fields` (`getStore.response.403.error.fields`; map<string>, optional) — Only present when the error belongs to specific request fields.

### 429

Too many requests (`RATE_LIMITED`). Wait `Retry-After` seconds.

#### Example

```json
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Too many requests."
  }
}
```

- `error` (`getStore.response.429.error`; object, required)
  - `code` (`getStore.response.429.error.code`; string, required)
    - one of `"UNAUTHENTICATED"`, `"FORBIDDEN"`, `"NOT_FOUND"`, `"METHOD_NOT_ALLOWED"`, `"VALIDATION"`, `"SLOT_UNAVAILABLE"`, `"DELIVERY_UNAVAILABLE"`, `"PRODUCT_UNAVAILABLE"`, `"COUPON_INVALID"`, `"MINIMUM_NOT_REACHED"`, `"RATE_LIMITED"`, `"INTERNAL"`
  - `message` (`getStore.response.429.error.message`; string, required) — Human readable.
  - `fields` (`getStore.response.429.error.fields`; map<string>, optional) — Only present when the error belongs to specific request fields.


Source: https://developer.unipage.be/storefront/api/store/retrieve/index.md
