In-App Purchases API
Create and manage in-app purchases including consumables, non-consumables, and non-renewing subscriptions. Sync with App Store Connect.
IAP management requires App Store Connect credentials to be configured. Products can be created locally first, then pushed to App Store Connect.
Get all in-app purchases and subscription groups for a project.
GET /iapAuthentication
Requires API key with Authorization: Bearer <api_key> header
URL Parameters
| Name | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The project ID |
Response Example
{"iaps": [{"id": "iap_abc123","productId": "com.app.coins_100","name": "100 Coins","productType": "CONSUMABLE","state": "APPROVED","syncStatus": "synced","familyShareable": false}],"subscriptionGroups": [{"id": "group_xyz","referenceName": "Premium","subscriptions": [...]}]}
Code Examples
curl "https://api.appstorecopilot.com/v1/iap?projectId=proj_123" \-H "Authorization: Bearer $ASC_API_KEY"
Get detailed information about a specific in-app purchase including localizations.
GET /iap/:iapIdAuthentication
Requires API key with Authorization: Bearer <api_key> header
URL Parameters
| Name | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The project ID |
Response Example
{"iap": {"id": "iap_abc123","productId": "com.app.coins_100","name": "100 Coins","productType": "CONSUMABLE","state": "APPROVED","localizations": [{"locale": "en-US","name": "100 Coins","description": "Get 100 coins to spend in-game"}]}}
Create a new in-app purchase product.
POST /iapAuthentication
Requires API key with Authorization: Bearer <api_key> header
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The project ID |
productId | string | Yes | Unique product identifier (e.g., com.app.coins_100) |
name | string | Yes | Display name for the product |
productType | string | Yes | CONSUMABLE, NON_CONSUMABLE, or NON_RENEWING_SUBSCRIPTION |
familyShareable | boolean | No | Whether the product can be shared with family members (default: false) |
Response Example
{"success": true,"iap": {"id": "iap_abc123","productId": "com.app.coins_100","name": "100 Coins","productType": "CONSUMABLE","syncStatus": "pending_creation"}}
Update an existing in-app purchase.
PATCH /iap/:iapIdAuthentication
Requires API key with Authorization: Bearer <api_key> header
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The project ID |
name | string | No | Updated display name |
familyShareable | boolean | No | Updated family sharing setting |
Delete an in-app purchase. Optionally remove from App Store Connect.
DELETE /iap/:iapIdAuthentication
Requires API key with Authorization: Bearer <api_key> header
URL Parameters
| Name | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The project ID |
deleteFromStore | boolean | No | Also delete from App Store Connect (default: false) |
Sync in-app purchases from App Store Connect to local storage.
POST /iap/pullAuthentication
Requires API key with Authorization: Bearer <api_key> header
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The project ID |
Response Example
{"success": true,"summary": {"iaps": { "created": 5, "updated": 2, "unchanged": 10 },"subscriptionGroups": { "created": 1, "updated": 0 },"subscriptions": { "created": 3, "updated": 1 }}}
Push local in-app purchases to App Store Connect.
POST /iap/pushAuthentication
Requires API key with Authorization: Bearer <api_key> header
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The project ID |
productIds | string[] | No | Specific product IDs to push (all if not specified) |
Response Example
{"success": true,"results": {"created": ["com.app.premium"],"updated": ["com.app.coins_100"],"failed": []}}
Set regional pricing for an in-app purchase using pricing strategies.
POST /iap/:iapId/pricingAuthentication
Requires API key with Authorization: Bearer <api_key> header
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The project ID |
strategy | string | Yes | Pricing strategy: FIXED_USD, PURCHASING_POWER, or CUSTOM |
basePrice | number | Yes | Base price in USD cents |
AI-translate IAP name and description to target locales.
POST /iap/translateAuthentication
Requires API key with Authorization: Bearer <api_key> header
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The project ID |
iapId | string | Yes | The IAP ID to translate |
targetLocales | string[] | Yes | Target locale codes (e.g., ["de", "fr", "ja"]) |