Deliveries PRO
These routes deliver items through your hubs. They have their own limit, because each one wakes up a hub in Second Life: 60 per minute and 5,000 per day.
Send a product to an avatar
/products/{id}/sendDelivers the product for free through your hubs (a L$0 sale with origin "sent"), like Send to someone in the panel. The avatar does not need to be online now: the hub delivers when they are. With username, if Second Life does not answer right away the send is saved and goes out by itself (202 with pending: true).
Send avatar_key or username, never both. It answers 409 CONFLICT for a product with nothing to deliver, such as a gift card or a charge.
Always send an Idempotency-Key
Without one, a retry after a timeout delivers the product twice.
Path
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The id. |
Body
| Name | Type | Required | Description |
|---|---|---|---|
avatar_key | string | No | Avatar UUID (key). |
username | string | No | Second Life username. |
Example
curl -X POST "https://api.fastyvendor.com/api/v1/products/prd_mxbjm9xtpchmet/send" \
-H "Authorization: Bearer $FASTY_KEY" \
-H "Idempotency-Key: my-unique-id-123" \
-H "Content-Type: application/json" \
-d '{"avatar_key":"a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d"}'const res = await fetch('https://api.fastyvendor.com/api/v1/products/prd_mxbjm9xtpchmet/send', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.FASTY_KEY}`,
'Idempotency-Key': 'my-unique-id-123',
'Content-Type': 'application/json',
},
body: JSON.stringify({"avatar_key":"a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d"}),
})
const data = await res.json()import os, requests
res = requests.post(
"https://api.fastyvendor.com/api/v1/products/prd_mxbjm9xtpchmet/send",
headers={"Authorization": f"Bearer {os.environ['FASTY_KEY']}", "Idempotency-Key": "my-unique-id-123"},
json={"avatar_key":"a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d"},
)
data = res.json()llHTTPRequest(API + "/products/prd_mxbjm9xtpchmet/send",
[HTTP_METHOD, "POST",
HTTP_MIMETYPE, "application/json",
HTTP_CUSTOM_HEADER, "Authorization", "Bearer " + KEY,
HTTP_CUSTOM_HEADER, "Idempotency-Key", "my-unique-id-123"],
"{\"avatar_key\":\"a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d\"}");Response: 201 Created
{
"sale_id": "10f87f28-3705-420d-ae55-8087666e3540"
}Redeliver a sale
/sales/{id}/redeliverSends the same sale again, with no new sale created. It answers 409 CONFLICT when the sale can't be redelivered, such as one that was refunded.
Path
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The id. |
Example
curl -X POST "https://api.fastyvendor.com/api/v1/sales/8c8057c0-1ab2-d309-5287-0783afe849da/redeliver" \
-H "Authorization: Bearer $FASTY_KEY" \
-H "Idempotency-Key: my-unique-id-123"const res = await fetch('https://api.fastyvendor.com/api/v1/sales/8c8057c0-1ab2-d309-5287-0783afe849da/redeliver', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.FASTY_KEY}`,
'Idempotency-Key': 'my-unique-id-123',
},
})
const data = await res.json()import os, requests
res = requests.post(
"https://api.fastyvendor.com/api/v1/sales/8c8057c0-1ab2-d309-5287-0783afe849da/redeliver",
headers={"Authorization": f"Bearer {os.environ['FASTY_KEY']}", "Idempotency-Key": "my-unique-id-123"},
)
data = res.json()llHTTPRequest(API + "/sales/8c8057c0-1ab2-d309-5287-0783afe849da/redeliver",
[HTTP_METHOD, "POST",
HTTP_CUSTOM_HEADER, "Authorization", "Bearer " + KEY,
HTTP_CUSTOM_HEADER, "Idempotency-Key", "my-unique-id-123"],
"");Response: 200 OK
{
"delivery_id": "dl_85nkn4v9k64022"
}Redeliver everything an avatar owns
/customers/{key}/redeliverOnce per product (the latest purchase), up to 100 products. Gift cards and delivered gacha prizes are not redelivered.
Useful for a support button: "get everything I bought again".
Path
| Name | Type | Required | Description |
|---|---|---|---|
key | string | Yes | Avatar UUID (key). |
Example
curl -X POST "https://api.fastyvendor.com/api/v1/customers/a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d/redeliver" \
-H "Authorization: Bearer $FASTY_KEY" \
-H "Idempotency-Key: my-unique-id-123"const res = await fetch('https://api.fastyvendor.com/api/v1/customers/a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d/redeliver', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.FASTY_KEY}`,
'Idempotency-Key': 'my-unique-id-123',
},
})
const data = await res.json()import os, requests
res = requests.post(
"https://api.fastyvendor.com/api/v1/customers/a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d/redeliver",
headers={"Authorization": f"Bearer {os.environ['FASTY_KEY']}", "Idempotency-Key": "my-unique-id-123"},
)
data = res.json()llHTTPRequest(API + "/customers/a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d/redeliver",
[HTTP_METHOD, "POST",
HTTP_CUSTOM_HEADER, "Authorization", "Bearer " + KEY,
HTTP_CUSTOM_HEADER, "Idempotency-Key", "my-unique-id-123"],
"");Response: 200 OK
{
"count": 3
}