# DeviceCheck Reduce fraudulent use of your services by managing device state and asserting app integrity. ## Overview The DeviceCheck services consist of both a framework interface that you access from your app and an Apple server interface that you access from your own server. Using the [`DCDevice`](/documentation/DeviceCheck/DCDevice) class in your app, you can get a token that you use on your server to set and query two binary digits of data per device, while maintaining user privacy. For example, you might use this data to identify devices that have already taken advantage of a promotional offer that you provide, or to flag a device that you’ve determined to be fraudulent. The server-to-server APIs also let you verify that the token you receive comes from your app on an Apple device. Someone who modifies your app and distributes it outside the App Store can add unauthorized features like game cheats, ad removal, or access to premium content. The App Attest service gives your app a way to assert its validity so that your server can more confidently provide access to sensitive resources. You use the [`DCAppAttestService`](/documentation/DeviceCheck/DCAppAttestService) class to generate a special cryptographic key on the device, and have Apple attest to the validity of that key. You then use that key to assert the validity of your app whenever you request sensitive data from your server. ![A diagram showing the connections between your app and App Attest, between your app and your server, and between your server and an Apple server.](images/com.apple.DeviceCheck/devicecheck-1@2x.png) No single policy can eliminate all fraud. For example, App Attest can’t definitively pinpoint a device with a compromised operating system. Instead, the DeviceCheck services provide information that you can integrate into an overall risk assessment for a given device. ## Topics ### Device identification [Accessing and modifying per-device data](/documentation/DeviceCheck/accessing-and-modifying-per-device-data) Use a token from your app to query and modify two per-device binary digits stored on an Apple server. [`DCDevice`](/documentation/DeviceCheck/DCDevice) A representation of a device that provides a unique, authenticated token. ### App Attest [Establishing your app’s integrity](/documentation/DeviceCheck/establishing-your-app-s-integrity) Ensure that requests your server receives come from legitimate instances of your app. [Validating apps that connect to your server](/documentation/DeviceCheck/validating-apps-that-connect-to-your-server) Verify that connections to your server come from legitimate instances of your app. [Assessing fraud risk](/documentation/DeviceCheck/assessing-fraud-risk) Request and analyze risk data using server-to-server calls. [Preparing to use the app attest service](/documentation/DeviceCheck/preparing-to-use-the-app-attest-service) Test your implementation in a development environment and onboard users gradually. [Attestation Object Validation Guide](/documentation/DeviceCheck/attestation-object-validation-guide) Use this guide to validate your implementation of verifying the attestation object verification process. [`DCAppAttestService`](/documentation/DeviceCheck/DCAppAttestService) A service that you use to validate the instance of your app running on a device. ### Errors [`DCError`](/documentation/DeviceCheck/DCError-swift.struct) A type that indicates when DeviceCheck encounters an error. [`DCError.Code`](/documentation/DeviceCheck/DCError-swift.struct/Code) DeviceCheck error codes. [`DCErrorDomain`](/documentation/DeviceCheck/DCErrorDomain) The error domain for errors associated with DeviceCheck APIs. --- Copyright © 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)