Free local iOS tool

Required Reason API Checker

Check NSPrivacyAccessedAPITypes entries against Apple’s current categories and approved reason-code pairings, directly in your browser.

Check your rejection locally

What the error means

The checker catches wrong types, empty values, unknown categories, and reason codes that belong to a different API category. It does not scan an Xcode project or decide which reason truthfully describes your app.

Common causes

A reason code is syntactically valid but paired with the wrong NSPrivacyAccessedAPICategory.
An API category is declared with an empty NSPrivacyAccessedAPITypeReasons array.
The declaration sits in the main app even though the covered API is used only by a third-party SDK.

How to fix it

  1. 1Paste or upload the XML PrivacyInfo.xcprivacy file.
  2. 2Run the local checker and review each category/reason pairing.
  3. 3Trace each category to the executable or dynamic library that uses it.
  4. 4Confirm the selected reason matches the shipped behavior and Apple’s current wording.

Apple documentation

FAQ

Frequently asked questions

What does the Required Reason API checker validate?

It checks plist structure, supported category names, non-empty reason arrays, and whether each reason code belongs to its declared category.

Does it scan my source code?

No. This MVP validates pasted or uploaded manifest XML and extracts evidence from a pasted App Store Connect email.

Does a green result guarantee compliance?

No. The tool cannot know why your code calls an API. Developers must confirm the declared reason reflects actual behavior.

Are inputs sent to a server?

No. The checker runs locally in the browser and does not upload the email or manifest.

Check the actual email and manifest

Get evidence, source classification, fix steps, and a locally generated correction draft. No login and no file upload.

Open the free checker