Analytics & Sales Reports
Date Format Requirements
Date formats vary by report frequency:- DAILY/WEEKLY:
YYYY-MM-DD(e.g.,2024-01-15) - MONTHLY:
YYYY-MM(e.g.,2024-01) - YEARLY:
YYYY(e.g.,2024)
Vendor Number
Vendor number comes from Sales and Trends → Reports URL (vendorNumber=... parameter).
Set it globally:
Pagination Quirks
Use--paginate with asc analytics get --date to avoid missing instances on later pages. Without pagination, you may only receive partial data.
Long-Running Operations
Long analytics runs may require raisingASC_TIMEOUT:
Finance Reports
Finance reports use Apple fiscal months (YYYY-MM), not calendar months.
Report Type Mapping
API--report-type values map to App Store Connect UI options:
API --report-type | UI Option | --region Code(s) |
|---|---|---|
FINANCIAL | All Countries or Regions (Single File) | ZZ (consolidated) |
FINANCIAL | All Countries or Regions (Multiple Files) | US, EU, JP, etc. |
FINANCE_DETAIL | All Countries or Regions (Detailed) | Z1 (required) |
| Not available | Transaction Tax (Single File) | N/A |
Important Notes
FINANCE_DETAILreports require region codeZ1(the only valid region for detailed reports)- Transaction Tax reports are NOT available via API; download manually from App Store Connect
- Region codes reference: https://developer.apple.com/help/app-store-connect/reference/financial-report-regions-and-currencies/
Sandbox Testers
Required Fields
- First and last name
- Password + password confirmation
- Secret question and answer
- Birth date
- Territory (3-letter App Store territory code)
Password Requirements
Password must include:- Uppercase letter
- Lowercase letter
- Number
- Minimum 8 characters
Territory Codes
Territory uses 3-letter App Store territory codes:USA- United StatesJPN- JapanGBR- United KingdomDEU- Germany- etc.
API Version Differences
- List/get: Use v2 API
- Create/delete: Use v1 endpoints (may be unavailable on some accounts)
- Update/clear-history: Use v2 API
Game Center
Game Center Detail ID
Most Game Center endpoints require a Game Center detail ID, resolved via:Releases
Releases are required to make achievements/leaderboards/leaderboard-sets live. Create a release after creating the resource:Image Uploads
Image uploads follow a three-step flow:- Reserve upload slot: Request upload URL from API
- Upload file: PUT file to reserved URL
- Commit upload: Notify API of completion
Challenges Minimum Platform Versions
ThechallengesMinimumPlatformVersions relationship on gameCenterDetails uses appStoreVersions linkages.
Important:
- Live API rejects
gameCenterAppVersionsfor this relationship - The relationship endpoint is replace-only (PATCH)
- GET relationship requests are rejected with “does not allow ‘GET_RELATIONSHIP’… Allowed operation is: REPLACE”
- Setting
challengesMinimumPlatformVersionsrequires a live App Store version - Non-live versions fail with
ENTITY_ERROR.RELATIONSHIP.INVALID.MIN_CHALLENGES_VERSION_MUST_BE_LIVE
Authentication & Rate Limiting
JWT Token Validity
JWTs issued for App Store Connect are valid for 10 minutes. The CLI handles renewal automatically.Automatic Retries
Automatic retries apply only to:- Methods: GET/HEAD requests
- Status codes: 429 (rate limit) and 503 (service unavailable)
Retry-After Headers
Retry-After headers are honored when present. The CLI respects server-specified delays.Permission Errors (403)
Some endpoints return 403 when the API key role lacks permission:- Finance reports: Requires Admin or Finance role
- Reviews: Requires App Manager or higher
- Sales reports: Requires Sales or Admin role
Devices
No DELETE Endpoint
Devices can only be enabled/disabled via PATCH. There is no DELETE endpoint.Registration Requirements
- iOS: UDID (Unique Device Identifier)
- macOS: Hardware UUID
Device Management Location
Device management UI lives in the Apple Developer portal, not App Store Connect.Device Limits
- Device reset is limited to once per membership year
- Disabling does not free slots
- Plan device registrations accordingly
Pass Type IDs
Include Parameter Rejection
Live API rejectsinclude=passTypeId and fields[passTypeIds] on /v1/passTypeIds/{id}/certificates despite the OpenAPI spec allowing them.
The CLI does not expose those parameters for pass-type-ids certificates list to avoid API errors.
Example (working):
General API Quirks
Relationship Operations
- Some relationships are replace-only (PATCH), not append
- GET relationship requests may be rejected for certain endpoints
- Related resources may need to be in specific states (e.g., “live”)
Pagination
Always use--paginate for complete results:
--paginate, only the first page is returned (default limit varies by endpoint).
Filters and Sorting
Filter syntax uses bracket notation:- prefix for descending:
Response Delays
Some operations return success but take time to process:- Build processing (can take 10-30 minutes)
- Screenshot processing
- Review submissions
Debugging API Issues
Enable debug logging to see full HTTP request/response details:- Request method, URL, headers, body
- Response status, headers, body
- Retry attempts and timing
Additional Resources
- OpenAPI Specification:
docs/openapi/latest.json - Endpoint Index:
docs/openapi/paths.txt - API Documentation: https://sosumi.ai/documentation/appstoreconnectapi/ (preferred over developer.apple.com)
- Official API Reference: https://developer.apple.com/documentation/appstoreconnectapi/
docs/openapi/latest.json.