Instance ID API
Stay organized with collections
Save and categorize content based on your preferences.
The Instance ID API lets you integrate Instance ID with your Android
or iOS app. Instance ID provides a unique identifier for each instance of
your app and a mechanism to authenticate and authorize actions. The InstanceID
is long
lived, but may expire for the following reasons:
- Device factory reset.
- User uninstalls the app.
- User performs “Clear Data” in the app.
- Device unused for an extended period (device and region determines the
timespan).
- Instance ID service detects abuse or errors and resets the
InstanceID
.
- Server-side code if your client app requires that functionality.
The Instance ID service notifies your app of an InstanceID
reset via
callback to a InstanceIDListenerService
. If your app receives this
notification, it must call getToken()
and retrieve the new InstanceID
,
and update its servers.
Use the getToken
method to prove the ownership of the InstanceID
and to allow
servers to access data or services associated with the app. The method follows
the patterns of OAuth2, and requires an authorizedEntity
and scope
. The
authorizedEntity
can be a project ID or another InstanceID
, and it determines
the services that are authorized to use the generated token. The scope
determines the specific service or data to which the token allows access.
Learn more about the Instance ID API for:
Android
iOS
Server
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-28 UTC.
[null,null,["Last updated 2025-08-28 UTC."],[[["\u003cp\u003eThe Instance ID API provides a unique identifier for each app instance and enables authentication and authorization.\u003c/p\u003e\n"],["\u003cp\u003eInstance IDs are long-lived but can expire due to various factors like device reset, uninstallation, data clearing, extended inactivity, or service-detected issues.\u003c/p\u003e\n"],["\u003cp\u003eUpon Instance ID reset, apps are notified and must retrieve a new ID using \u003ccode\u003egetToken()\u003c/code\u003e and update their servers.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003egetToken()\u003c/code\u003e method, using OAuth2 patterns, verifies Instance ID ownership and grants server access to associated data or services based on authorized entity and scope.\u003c/p\u003e\n"]]],[],null,["# Instance ID API\n\nThe Instance ID API lets you integrate Instance ID with your Android\nor iOS app. Instance ID provides a unique identifier for each instance of\nyour app and a mechanism to authenticate and authorize actions. The `InstanceID` is long\nlived, but may expire for the following reasons:\n\n- Device factory reset.\n- User uninstalls the app.\n- User performs \"Clear Data\" in the app.\n- Device unused for an extended period (device and region determines the timespan).\n- Instance ID service detects abuse or errors and resets the `InstanceID`.\n- Server-side code if your client app requires that functionality.\n\nThe Instance ID service notifies your app of an `InstanceID` reset via\ncallback to a `InstanceIDListenerService`. If your app receives this\nnotification, it must call `getToken()` and retrieve the new `InstanceID`,\nand update its servers.\n\nUse the `getToken` method to prove the ownership of the `InstanceID` and to allow\nservers to access data or services associated with the app. The method follows\nthe patterns of OAuth2, and requires an `authorizedEntity` and `scope`. The\n`authorizedEntity` can be a project ID or another `InstanceID`, and it determines\nthe services that are authorized to use the generated token. The `scope`\ndetermines the specific service or data to which the token allows access.\n\nLearn more about the Instance ID API for:\n\n[Android](/instance-id/reference/android/api)\n[iOS](/instance-id/reference/ios/api)\n[Server](/instance-id/reference/server)"]]