Download OpenAPI specification:Download
RevenueCat API v1 endpoint reference for Customers.
Part of the REST API v1 Reference.
Operations about customers.
GET /subscribers/{app_user_id}DELETE /subscribers/{app_user_id}POST /subscribers/{app_user_id}/attributionPOST /subscribers/{app_user_id}/attributesGET /customerPOST /customer/attributesGET /customer/virtual_currenciesPOST /customer/virtual_currencies/spendGET /{project_id}/.well-known/jwks.jsonGets the latest Customer Info for the customer with the given App User ID, or creates a new customer if it doesn't exist.
| app_user_id required | string The App User ID used with the mobile SDK. |
| X-Platform | string Example: ios Optionally set the X-Platform header to update the Customer's |
{- "request_date": "2019-07-26T17:40:10Z",
- "request_date_ms": 1564162810884,
- "subscriber": {
- "entitlements": {
- "pro_cat": {
- "expires_date": null,
- "grace_period_expires_date": null,
- "product_identifier": "onetime",
- "purchase_date": "2019-04-05T21:52:45Z"
}
}, - "first_seen": "2019-02-21T00:08:41Z",
- "non_subscriptions": {
- "onetime": [
- {
- "id": "cadba0c81b",
- "is_sandbox": true,
- "purchase_date": "2019-04-05T21:52:45Z",
- "store": "app_store"
}
]
}, - "original_app_user_id": "XXX-XXXXX-XXXXX-XX",
- "original_application_version": "1.0",
- "original_purchase_date": "2019-01-30T23:54:10Z",
- "other_purchases": { },
- "subscriptions": {
- "annual": {
- "auto_resume_date": null,
- "billing_issues_detected_at": null,
- "expires_date": "2019-08-14T21:07:40Z",
- "grace_period_expires_date": null,
- "is_sandbox": true,
- "original_purchase_date": "2019-02-21T00:42:05Z",
- "ownership_type": "PURCHASED",
- "period_type": "normal",
- "purchase_date": "2019-07-14T20:07:40Z",
- "refunded_at": null,
- "store": "play_store",
- "store_transaction_id": "GPA.6801-7988-0152-76034..5",
- "unsubscribe_detected_at": "2019-07-17T22:48:38Z"
}, - "onemonth": {
- "auto_resume_date": null,
- "billing_issues_detected_at": null,
- "expires_date": "2019-06-17T22:47:55Z",
- "grace_period_expires_date": null,
- "is_sandbox": true,
- "original_purchase_date": "2019-02-21T00:42:05Z",
- "ownership_type": "PURCHASED",
- "period_type": "normal",
- "purchase_date": "2019-06-17T22:42:55Z",
- "refunded_at": null,
- "store": "app_store",
- "store_transaction_id": 1000000652379790,
- "unsubscribe_detected_at": "2019-06-17T22:48:38Z"
}, - "rc_promo_pro_cat_monthly": {
- "auto_resume_date": null,
- "billing_issues_detected_at": null,
- "expires_date": "2019-08-26T01:02:16Z",
- "grace_period_expires_date": null,
- "is_sandbox": false,
- "original_purchase_date": "2019-07-26T01:02:16Z",
- "ownership_type": "FAMILY_SHARED",
- "period_type": "normal",
- "purchase_date": "2019-07-26T01:02:16Z",
- "refunded_at": null,
- "store": "promotional",
- "store_transaction_id": "a42db3af39530cb82b17eaf9c6576393",
- "unsubscribe_detected_at": null
}
}
}
}Permanently deletes a customer. Deletion is queued asynchronously.
For retry-safe flows, treat both 200 and 404 as successful "ensure deleted"
completion.
| app_user_id required | string The App User ID of the customer to be deleted (might be an aliased App User ID). |
{- "app_user_id": "XXX-XXXXX-XXXXX-XX",
- "deleted": true
}Attaches attribution data to a subscriber from specific supported networks.
| app_user_id required | string The App User ID of the Customer. |
required | object The data returned by the attribution network callbacks. | ||||
| |||||
| network required | string Enum: "0" "1" "2" "3" "4" "5" The attribution network the data is coming from:
| ||||
{- "data": {
- "rc_idfa": "string",
- "rc_gps_adid": "string"
}, - "network": "0"
}"{}"Updates attributes for a customer.
| app_user_id required | string The App User ID used with the mobile SDK. |
object | |||||||||
| |||||||||
{- "attributes": {
- "key_name": {
- "value": "string",
- "updated_at_ms": 1709195668093
}
}
}{- "value": {
- "request_date": "2019-07-26T17:40:10Z",
- "request_date_ms": 1564162810884,
- "subscriber": {
- "entitlements": {
- "pro_cat": {
- "expires_date": null,
- "grace_period_expires_date": null,
- "product_identifier": "onetime",
- "purchase_date": "2019-04-05T21:52:45Z"
}
}, - "first_seen": "2019-02-21T00:08:41Z",
- "non_subscriptions": {
- "onetime": [
- {
- "id": "cadba0c81b",
- "is_sandbox": true,
- "purchase_date": "2019-04-05T21:52:45Z",
- "store": "app_store"
}
]
}, - "original_app_user_id": "XXX-XXXXX-XXXXX-XX",
- "original_application_version": "1.0",
- "original_purchase_date": "2019-01-30T23:54:10Z",
- "other_purchases": { },
- "subscriptions": {
- "annual": {
- "auto_resume_date": null,
- "billing_issues_detected_at": null,
- "expires_date": "2019-08-14T21:07:40Z",
- "grace_period_expires_date": null,
- "is_sandbox": true,
- "original_purchase_date": "2019-02-21T00:42:05Z",
- "ownership_type": "PURCHASED",
- "period_type": "normal",
- "purchase_date": "2019-07-14T20:07:40Z",
- "refunded_at": null,
- "store": "play_store",
- "store_transaction_id": "GPA.6801-7988-0152-76034..5",
- "unsubscribe_detected_at": "2019-07-17T22:48:38Z"
}, - "onemonth": {
- "auto_resume_date": null,
- "billing_issues_detected_at": null,
- "expires_date": "2019-06-17T22:47:55Z",
- "grace_period_expires_date": null,
- "is_sandbox": true,
- "original_purchase_date": "2019-02-21T00:42:05Z",
- "ownership_type": "PURCHASED",
- "period_type": "normal",
- "purchase_date": "2019-06-17T22:42:55Z",
- "refunded_at": null,
- "store": "app_store",
- "store_transaction_id": 1000000652379790,
- "unsubscribe_detected_at": "2019-06-17T22:48:38Z"
}, - "rc_promo_pro_cat_monthly": {
- "auto_resume_date": null,
- "billing_issues_detected_at": null,
- "expires_date": "2019-08-26T01:02:16Z",
- "grace_period_expires_date": null,
- "is_sandbox": false,
- "original_purchase_date": "2019-07-26T01:02:16Z",
- "ownership_type": "FAMILY_SHARED",
- "period_type": "normal",
- "purchase_date": "2019-07-26T01:02:16Z",
- "refunded_at": null,
- "store": "promotional",
- "store_transaction_id": "a42db3af39530cb82b17eaf9c6576393",
- "unsubscribe_detected_at": null
}
}
}
}
}Gets the latest Customer Info for the Customer identified by the access token. Use this endpoint from your backend to identify the Customer behind a request from your app. See Verify access tokens on your backend.
Requires an Authentication access token. The token is the only credential: don't send an API key. Authentication is in private beta.
{- "value": {
- "request_date": "2019-07-26T17:40:10Z",
- "request_date_ms": 1564162810884,
- "subscriber": {
- "entitlements": {
- "pro_cat": {
- "expires_date": null,
- "grace_period_expires_date": null,
- "product_identifier": "onetime",
- "purchase_date": "2019-04-05T21:52:45Z"
}
}, - "first_seen": "2019-02-21T00:08:41Z",
- "non_subscriptions": {
- "onetime": [
- {
- "id": "cadba0c81b",
- "is_sandbox": true,
- "purchase_date": "2019-04-05T21:52:45Z",
- "store": "app_store"
}
]
}, - "original_app_user_id": "XXX-XXXXX-XXXXX-XX",
- "original_application_version": "1.0",
- "original_purchase_date": "2019-01-30T23:54:10Z",
- "other_purchases": { },
- "subscriptions": {
- "annual": {
- "auto_resume_date": null,
- "billing_issues_detected_at": null,
- "expires_date": "2019-08-14T21:07:40Z",
- "grace_period_expires_date": null,
- "is_sandbox": true,
- "original_purchase_date": "2019-02-21T00:42:05Z",
- "ownership_type": "PURCHASED",
- "period_type": "normal",
- "purchase_date": "2019-07-14T20:07:40Z",
- "refunded_at": null,
- "store": "play_store",
- "store_transaction_id": "GPA.6801-7988-0152-76034..5",
- "unsubscribe_detected_at": "2019-07-17T22:48:38Z"
}, - "onemonth": {
- "auto_resume_date": null,
- "billing_issues_detected_at": null,
- "expires_date": "2019-06-17T22:47:55Z",
- "grace_period_expires_date": null,
- "is_sandbox": true,
- "original_purchase_date": "2019-02-21T00:42:05Z",
- "ownership_type": "PURCHASED",
- "period_type": "normal",
- "purchase_date": "2019-06-17T22:42:55Z",
- "refunded_at": null,
- "store": "app_store",
- "store_transaction_id": 1000000652379790,
- "unsubscribe_detected_at": "2019-06-17T22:48:38Z"
}, - "rc_promo_pro_cat_monthly": {
- "auto_resume_date": null,
- "billing_issues_detected_at": null,
- "expires_date": "2019-08-26T01:02:16Z",
- "grace_period_expires_date": null,
- "is_sandbox": false,
- "original_purchase_date": "2019-07-26T01:02:16Z",
- "ownership_type": "FAMILY_SHARED",
- "period_type": "normal",
- "purchase_date": "2019-07-26T01:02:16Z",
- "refunded_at": null,
- "store": "promotional",
- "store_transaction_id": "a42db3af39530cb82b17eaf9c6576393",
- "unsubscribe_detected_at": null
}
}
}
}, - "user": {
- "id": "string",
- "identities": [
- {
- "method": "apple",
- "id": "string"
}
], - "amr": [
- "string"
]
}
}Updates attributes for the Customer identified by the access token. Accepts the same body as Update Customer Attributes.
Requires an Authentication access token. Authentication is in private beta.
object Mapping of attribute keys to an object with a | |||||||||
| |||||||||
{- "attributes": {
- "property1": {
- "value": "string",
- "updated_at_ms": 1709195668093
}, - "property2": {
- "value": "string",
- "updated_at_ms": 1709195668093
}
}
}{- "value": {
- "request_date": "2019-07-26T17:40:10Z",
- "request_date_ms": 1564162810884,
- "subscriber": {
- "entitlements": {
- "pro_cat": {
- "expires_date": null,
- "grace_period_expires_date": null,
- "product_identifier": "onetime",
- "purchase_date": "2019-04-05T21:52:45Z"
}
}, - "first_seen": "2019-02-21T00:08:41Z",
- "non_subscriptions": {
- "onetime": [
- {
- "id": "cadba0c81b",
- "is_sandbox": true,
- "purchase_date": "2019-04-05T21:52:45Z",
- "store": "app_store"
}
]
}, - "original_app_user_id": "XXX-XXXXX-XXXXX-XX",
- "original_application_version": "1.0",
- "original_purchase_date": "2019-01-30T23:54:10Z",
- "other_purchases": { },
- "subscriptions": {
- "annual": {
- "auto_resume_date": null,
- "billing_issues_detected_at": null,
- "expires_date": "2019-08-14T21:07:40Z",
- "grace_period_expires_date": null,
- "is_sandbox": true,
- "original_purchase_date": "2019-02-21T00:42:05Z",
- "ownership_type": "PURCHASED",
- "period_type": "normal",
- "purchase_date": "2019-07-14T20:07:40Z",
- "refunded_at": null,
- "store": "play_store",
- "store_transaction_id": "GPA.6801-7988-0152-76034..5",
- "unsubscribe_detected_at": "2019-07-17T22:48:38Z"
}, - "onemonth": {
- "auto_resume_date": null,
- "billing_issues_detected_at": null,
- "expires_date": "2019-06-17T22:47:55Z",
- "grace_period_expires_date": null,
- "is_sandbox": true,
- "original_purchase_date": "2019-02-21T00:42:05Z",
- "ownership_type": "PURCHASED",
- "period_type": "normal",
- "purchase_date": "2019-06-17T22:42:55Z",
- "refunded_at": null,
- "store": "app_store",
- "store_transaction_id": 1000000652379790,
- "unsubscribe_detected_at": "2019-06-17T22:48:38Z"
}, - "rc_promo_pro_cat_monthly": {
- "auto_resume_date": null,
- "billing_issues_detected_at": null,
- "expires_date": "2019-08-26T01:02:16Z",
- "grace_period_expires_date": null,
- "is_sandbox": false,
- "original_purchase_date": "2019-07-26T01:02:16Z",
- "ownership_type": "FAMILY_SHARED",
- "period_type": "normal",
- "purchase_date": "2019-07-26T01:02:16Z",
- "refunded_at": null,
- "store": "promotional",
- "store_transaction_id": "a42db3af39530cb82b17eaf9c6576393",
- "unsubscribe_detected_at": null
}
}
}
}
}Gets the in-app currency balances of the Customer identified by the access token, including currencies with a zero balance.
Requires an Authentication access token. Authentication is in private beta.
{- "virtual_currencies": {
- "property1": {
- "balance": 100,
- "name": "Gold",
- "code": "GLD",
- "description": "Premium currency"
}, - "property2": {
- "balance": 100,
- "name": "Gold",
- "code": "GLD",
- "description": "Premium currency"
}
}
}Spends in-app currency from the balance of the Customer identified by the access token. All amounts in one request are spent together, or none are.
Requires an Authentication access token. Authentication is in private beta. To spend currency with a secret API key from your server, use the API v2 transactions endpoint.
| Idempotency-Key | string <= 255 characters An optional key that makes the request safe to retry. RevenueCat processes a transaction with the same key only once. |
required | object Mapping of currency codes to the amount to spend. Each amount must be greater than 0. | ||
| |||
| reference | string or null An optional identifier of your own to attach to the transaction. | ||
{- "adjustments": {
- "GLD": 20,
- "SLV": 10
}, - "reference": "my_custom_transaction_id"
}{- "virtual_currencies": {
- "property1": {
- "balance": 100,
- "name": "Gold",
- "code": "GLD",
- "description": "Premium currency"
}, - "property2": {
- "balance": 100,
- "name": "Gold",
- "code": "GLD",
- "description": "Premium currency"
}
}
}Gets the public keys that verify the signature of the access tokens of your project, as a JSON Web Key Set. Match the kid header of an access token to the kid of a key. See Verify access tokens on your backend.
This endpoint is public and needs no credentials. Cache the response. Authentication is in private beta.
| project_id required | string The ID of your RevenueCat project, from Project Settings → General in the dashboard. |
{- "keys": [
- {
- "kty": "RSA",
- "alg": "RS256",
- "use": "sig",
- "kid": "string",
- "n": "string",
- "e": "AQAB"
}
]
}All API v1 resources, one page each. General concepts (authentication, request format, URL parameters) live on the API v1 overview.