Open the panel

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 ​

POST/products/{id}/send
Scope deliveries:writeLimit delivery (60 per minute)

Delivers 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

NameTypeRequiredDescription
idstringYesThe id.

Body

NameTypeRequiredDescription
avatar_keystringNoAvatar UUID (key).
usernamestringNoSecond Life username.

Example

bash
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"}'
js
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()
python
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()
lsl
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

json
{
  "sale_id": "10f87f28-3705-420d-ae55-8087666e3540"
}

Redeliver a sale ​

POST/sales/{id}/redeliver
Scope deliveries:writeLimit delivery (60 per minute)

Sends 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

NameTypeRequiredDescription
idstringYesThe id.

Example

bash
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"
js
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()
python
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()
lsl
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

json
{
  "delivery_id": "dl_85nkn4v9k64022"
}

Redeliver everything an avatar owns ​

POST/customers/{key}/redeliver
Scope deliveries:writeLimit delivery (60 per minute)

Once 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

NameTypeRequiredDescription
keystringYesAvatar UUID (key).

Example

bash
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"
js
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()
python
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()
lsl
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

json
{
  "count": 3
}