Skip to content

App Store Connect upload errorApp Store Connect: “ITMS-91053: Missing API declaration”

After an upload, App Store Connect emails ITMS-91053: Missing API declaration and names an API category, such as NSPrivacyAccessedAPICategoryUserDefaults. Your app, or an SDK inside it, uses an API that Apple requires a reason for, and no privacy manifest declares it. The fix is a privacy manifest with the right reason, in your app or in the SDK. Here it is in Apple’s words, or hand it over at a fixed price.

Short answer

Find which code uses the API named in the email. If it is your own code, add a PrivacyInfo.xcprivacy file to the app target in Xcode and list the API category with an approved reason under NSPrivacyAccessedAPITypes. If it is a third-party SDK, update it to a version that ships its own privacy manifest. Then rebuild and upload.

Why it’s flagged, and the fix

  1. 01

    The app has no privacy manifest for the API

    “Starting May 1, 2024, apps that don’t describe their use of required reason API in their privacy manifest file aren’t accepted by App Store Connect.” Apple, Describing use of required reason API

    Apple lists a set of APIs, such as user defaults, file timestamps, system boot time and disk space, that need a declared reason. Without one, the upload isn’t accepted.

  2. 02

    Add PrivacyInfo.xcprivacy to the app target

    “By default, the file is named PrivacyInfo.xcprivacy; this is the required file name for bundled privacy manifests.” Apple, Privacy manifest files

    In Xcode, choose File > New File, pick App Privacy File, and check the app target. Add one entry per API category the email names, with the reason code that matches how your app uses it. These keys sit inside the top-level dict of PrivacyInfo.xcprivacy.

    <key>NSPrivacyAccessedAPITypes</key>
    <array>
      <dict>
        <key>NSPrivacyAccessedAPIType</key>
        <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
        <key>NSPrivacyAccessedAPITypeReasons</key>
        <array>
          <string>CA92.1</string>
        </array>
      </dict>
    </array>
  3. 03

    An SDK uses the API

    “If you use the API in your third-party SDK’s code, then you need to report the API in your third-party SDK’s privacy manifest file.” Apple, Describing use of required reason API

    If the API is in a third-party SDK or plugin, the SDK’s own manifest has to declare it. Update the SDK, or the Flutter plugin or React Native package that wraps it, to a version that includes a privacy manifest.

  4. 04

    The reason has to match what the app does

    “Your app or third-party SDK must declare one or more approved reasons that accurately reflect your use of each of these APIs and the data derived from their use.” Apple, Describing use of required reason API

    Pick the reason from Apple’s list that describes your real use. CA92.1, for example, is Apple’s reason for user defaults that only your own app reads and writes. Check Apple’s list before you copy it.

Checked against the vendor’s docs on : Apple Developer: Describing use of required reason API; Apple Developer: Privacy manifest files.

Rather hand it over?

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

Resubmit before Apple’s holiday slowdown

Pay for the Diagnosis and send the rejection and access to the app by (US Eastern). The Diagnosis is back by . Pay for the Fix that day and it arrives as a pull request by , in time to build and resubmit before .

In past years Apple said reviews may take longer around the holidays: December 20 to 26 in 2024 (opens in a new tab), December 22 to 27 in 2023 (opens in a new tab), December 23 to 27 in 2022 (opens in a new tab). Apple hasn’t posted its 2026 dates yet (checked ). Approval stays Apple’s decision.

Related: ITMS-90725 SDK version issue · App Store Guideline 5.1.1 data collection · TestFlight Missing Compliance · Privacy manifests in a Flutter app, step by step

Questions

More on this rejection

The email names an API I never call. Why?

Something in the app does: a Flutter plugin, a React Native package or another SDK. Search the built app’s frameworks for the API, or update your dependencies and upload again to see if the email stops.

Does the privacy manifest change my App Store privacy labels?

Not by itself. The labels are set in App Store Connect; keep them consistent with what the app and its SDKs collect.

Can you fix it for me?

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.

A different error?

Describe it and get a written quote

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.