> ## Documentation Index
> Fetch the complete documentation index at: https://docs.leyyow.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get delivery options

> Returns the store's delivery configuration and all available manual and express delivery options.

Use the response to build your storefront's delivery selection step:

| Flag | Meaning |
|---|---|
| `pickup_enabled` | Customer can collect from the store (always `true`) |
| `manual_delivery_enabled` | Flat-rate manual delivery is active |
| `express_delivery_enabled` | Express flat-rate delivery is active |
| `shipbubble_delivery_enabled` | Live ShipBubble quotes are available |

When `shipbubble_delivery_enabled` is `true`, call `POST /shipping-quotes` to get live courier rates.



## OpenAPI

````yaml /LeyyowPublicAPI(v2).yaml get /delivery-options
openapi: 3.0.3
info:
  title: Leyyow Public API
  version: 1.0.0 (v2)
  description: >-
    The Leyyow Public API lets you build custom storefronts on top of any Leyyow
    merchant store.


    ## Authentication


    Every request must carry a merchant API key as a Bearer token:


    ```

    Authorization: Bearer lyw_<your-secret-key>

    ```


    Keys are scoped to a single store.  All responses contain only data that
    belongs to the store that issued the key.


    ## Rate limits


    | Throttle group | Limit |

    |---|---|

    | Catalogue endpoints (per key) | 1 000 / hour |

    | Catalogue endpoints (per IP) | 200 / hour |

    | Order creation (per key) | 50 / hour |

    | Shipping quotes (per key) | 100 / hour |


    When a limit is exceeded the API returns HTTP 429 with a `Retry-After`
    header indicating how many seconds to wait.


    ## Store scoping


    The `X-Store-Id` header is ignored.  Store identity is derived entirely from
    the API key — there is no way to access a different store's data using the
    same key.
servers:
  - url: /api/public/v1
    description: Leyyow Public API v1
security: []
paths:
  /delivery-options:
    get:
      tags:
        - Delivery
      summary: Get delivery options
      description: >-
        Returns the store's delivery configuration and all available manual and
        express delivery options.


        Use the response to build your storefront's delivery selection step:


        | Flag | Meaning |

        |---|---|

        | `pickup_enabled` | Customer can collect from the store (always `true`)
        |

        | `manual_delivery_enabled` | Flat-rate manual delivery is active |

        | `express_delivery_enabled` | Express flat-rate delivery is active |

        | `shipbubble_delivery_enabled` | Live ShipBubble quotes are available |


        When `shipbubble_delivery_enabled` is `true`, call `POST
        /shipping-quotes` to get live courier rates.
      operationId: delivery_options_retrieve
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryOptions'
              examples:
                DeliveryOptions:
                  value:
                    pickup_enabled: true
                    manual_delivery_enabled: true
                    express_delivery_enabled: false
                    shipbubble_delivery_enabled: true
                    manual_options:
                      - uid: 018e1234-0000-7000-a000-000000000600
                        location: Lagos Island
                        amount: '1500.00'
                        delivery_type: standard
                        created_at: '2025-01-10T08:00:00Z'
                      - uid: 018e1234-0000-7000-a000-000000000601
                        location: Abuja
                        amount: '3500.00'
                        delivery_type: standard
                        created_at: '2025-01-10T08:01:00Z'
                    express_options: []
                  summary: Delivery options
          description: Delivery options for the store.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/_Error'
              examples:
                InvalidKey:
                  value:
                    detail: Invalid or revoked API key.
                    error_code: AUTHENTICATION_FAILED
                  summary: Invalid key
          description: Authentication failed — key missing, invalid, or revoked.
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/_Error'
              examples:
                RateLimited:
                  value:
                    detail: Rate limit exceeded. Please retry in 120 seconds.
                    error_code: ENDPOINT_THROTTLED
                  summary: Rate limited
          description: >-
            Rate limit exceeded.  Retry after the number of seconds indicated in
            the `Retry-After` response header.


            | Throttle group | Limit |

            |---|---|

            | Catalogue endpoints — per API key | 1 000 / hour |

            | Catalogue endpoints — per IP address | 200 / hour |

            | Order creation — per API key | 50 / hour |

            | Shipping quotes — per API key | 100 / hour |
      security:
        - MerchantAPIKey: []
components:
  schemas:
    DeliveryOptions:
      type: object
      description: Read-only response for GET /api/public/v1/delivery-options
      properties:
        pickup_enabled:
          type: boolean
          readOnly: true
        manual_delivery_enabled:
          type: boolean
          readOnly: true
        express_delivery_enabled:
          type: boolean
          readOnly: true
        shipbubble_delivery_enabled:
          type: boolean
          readOnly: true
        manual_options:
          type: array
          items:
            $ref: '#/components/schemas/StoreDeliveryOptions'
          readOnly: true
        express_options:
          type: array
          items:
            $ref: '#/components/schemas/StoreDeliveryOptions'
          readOnly: true
      required:
        - express_delivery_enabled
        - express_options
        - manual_delivery_enabled
        - manual_options
        - pickup_enabled
        - shipbubble_delivery_enabled
    _Error:
      type: object
      properties:
        detail:
          type: string
        error_code:
          type: string
      required:
        - detail
    StoreDeliveryOptions:
      type: object
      properties:
        uid:
          type: string
          format: uuid
          readOnly: true
        location:
          type: string
          maxLength: 255
        amount:
          type: string
          format: decimal
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
        delivery_type:
          allOf:
            - $ref: '#/components/schemas/DeliveryTypeEnum'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
      required:
        - created_at
        - delivery_type
        - location
        - uid
    DeliveryTypeEnum:
      enum:
        - standard
        - express
      type: string
      description: |-
        * `standard` - Standard
        * `express` - Express
  securitySchemes:
    MerchantAPIKey:
      type: http
      scheme: bearer
      bearerFormat: lyw_<secret>
      description: >-
        Authenticate using a Leyyow merchant API key.


        Include the key in every request as a Bearer token:


        ```

        Authorization: Bearer lyw_<your-secret-key>

        ```


        Keys are scoped to a single store. All endpoints return data belonging
        to the store that issued the key — there is no `X-Store-Id` override.


        Keys are created in the Leyyow merchant dashboard under **Settings →
        Developer → API Keys**.

````