---
title: "Sync App Store subscription (StoreKit)"
method: POST
path: "/api/appstore/sync"
tags: ["App Store"]
deprecated: true
---

# Sync App Store subscription (StoreKit)

`POST /api/appstore/sync`

> **Deprecated.**

DEPRECATED: iOS migrated to Stripe-only paywall (SRI-102). Legacy StoreKit clients may still call this; receives no traffic from current builds. Slated for removal after two releases of zero hits — see issue #364. Persists App Store subscription data after StoreKit reports a purchase.

## Request body

- object
  - `environment` 'Production' | 'Sandbox'
  - `expiresAt` string, required
  - `latestTransactionId` string, nullable
  - `originalTransactionId` string, required
  - `productId` string, required

## Response `200`

Subscription created or updated

- object
  - `action` 'created' | 'transferred' | 'updated', required
  - `success` true, required
  - `subscriptionId` string, required

## Other responses

- `400` — Invalid body or dates
- `401` — Unauthorized
- `422` — Validation failed
- `502` — App Store upstream failed

---

[API](https://skmtc.net/cobaltpf/apis/cobalt-api.md) · [All operations](https://skmtc.net/cobaltpf/apis/cobalt-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/cobaltpf/cobalt-api/revisions/8ef0dfb5d23c/schema)
