Download OpenAPI specification:Download
Part of the REST API v2 Reference. More Customer endpoints: Customer Resources.
Operations about customers.
GET /projects/{project_id}/customersPOST /projects/{project_id}/customersDELETE /projects/{project_id}/customers/{customer_id}GET /projects/{project_id}/customers/{customer_id}POST /projects/{project_id}/customers/{customer_id}/actions/assign_offeringPOST /projects/{project_id}/customers/{customer_id}/actions/grant_entitlementPOST /projects/{project_id}/customers/{customer_id}/actions/restore_purchase_by_order_idPOST /projects/{project_id}/customers/{customer_id}/actions/revoke_granted_entitlementPOST /projects/{project_id}/customers/{customer_id}/actions/transferGET /projects/{project_id}/customers/{customer_id}/aliasesGET /projects/{project_id}/customers/{customer_id}/attributesPOST /projects/{project_id}/customers/{customer_id}/attributesThis endpoint requires the following permission(s): customer_information:customers:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| starting_after | string Example: starting_after=ent12354 Pagination cursor. Pass the id of the last item from the previous page to fetch the next page; omit for the first page. |
| limit | integer Default: 20 Example: limit=10 Maximum number of items to return per page. Values below 1 or above 100 are clamped to that range rather than rejected. |
| search | string [ 1 .. 255 ] characters Example: search=example@example.com Search term used to find matching customers within the project. The term is matched against, in order: the $email attribute (exact match), the customer's app user IDs, store transaction identifiers (Apple, Google Play and Amazon), and Apple order IDs. Email searches are paginated; all other identifier searches return a single page of matches. |
{- "object": "list",
- "items": [
- {
- "object": "customer",
- "id": "19b8de26-77c1-49f1-aa18-019a391603e2",
- "project_id": "proj1ab2c3d4",
- "first_seen_at": 1658399423658,
- "last_seen_at": 1658399423658,
- "last_seen_app_version": "1.0.0",
- "last_seen_country": "US",
- "last_seen_platform": "android",
- "last_seen_platform_version": "35",
- "active_entitlements": {
- "object": "list",
- "items": [
- {
- "object": "customer.active_entitlement",
- "entitlement_id": "entla1b2c3d4e5",
- "expires_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements?starting_after=entlab21dac",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements"
}, - "experiment": {
- "object": "experiment_enrollment",
- "id": "string",
- "name": "string",
- "variant": "a"
}, - "attributes": {
- "object": "list",
- "items": [
- {
- "object": "customer.attribute",
- "name": "$email",
- "value": "garfield@revenuecat.com",
- "updated_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes?starting_after=myCustomAttribute",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes"
}
}
], - "next_page": "/v2/projects/projec1a2b3c4d/customers?starting_after=223xx1100",
- "url": "/v2/projects/projec1a2b3c4d/customers"
}This endpoint requires the following permission(s): customer_information:customers:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| id required | string [ 1 .. 1500 ] characters ^[0-9a-zA-Z_-]*$ The ID of the customer | ||||
Array of objects <= 50 characters | |||||
Array
| |||||
{- "id": "19b8de26-77c1-49f1-aa18-019a391603e2",
- "attributes": [
- {
- "name": "$email",
- "value": "cat@revenuecat.com"
}
]
}{- "object": "customer",
- "id": "19b8de26-77c1-49f1-aa18-019a391603e2",
- "project_id": "proj1ab2c3d4",
- "first_seen_at": 1658399423658,
- "last_seen_at": 1658399423658,
- "last_seen_app_version": "1.0.0",
- "last_seen_country": "US",
- "last_seen_platform": "android",
- "last_seen_platform_version": "35",
- "active_entitlements": {
- "object": "list",
- "items": [
- {
- "object": "customer.active_entitlement",
- "entitlement_id": "entla1b2c3d4e5",
- "expires_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements?starting_after=entlab21dac",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements"
}, - "experiment": {
- "object": "experiment_enrollment",
- "id": "string",
- "name": "string",
- "variant": "a"
}, - "attributes": {
- "object": "list",
- "items": [
- {
- "object": "customer.attribute",
- "name": "$email",
- "value": "garfield@revenuecat.com",
- "updated_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes?starting_after=myCustomAttribute",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes"
}
}This endpoint requires the following permission(s): customer_information:customers:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| customer_id required | string [ 1 .. 1500 ] characters Example: 19b8de26-77c1-49f1-aa18-019a391603e2 ID of the customer |
{- "object": "customer",
- "id": "b5b7bfd2-66fb-4091-af50-7c3cdccfdf24",
- "deleted_at": 1658399423658
}This endpoint requires the following permission(s): customer_information:customers:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| customer_id required | string [ 1 .. 1500 ] characters Example: 19b8de26-77c1-49f1-aa18-019a391603e2 ID of the customer |
| expand | Array of strings[ items [ 1 .. 5000 ] characters ] Items Value: "attributes" Example: expand=attributes Specifies which fields in the response should be expanded.
Accepted values are: |
{- "object": "customer",
- "id": "19b8de26-77c1-49f1-aa18-019a391603e2",
- "project_id": "proj1ab2c3d4",
- "first_seen_at": 1658399423658,
- "last_seen_at": 1658399423658,
- "last_seen_app_version": "1.0.0",
- "last_seen_country": "US",
- "last_seen_platform": "android",
- "last_seen_platform_version": "35",
- "active_entitlements": {
- "object": "list",
- "items": [
- {
- "object": "customer.active_entitlement",
- "entitlement_id": "entla1b2c3d4e5",
- "expires_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements?starting_after=entlab21dac",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements"
}, - "experiment": {
- "object": "experiment_enrollment",
- "id": "string",
- "name": "string",
- "variant": "a"
}, - "attributes": {
- "object": "list",
- "items": [
- {
- "object": "customer.attribute",
- "name": "$email",
- "value": "garfield@revenuecat.com",
- "updated_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes?starting_after=myCustomAttribute",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes"
}
}This endpoint requires the following permission(s): project_configuration:offerings:read, customer_information:customers:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| customer_id required | string [ 1 .. 1500 ] characters Example: 19b8de26-77c1-49f1-aa18-019a391603e2 ID of the customer |
| offering_id required | string or null [ 1 .. 255 ] characters The ID of the offering to assign to the customer. Set to null to clear any existing override. |
{- "offering_id": "offrng1b2c3d4e5"
}{- "object": "error",
- "type": "parameter_error",
- "param": "customer_id",
- "message": "id is too long",
- "retryable": false,
}Grants a promotional entitlement until expires_at, and creates a promotional subscription, but only if expires_at is at least two hours away from any existing promotional grant for the same entitlement.
To extend access, call again with a new expires_at that is at least two hours later than the existing grant. To shorten access, revoke the existing grant, then grant again with the desired expires_at. For store billing-period extensions, use /subscriptions/{subscription_id}/actions/extend (Apple, Google Play, and Web Billing only). This endpoint requires the following permission(s): customer_information:customers:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| customer_id required | string [ 1 .. 1500 ] characters Example: 19b8de26-77c1-49f1-aa18-019a391603e2 ID of the customer |
| entitlement_id required | string [ 1 .. 255 ] characters The ID of the entitlement to grant to the customer. |
| expires_at required | integer <int64> Expiry in milliseconds since epoch (must be in the future). If another promotional grant for this entitlement already has an expiry within two hours of this value, the request is ignored as a duplicate. |
{- "entitlement_id": "entla1b2c3d4e5",
- "expires_at": 1658399423658
}{- "object": "customer",
- "id": "19b8de26-77c1-49f1-aa18-019a391603e2",
- "project_id": "proj1ab2c3d4",
- "first_seen_at": 1658399423658,
- "last_seen_at": 1658399423658,
- "last_seen_app_version": "1.0.0",
- "last_seen_country": "US",
- "last_seen_platform": "android",
- "last_seen_platform_version": "35",
- "active_entitlements": {
- "object": "list",
- "items": [
- {
- "object": "customer.active_entitlement",
- "entitlement_id": "entla1b2c3d4e5",
- "expires_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements?starting_after=entlab21dac",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements"
}, - "experiment": {
- "object": "experiment_enrollment",
- "id": "string",
- "name": "string",
- "variant": "a"
}, - "attributes": {
- "object": "list",
- "items": [
- {
- "object": "customer.attribute",
- "name": "$email",
- "value": "garfield@revenuecat.com",
- "updated_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes?starting_after=myCustomAttribute",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes"
}
}Restores a Google Play purchase to the specified customer using a Google Play order ID. This endpoint requires the following permission(s): customer_information:customers:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| customer_id required | string [ 1 .. 1500 ] characters Example: 19b8de26-77c1-49f1-aa18-019a391603e2 ID of the customer |
| order_id required | string non-empty The Google Play order ID to restore. |
{- "order_id": "GPA.1234-5678-9012-34567"
}{- "object": "customer",
- "id": "19b8de26-77c1-49f1-aa18-019a391603e2",
- "project_id": "proj1ab2c3d4",
- "first_seen_at": 1658399423658,
- "last_seen_at": 1658399423658,
- "last_seen_app_version": "1.0.0",
- "last_seen_country": "US",
- "last_seen_platform": "android",
- "last_seen_platform_version": "35",
- "active_entitlements": {
- "object": "list",
- "items": [
- {
- "object": "customer.active_entitlement",
- "entitlement_id": "entla1b2c3d4e5",
- "expires_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements?starting_after=entlab21dac",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements"
}, - "experiment": {
- "object": "experiment_enrollment",
- "id": "string",
- "name": "string",
- "variant": "a"
}, - "attributes": {
- "object": "list",
- "items": [
- {
- "object": "customer.attribute",
- "name": "$email",
- "value": "garfield@revenuecat.com",
- "updated_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes?starting_after=myCustomAttribute",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes"
}
}Revokes all active promotional grants of this entitlement. Associated promotional subscriptions are expired and access ends immediately. This endpoint requires the following permission(s): customer_information:customers:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| customer_id required | string [ 1 .. 1500 ] characters Example: 19b8de26-77c1-49f1-aa18-019a391603e2 ID of the customer |
| entitlement_id required | string [ 1 .. 255 ] characters The ID of the granted entitlement to revoke from the customer. |
{- "entitlement_id": "entla1b2c3d4e5"
}{- "object": "customer",
- "id": "19b8de26-77c1-49f1-aa18-019a391603e2",
- "project_id": "proj1ab2c3d4",
- "first_seen_at": 1658399423658,
- "last_seen_at": 1658399423658,
- "last_seen_app_version": "1.0.0",
- "last_seen_country": "US",
- "last_seen_platform": "android",
- "last_seen_platform_version": "35",
- "active_entitlements": {
- "object": "list",
- "items": [
- {
- "object": "customer.active_entitlement",
- "entitlement_id": "entla1b2c3d4e5",
- "expires_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements?starting_after=entlab21dac",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements"
}, - "experiment": {
- "object": "experiment_enrollment",
- "id": "string",
- "name": "string",
- "variant": "a"
}, - "attributes": {
- "object": "list",
- "items": [
- {
- "object": "customer.attribute",
- "name": "$email",
- "value": "garfield@revenuecat.com",
- "updated_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes?starting_after=myCustomAttribute",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes"
}
}This endpoint requires the following permission(s): customer_information:customers:read_write, customer_information:subscriptions:read_write, customer_information:purchases:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| customer_id required | string [ 1 .. 1500 ] characters Example: 19b8de26-77c1-49f1-aa18-019a391603e2 ID of the customer |
| target_customer_id required | string The ID of the customer to whom the subscriptions and one-time purchases will be transferred. |
| app_ids | Array of strings or null[ items [ 1 .. 255 ] characters ] Optional. The IDs of the apps to filter the transfer by. When specified, only purchases and subscriptions associated with these apps will be transferred. |
{- "target_customer_id": "string",
- "app_ids": [
- "appa2b3c4d5e"
]
}{- "source_customer": {
- "object": "customer",
- "id": "19b8de26-77c1-49f1-aa18-019a391603e2",
- "project_id": "proj1ab2c3d4",
- "first_seen_at": 1658399423658,
- "last_seen_at": 1658399423658,
- "last_seen_app_version": "1.0.0",
- "last_seen_country": "US",
- "last_seen_platform": "android",
- "last_seen_platform_version": "35",
- "active_entitlements": {
- "object": "list",
- "items": [
- {
- "object": "customer.active_entitlement",
- "entitlement_id": "entla1b2c3d4e5",
- "expires_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements?starting_after=entlab21dac",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements"
}, - "experiment": {
- "object": "experiment_enrollment",
- "id": "string",
- "name": "string",
- "variant": "a"
}, - "attributes": {
- "object": "list",
- "items": [
- {
- "object": "customer.attribute",
- "name": "$email",
- "value": "garfield@revenuecat.com",
- "updated_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes?starting_after=myCustomAttribute",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes"
}
}, - "target_customer": {
- "object": "customer",
- "id": "19b8de26-77c1-49f1-aa18-019a391603e2",
- "project_id": "proj1ab2c3d4",
- "first_seen_at": 1658399423658,
- "last_seen_at": 1658399423658,
- "last_seen_app_version": "1.0.0",
- "last_seen_country": "US",
- "last_seen_platform": "android",
- "last_seen_platform_version": "35",
- "active_entitlements": {
- "object": "list",
- "items": [
- {
- "object": "customer.active_entitlement",
- "entitlement_id": "entla1b2c3d4e5",
- "expires_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements?starting_after=entlab21dac",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/active_entitlements"
}, - "experiment": {
- "object": "experiment_enrollment",
- "id": "string",
- "name": "string",
- "variant": "a"
}, - "attributes": {
- "object": "list",
- "items": [
- {
- "object": "customer.attribute",
- "name": "$email",
- "value": "garfield@revenuecat.com",
- "updated_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes?starting_after=myCustomAttribute",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes"
}
}
}This endpoint requires the following permission(s): customer_information:customers:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| customer_id required | string [ 1 .. 1500 ] characters Example: 19b8de26-77c1-49f1-aa18-019a391603e2 ID of the customer |
| starting_after | string Example: starting_after=ent12354 Pagination cursor. Pass the id of the last item from the previous page to fetch the next page; omit for the first page. |
| limit | integer Default: 20 Example: limit=10 Maximum number of items to return per page. Values below 1 or above 100 are clamped to that range rather than rejected. |
{- "object": "list",
- "items": [
- {
- "object": "customer.alias",
- "id": "19b8de26-77c1-49f1-aa18-019a391603e2",
- "created_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/aliases?starting_after=9fjeja8fjed",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/aliases"
}This endpoint requires the following permission(s): customer_information:customers:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| customer_id required | string [ 1 .. 1500 ] characters Example: 19b8de26-77c1-49f1-aa18-019a391603e2 ID of the customer |
| starting_after | string Example: starting_after=ent12354 Pagination cursor. Pass the id of the last item from the previous page to fetch the next page; omit for the first page. |
| limit | integer Default: 20 Example: limit=10 Maximum number of items to return per page. Values below 1 or above 100 are clamped to that range rather than rejected. |
{- "object": "list",
- "items": [
- {
- "object": "customer.attribute",
- "name": "$email",
- "value": "garfield@revenuecat.com",
- "updated_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes?starting_after=myCustomAttribute",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes"
}This endpoint requires the following permission(s): customer_information:customers:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute.
| project_id required | string <= 255 characters Example: proj1ab2c3d4 ID of the project |
| customer_id required | string [ 1 .. 1500 ] characters Example: 19b8de26-77c1-49f1-aa18-019a391603e2 ID of the customer |
required | Array of objects [ 1 .. 50 ] items | ||||
Array ([ 1 .. 50 ] items)
| |||||
{- "attributes": [
- {
- "name": "$email",
- "value": "support@revenuecat.com"
}, - {
- "name": "$displayName",
- "value": "John Appleseed"
}, - {
- "name": "my_custom_attr",
- "value": "custom value"
}
]
}{- "object": "list",
- "items": [
- {
- "object": "customer.attribute",
- "name": "$email",
- "value": "garfield@revenuecat.com",
- "updated_at": 1658399423658
}
], - "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes?starting_after=myCustomAttribute",
- "url": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/attributes"
}All API v2 resources, one page each. General concepts (authentication, pagination, rate limits, error handling) live on the API v2 overview.