# Overview

This functionality provides a simple way to integrate Whisk’s add-to-basket functionality into your mobile application, allowing you to send items and recipes to an online grocery basket.

Using this API you can generate URLs (we call these "transfer URLs") which pass your content to the Whisk basket experience. In your application, you add a button, such as "Order ingredients", which opens this URL in a web browser. This allows the user to choose a retailer, select store products, and send everything to their online basket.

![image alt text](/files/-M4t54FPfbQE1FPll7CN)

{% hint style="info" %}
To use this service you need access to the Whisk Graph API. Please [contact us](https://whisk.com/business/contact/), and we'll advice you on the next steps.
{% endhint %}

## Getting started

Take a look at the [Examples](/shopping-list-mobile-api/examples.md) or view the [Reference](/shopping-list-mobile-api/reference.md) page for all available parameters.

There are three ways to add items with transfer URLs:

* rawItems - a full string containing quantity, unit, and product. "E.g. 250g cheddar cheese"
* items - structured item data with separate fields for quantity, unit, product.
* recipes - recipes are identified by URL or unique Whisk ID.

The endpoint is:

| POST | `https://graph.whisk.com/v1/lists/transfers` |
| ---- | -------------------------------------------- |

When you send items Whisk automatically matches them to appropriate store items at all available retailers. Whisk’s matching algorithm uses various factors including available store items, quantity, brand, attributes, and price.

### Request

Here is a basic example sending items and recipes:

```bash
curl "https://graph.whisk.com/v1/lists/transfers" \
  -H "Authorization: Token <Access-Token>" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {
        "name": "skimmed milk",
        "quantity": 2,
        "unit": "l"
      },
      {
        "name": "coffee"
      },
      {
        "name": "sugar",
        "quantity": "5",
        "unit": "tbsp"
      }
    ],
    "rawItems": [
      "2l skimmed milk",
      "coffee",
      "5 tbsp sugar"
    ],
    "recipes": [
      {
        "id": "https://whisk.com/demo/calzone-roasted-peppers",
        "scale": 1
      }
    ]
  }'
```

### Response

The response will contain a URL which should be opened in the user’s mobile web browser - not inside WebViews. This opens the Whisk basket experience and allows users to select their store, choose store items, and send items to their basket.

```javascript
{
    "landingUrl": "https://graph.whisk.com/v1/lists/transfers/9e107d15377f484eb7c343f93028b936/landing"
}
```

Note: Generated URLs are valid for 14 days and are then expired.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.whisk.com/shopping-list-mobile-api/overview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
