Open the panel

Keys and Permissions PRO ​

Every request carries a key that says which store it is for and what it may do.

Create a key ​

  1. In the panel, open Store settings → API and click New key. Only the store owner can create keys.

  2. Give it a name you'll recognize later, like My card game.

  3. Choose what the key can do. A new key can only read. Add only what this project needs: you can change it later without replacing the key.

  4. Copy the key now. It starts with fsk_ and is shown only once. Lost it? Revoke it and create another.

A store can have up to 5 active keys. For each one, the panel shows its last 4 characters, what it can do, when it was last used and how many requests it made today.

Send the key ​

Put it in the Authorization header of every request:

Authorization: Bearer fsk_…

To check a key, call GET /me: it answers with the store, the permissions and today's usage.

What a key can do ​

Each area can be View or View and change. "View and change" includes "View".

In the panelScopeWhat it opens
Products and groupsproducts:read · products:writeProducts, groups, prices, stock, pausing
Salessales:readSales, with the same details webhooks send
Customers and purchasescustomers:readCustomers and did this avatar buy it?
Deliveriesdeliveries:writeSend a product, redeliver a sale
Pointspoints:read · points:writeBalance, history, give or take points
Gift cardsgift_cards:read · gift_cards:writeList, give, adjust and cancel
Couponscoupons:read · coupons:writeList, create and change
Promotionsdiscounts:read · discounts:writeList, create and end
Vendors and hubsvendors:read · vendors:writeList them, change what a vendor sells
Reportsreports:readThe sales summary

Each route in the reference shows the scope it needs. A key without it gets 403 MISSING_SCOPE, and the message names the scope:

json
{
  "error": {
    "code": "MISSING_SCOPE",
    "message": "This key does not have the products:write scope. The store owner can add it in Settings → API.",
    "request_id": "req_tj71gk45m4cs98"
  }
}

One key per project

Give each game or site its own key, with only what it needs. If one leaks, you revoke that key and everything else keeps working.

Keep the key secret ​

Anyone holding a key can do what it allows.

Where your code runsWhere the key goes
Your server or botIn an environment variable, never in the code or in a Git repository.
Second LifeIn a script set to no-copy and no-modify, in an object only you own. Never in a notecard or in an object description.
A web pageNowhere. The API refuses requests from browsers on purpose, because anyone could read the key in the page source. Call it from your server instead.

Selling an object that uses the API? Don't put your key inside it. Run a small server of your own, or let the object ask a script of yours that stays in your store.

Think a key leaked? Revoke it in Store settings → API. It stops working right away. Then create a new one.

When Pro ends ​

Your storeThe API
ProEverything the key allows.
Pro expiredReading keeps working, so scripts that check purchases in your games don't break. Changes answer 403 PRO_REQUIRED until you renew. You can still revoke keys.
BasicNo keys.
SuspendedReading only. Changes answer 403 STORE_SUSPENDED.

GET /me tells you where you stand: access is full or read_only.