# Record an in-app store sheet tap and get what keeps the deep link

> Record an in-app store sheet tap and get what keeps the deep link (new).

Source: https://straitlink.in/docs/api/open-store-sheet/

`POST /v1/store-sheet`

Auth: publishable key as publishableKey in the JSON body. Safe in apps and websites.

New. Called by the SDKs (Strait.openStoreSheet) just before an app shows the app store inside itself: Google Play inline install on Android, SKOverlay / SKStoreProductViewController on iPhone. Records a tap with sent_to 'store_sheet' (not billed while the store sheet is new). Android gets the Play Install Referrer string (strait_link + strait_click, matched exactly by /v1/referrer); iPhone gets the App Store id, the link's campaign as the ct token and, with Paste handoff on, a one-time handoff link. This works inside your own app only; a link tapped inside another company's app cannot open a store sheet there.

| Field | Type | Notes |
|---|---|---|
| `publishableKey` (required) | `string` |  |
| `url` (required) | `string` | A short link of the key's workspace |
| `deviceClass` | `"phone" | "tablet"` | What the app runs on (iPad = tablet); phone when not sent |
| `platform` (required) | `"android" | "ios"` |  |

```bash
curl -X POST https://strait.link/v1/store-sheet \
  -H "Content-Type: application/json" \
  -d '{
    "publishableKey": "st_pub_live_…",
    "url": "https://hilltop.strait.link/summer",
    "platform": "android"
  }'
```

Response 200:

```json
{
  "ok": true,
  "beta": true,
  "clickId": "9a1c7e52-4b3d-4f8e-a6d1-0c2b5e7f9a34",
  "linkId": "lnk_5f0c2a8e-3b1d-4f6a-9c7e-2d8b1a0e4f63",
  "android": {
    "package": "shoes.hilltop.app",
    "referrer": "strait_link=lnk_5f0c2a8e-3b1d-4f6a-9c7e-2d8b1a0e4f63&strait_click=9a1c7e52-4b3d-4f8e-a6d1-0c2b5e7f9a34"
  }
}
```

- `200`: ok:true with the store details, or ok:false with reason (not_found, disabled, expired, not_live, password_protected)
- `400`: Bad url or platform
- `401`: Missing or invalid publishable key
