Customers PRO
A customer is identified by their avatar UUID. GET /customers/{key}/purchases is the route most games and HUDs use.
Did this avatar buy it?
GET
/customers/{key}/purchasesWhat the avatar owns from your store: bought for themselves or received as a gift, refunds excluded. Filter by product_id (or several) or group_id to check a license in a game or HUD. Older versions of a product count too.
This is the license check. It answers 200 with purchased: false when the avatar does not own it, never an error, so a stranger touching your object is a normal answer.
Ask for limit=1 when you only need yes or no.
See Unlock something for buyers.
Path
| Name | Type | Required | Description |
|---|---|---|---|
key | string | Yes | Avatar UUID (key). |
Query
| Name | Type | Required | Description |
|---|---|---|---|
product_id | string | No | One product id, or several separated by commas (up to 50). |
group_id | string | No | Any product of this group of variations. |
cursor | string | No | The next_cursor of the previous page. |
limit | integer | No | Page size (default 50, max 200). |
Example
bash
curl "https://api.fastyvendor.com/api/v1/customers/a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d/purchases?product_id=prd_mxbjm9xtpchmet&limit=1" \
-H "Authorization: Bearer $FASTY_KEY"js
const res = await fetch('https://api.fastyvendor.com/api/v1/customers/a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d/purchases?product_id=prd_mxbjm9xtpchmet&limit=1', {
headers: {
Authorization: `Bearer ${process.env.FASTY_KEY}`,
},
})
const data = await res.json()python
import os, requests
res = requests.get(
"https://api.fastyvendor.com/api/v1/customers/a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d/purchases?product_id=prd_mxbjm9xtpchmet&limit=1",
headers={"Authorization": f"Bearer {os.environ['FASTY_KEY']}"},
)
data = res.json()lsl
llHTTPRequest(API + "/customers/a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d/purchases?product_id=prd_mxbjm9xtpchmet&limit=1",
[HTTP_CUSTOM_HEADER, "Authorization", "Bearer " + KEY,
HTTP_BODY_MAXLENGTH, 16384],
"");Response: 200 OK
json
{
"avatar_key": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"purchased": true,
"count": 1,
"items": [
{
"sale_id": "10f87f28-3705-420d-ae55-8087666e3540",
"product": {
"id": "prd_mxbjm9xtpchmet",
"name": "Riot Boots"
},
"status": "received",
"amount": 0,
"gift_from": null,
"created_at": "2026-11-04T18:27:03.573Z"
}
],
"next_cursor": "b:1793816823573000~10f87f28-3705-420d-ae55-8087666e3540"
}List customers
GET
/customersTop spenders first.
Query
| Name | Type | Required | Description |
|---|---|---|---|
q | string | No | Name or avatar UUID. |
cursor | string | No | The next_cursor of the previous page. |
limit | integer | No | Page size (default 50, max 200). |
Example
bash
curl "https://api.fastyvendor.com/api/v1/customers?limit=2" \
-H "Authorization: Bearer $FASTY_KEY"js
const res = await fetch('https://api.fastyvendor.com/api/v1/customers?limit=2', {
headers: {
Authorization: `Bearer ${process.env.FASTY_KEY}`,
},
})
const data = await res.json()python
import os, requests
res = requests.get(
"https://api.fastyvendor.com/api/v1/customers?limit=2",
headers={"Authorization": f"Bearer {os.environ['FASTY_KEY']}"},
)
data = res.json()lsl
llHTTPRequest(API + "/customers?limit=2",
[HTTP_CUSTOM_HEADER, "Authorization", "Bearer " + KEY,
HTTP_BODY_MAXLENGTH, 16384],
"");Response: 200 OK
json
{
"items": [
{
"key": "b2c3d4e5-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"name": "Nyxie Moonlight",
"spent": 13218,
"purchases": 14,
"first_purchase_at": "2023-12-08T02:40:17.000Z",
"last_purchase_at": "2026-01-06T00:51:11.000Z"
},
{
"key": "c3d4e5f6-7a8b-4c9d-8e1f-2a3b4c5d6e7f",
"name": "Kai Rivers",
"spent": 13189,
"purchases": 11,
"first_purchase_at": "2024-04-08T22:00:38.000Z",
"last_purchase_at": "2025-10-06T21:47:40.000Z"
}
],
"next_cursor": "13189~394a100a-8583-47b2-8eba-4087f3a1935b"
}Get a customer
GET
/customers/{key}Path
| Name | Type | Required | Description |
|---|---|---|---|
key | string | Yes | Avatar UUID (key). |
Example
bash
curl "https://api.fastyvendor.com/api/v1/customers/a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d" \
-H "Authorization: Bearer $FASTY_KEY"js
const res = await fetch('https://api.fastyvendor.com/api/v1/customers/a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d', {
headers: {
Authorization: `Bearer ${process.env.FASTY_KEY}`,
},
})
const data = await res.json()python
import os, requests
res = requests.get(
"https://api.fastyvendor.com/api/v1/customers/a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
headers={"Authorization": f"Bearer {os.environ['FASTY_KEY']}"},
)
data = res.json()lsl
llHTTPRequest(API + "/customers/a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
[HTTP_CUSTOM_HEADER, "Authorization", "Bearer " + KEY,
HTTP_BODY_MAXLENGTH, 16384],
"");Response: 200 OK
json
{
"key": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"name": "Luna Caelum",
"spent": 3382,
"purchases": 87,
"refunded": 5,
"gifts_sent": 3,
"gifts_received": 0,
"points": 21,
"first_purchase_at": "2026-10-05T18:24:26.949Z",
"last_purchase_at": "2026-11-04T18:02:55.895Z"
}The customer object
| Field | Type | Description |
|---|---|---|
key | string | Avatar UUID (key). |
name | string | The name. |
spent | integer | L$ spent in the store (refunds excluded). From -9,007,199,254,740,991 to 9,007,199,254,740,991. |
purchases | integer | How many purchases. From -9,007,199,254,740,991 to 9,007,199,254,740,991. |
first_purchase_at | string or null | ISO 8601 date and time (UTC), or null. |
last_purchase_at | string or null | ISO 8601 date and time (UTC), or null. |