Everything in the partner dashboard is available over HTTP with your API key. The base URL is https://flarestore.vip. All responses are JSON and carry success. Money is always an integer number of cents.

AUTHENTICATION

Your API key

Send your key as a bearer token on every request. You'll find it in your dashboard under API access. Keys look like fs_pk_....

# every request looks like this curl https://flarestore.vip/api/partner/me \ -H "Authorization: Bearer fs_pk_your_key_here"

Treat the key like a password — it can spend your balance. If it leaks, rotate it from the dashboard and the old key stops working immediately. The web dashboard uses a session cookie instead, so rotating a key never logs you out.

Rate limits: 120 GET and 60 POST per minute, with tighter limits on login and on slot redemption (30/min). Over the limit you get 429 — back off and retry.

ACCOUNT

Who am I

GET /api/partner/me API KEY OR SESSION

Your account: slug, display name, account type, balance and referral URL.

{ "success": true, "partner": { "slug": "yourname", "display_name": "Your Name", "account_type": "wholesale", "balance": 4250, "referral_url": "https://flarestore.vip/p/yourname" } }
POST /api/partner/me/api-key/rotate API KEY OR SESSION

Issue a new API key. The previous key stops working the instant this returns, so update your integration before calling it.

CATALOGUE

What you can sell, and for how much

GET /api/partner/me/catalog API KEY OR SESSION

Every plan enabled on your account with your resolved pricing. This is the endpoint to build your own storefront against — it already accounts for whichever pricing model your account runs on.

Wholesale accounts get your_price:

{ "account_type": "wholesale", "plans": [ { "plan_id": "standard", "name": "Standard", "your_price": 600, "orderable": true }, { "plan_id": "ios_6m", "name": "iOS 6M Protection", "your_price": 1200, "orderable": true } ] }

Affiliate accounts get customer_price and your_commission instead:

{ "account_type": "affiliate", "plans": [ { "plan_id": "standard", "name": "Standard", "customer_price": 900, "your_commission": 135 } ] }

orderable: false means the plan is listed but not currently redeemable — don't offer it to customers until it flips true.

REPORTING

Sales and earnings

GET /api/partner/me/stats API KEY OR SESSION

Totals plus a per-plan breakdown. Affiliates get commission earned, paid out and owing; wholesalers get total spend and current balance.

GET /api/partner/me/sales API KEY OR SESSION

Your orders, newest first. Takes ?limit= (1–200, default 50) and ?offset=. Customer email and payment details are never included.

GET /api/partner/me/payouts API KEY OR SESSION

Affiliate only. Payout history plus the balance currently owing to you.

WHOLESALE

Buying and redeeming slots

These endpoints are wholesale-only. On an affiliate account they return 403.

GET /api/partner/me/balance API KEY OR SESSION

Your current balance, in cents.

GET /api/partner/me/ledger API KEY OR SESSION

Every balance movement — top-ups, slot debits, refunds and adjustments — each with the balance that resulted.

POST /api/partner/me/orders API KEY OR SESSION

Redeem one slot. Charges your unit price, registers the device and starts provisioning.

curl -X POST https://flarestore.vip/api/partner/me/orders \ -H "Authorization: Bearer fs_pk_your_key_here" \ -H "Content-Type: application/json" \ -d '{"plan_id": "standard", "udid": "00008030-001A2B3C4D5E6F70"}'

Returns the order, what you were charged, your new balance, and an access token your customer uses to collect their certificate:

{ "success": true, "order_id": "A1B2C3D4", "charged": 600, "balance": 3650, "access_token": "...", "status_url": "https://flarestore.vip/api/order-status?token=..." }

Provisioning is asynchronous. Poll status_url or /me/orders/{order_id} until the certificate is ready. If provisioning can't start your balance is refunded automatically — you are never charged for a slot you didn't get.

GET /api/partner/me/orders/{order_id} API KEY OR SESSION

Status of one of your own orders, including device and provisioning state. Orders belonging to another partner return 404.

ERRORS

Status codes

CodeMeaningWhat to do
400Bad request — missing or malformed fieldCheck the body; the message names the problem
401No credentialsSend the Authorization header
402Insufficient balanceTop up; the message states the shortfall
403Invalid key, or wrong account type for the endpointCheck the key and your track
404Not found, or not yoursConfirm the ID belongs to your account
409Plan not currently redeemableRetry later or pick another plan
429Rate limitedBack off and retry
500Our faultYou were not charged. Retry, then tell us

Errors carry a human-readable detail — log it, it usually says exactly what's wrong.