Method: purchases.subscriptions.get
Stay organized with collections
Save and categorize content based on your preferences.
Deprecated: Use purchases.subscriptionsv2.get instead. Checks whether a user's subscription purchase is valid and returns its expiry time.
HTTP request
GET https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}
The URL uses gRPC Transcoding
syntax.
Path parameters
Parameters |
packageName
|
string
The package name of the application for which this subscription was purchased (for example, 'com.some.thing').
|
subscriptionId
|
string
The purchased subscription ID (for example, 'monthly001').
|
token
|
string
The token provided to the user's device when the subscription was purchased.
|
Request body
The request body must be empty.
Response body
If successful, the response body contains an instance of SubscriptionPurchase
.
Sample
The following is a sample request:
curl
-
X
GET
\
'h
tt
ps
:
//androidpublisher.googleapis.com/androidpublisher/v3/applications/com.example.app/purchases/subscriptions/monthly.premium/tokens/abcdefghijklmnopqrstuvwxyz.0123456789' \
-
H
'Accep
t
:
applica
t
io
n
/jso
n
'
The following is a sample response:
{
"kind"
:
"androidpublisher#subscriptionPurchase"
,
"startTimeMillis"
:
"1678886400000"
,
"expiryTimeMillis"
:
"1710470400000"
,
"autoRenewing"
:
true
,
"priceCurrencyCode"
:
"USD"
,
"priceAmountMicros"
:
"9990000"
,
"introductoryPriceInfo"
:
{
"introductoryPriceCurrencyCode"
:
"USD"
,
"introductoryPriceAmountMicros"
:
"4990000"
,
"introductoryPricePeriod"
:
"P1M"
,
"introductoryPriceCycles"
:
1
},
"countryCode"
:
"US"
,
"developerPayload"
:
"{\"userId\": \"user12345\", \"source\": \"app-promo\"}"
,
"paymentState"
:
1
,
"cancelReason"
:
0
,
"userCancellationTimeMillis"
:
"1709251200000"
,
"cancelSurveyResult"
:
{
"cancelSurveyReason"
:
3
,
"userInputCancelReason"
:
null
},
"orderId"
:
"GPA.3344-5566-7788-99001"
,
"linkedPurchaseToken"
:
null
,
"purchaseType"
:
0
,
"priceChange"
:
null
,
"profileName"
:
"Jane Doe"
,
"emailAddress"
:
"jane.doe@example.com"
,
"givenName"
:
"Jane"
,
"familyName"
:
"Doe"
,
"profileId"
:
"109876543210987654321"
,
"acknowledgementState"
:
1
,
"externalAccountId"
:
"user-jane-doe-app-id"
,
"promotionType"
:
1
,
"promotionCode"
:
"WELCOME20"
,
"obfuscatedExternalAccountId"
:
"obfUaCcOunTId123"
,
"obfuscatedExternalProfileId"
:
"obfPrOfiLeId456"
,
"autoResumeTimeMillis"
:
null
}
Authorization scopes
Requires the following OAuth scope:
-
https://www.googleapis.com/auth/androidpublisher
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-06-02 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-02 UTC."],[[["\u003cp\u003eVerifies the validity of a user's subscription purchase and provides the expiry time.\u003c/p\u003e\n"],["\u003cp\u003eRequires the package name, subscription ID, and purchase token to validate the subscription.\u003c/p\u003e\n"],["\u003cp\u003eUses an HTTP GET request and requires authorization with the \u003ccode\u003ehttps://www.googleapis.com/auth/androidpublisher\u003c/code\u003e scope.\u003c/p\u003e\n"],["\u003cp\u003eReturns a \u003ccode\u003eSubscriptionPurchase\u003c/code\u003e object containing subscription details if the purchase is valid.\u003c/p\u003e\n"]]],["The core function validates a user's subscription purchase and provides its expiry time. It uses a `GET` HTTP request to a specific URL, incorporating parameters for `packageName`, `subscriptionId`, and `token`. The request body should be empty. A successful response returns a `SubscriptionPurchase` instance. Authorization requires the `https://www.googleapis.com/auth/androidpublisher` OAuth scope. This process verifies the validity of subscription data using a predefined request structure and security measures.\n"],null,["# Method: purchases.subscriptions.get\n\n- [HTTP request](#body.HTTP_TEMPLATE)\n- [Path parameters](#body.PATH_PARAMETERS)\n- [Request body](#body.request_body)\n- [Response body](#body.response_body)\n- [Authorization scopes](#body.aspect)\n- [Try it!](#try-it)\n\n| This item is deprecated!\nDeprecated: Use purchases.subscriptionsv2.get instead. Checks whether a user's subscription purchase is valid and returns its expiry time.\n\n### HTTP request\n\n`GET https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}`\n\nThe URL uses [gRPC Transcoding](https://google.aip.dev/127) syntax.\n\n### Path parameters\n\n| Parameters ||\n|------------------|-------------------------------------------------------------------------------------------------------------------------|\n| `packageName` | `string` The package name of the application for which this subscription was purchased (for example, 'com.some.thing'). |\n| `subscriptionId` | `string` The purchased subscription ID (for example, 'monthly001'). |\n| `token` | `string` The token provided to the user's device when the subscription was purchased. |\n\n### Request body\n\nThe request body must be empty.\n\n### Response body\n\nIf successful, the response body contains an instance of [SubscriptionPurchase](/android-publisher/api-ref/rest/v3/purchases.subscriptions#SubscriptionPurchase).\n\n### Sample\n\nThe following is a sample request: \n\n```json\ncurl -X GET \\\n 'https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.example.app/purchases/subscriptions/monthly.premium/tokens/abcdefghijklmnopqrstuvwxyz.0123456789' \\\n -H 'Accept: application/json'\n```\n\nThe following is a sample response: \n\n```json\n{\n \"kind\": \"androidpublisher#subscriptionPurchase\",\n \"startTimeMillis\": \"1678886400000\",\n \"expiryTimeMillis\": \"1710470400000\",\n \"autoRenewing\": true,\n \"priceCurrencyCode\": \"USD\",\n \"priceAmountMicros\": \"9990000\",\n \"introductoryPriceInfo\": {\n \"introductoryPriceCurrencyCode\": \"USD\",\n \"introductoryPriceAmountMicros\": \"4990000\",\n \"introductoryPricePeriod\": \"P1M\",\n \"introductoryPriceCycles\": 1\n },\n \"countryCode\": \"US\",\n \"developerPayload\": \"{\\\"userId\\\": \\\"user12345\\\", \\\"source\\\": \\\"app-promo\\\"}\",\n \"paymentState\": 1,\n \"cancelReason\": 0,\n \"userCancellationTimeMillis\": \"1709251200000\",\n \"cancelSurveyResult\": {\n \"cancelSurveyReason\": 3,\n \"userInputCancelReason\": null\n },\n \"orderId\": \"GPA.3344-5566-7788-99001\",\n \"linkedPurchaseToken\": null,\n \"purchaseType\": 0,\n \"priceChange\": null,\n \"profileName\": \"Jane Doe\",\n \"emailAddress\": \"jane.doe@example.com\",\n \"givenName\": \"Jane\",\n \"familyName\": \"Doe\",\n \"profileId\": \"109876543210987654321\",\n \"acknowledgementState\": 1,\n \"externalAccountId\": \"user-jane-doe-app-id\",\n \"promotionType\": 1,\n \"promotionCode\": \"WELCOME20\",\n \"obfuscatedExternalAccountId\": \"obfUaCcOunTId123\",\n \"obfuscatedExternalProfileId\": \"obfPrOfiLeId456\",\n \"autoResumeTimeMillis\": null\n}\n```\n\n### Authorization scopes\n\nRequires the following OAuth scope:\n\n- `https://www.googleapis.com/auth/androidpublisher`"]]