Developer API

Run your panel on autopilot

One HTTP endpoint gives you our full catalogue, live order status and your balance. Wire it into your own store, bot or reseller panel and stop placing orders by hand.

REST API JSON output 99.9% uptime
Sample request
curl -X POST https://famestate.com/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=add" \
  -d "service=1" \
  -d "link=https://example.com/yourpost" \
  -d "quantity=1000"
Base URL
https://famestate.com/api/v2
Method
POST
Response
JSON
API key

Why build on the API

Everything the panel does in the browser, your code can do too, without you sitting in front of it.

Hands-off ordering A customer checks out on your site, your script fires one request, the order is already running. No copy-paste, no night shift.
Resell under your own brand Pull our catalogue, apply your own markup and show it as your own service list. Your buyers never see where it is fulfilled.
Batch work in one call Check many orders or refills in a single request instead of hammering the endpoint one ID at a time.
Fits whatever you already run Plain form-encoded POST with a JSON reply. PHP, Node, Python, a Telegram bot or a no-code tool: if it can make a request, it works.
Know the state, always Poll status to read start count, remaining quantity and charge, so your dashboard shows the same numbers ours does.
Built to keep up The same infrastructure serves the panel itself, so your traffic rides on capacity that is already proven under load.

API reference

Every call is a POST to https://famestate.com/api/v2 with key and action included. Click an endpoint to open it.

Parameters

KeyValue
keyrequiredYour API key
actionrequiredservices

Example response

JSON
[
  {
    "service": 1,
    "name": "Instagram Followers - Real",
    "type": "Default",
    "category": "Instagram",
    "rate": "0.90",
    "min": "50",
    "max": "100000",
    "refill": true,
    "cancel": true
  }
]

Parameters

KeyValue
keyrequiredYour API key
actionrequiredadd
servicerequiredService ID from the catalogue
linkrequiredTarget profile, post or video URL
quantityrequiredAmount to deliver, within the service min and max
runsoptionalNumber of drip-feed runs
intervaloptionalMinutes between drip-feed runs

Example response

JSON
{
  "order": 84512
}

Parameters

KeyValue
keyrequiredYour API key
actionrequiredstatus
orderrequiredOrder ID returned by add

Example response

JSON
{
  "charge": "0.90",
  "start_count": "2450",
  "status": "In progress",
  "remains": "320",
  "currency": "USD"
}

Parameters

KeyValue
keyrequiredYour API key
actionrequiredstatus
ordersrequiredOrder IDs separated by commas, e.g. 84512,84513

Example response

JSON
{
  "84512": {
    "charge": "0.90",
    "start_count": "2450",
    "status": "Completed",
    "remains": "0",
    "currency": "USD"
  },
  "84513": {
    "error": "Incorrect order ID"
  }
}

Parameters

KeyValue
keyrequiredYour API key
actionrequiredrefill
orderrequiredOrder ID to refill

Example response

JSON
{
  "refill": "1901"
}

Parameters

KeyValue
keyrequiredYour API key
actionrequiredrefill
ordersrequiredOrder IDs separated by commas

Example response

JSON
[
  {
    "order": 84512,
    "refill": 1901
  },
  {
    "order": 84513,
    "refill": {
      "error": "Incorrect order ID"
    }
  }
]

Parameters

KeyValue
keyrequiredYour API key
actionrequiredrefill_status
refillrequiredRefill ID returned by refill

Example response

JSON
{
  "status": "Completed"
}

Parameters

KeyValue
keyrequiredYour API key
actionrequiredrefill_status
refillsrequiredRefill IDs separated by commas

Example response

JSON
[
  {
    "refill": 1901,
    "status": "Completed"
  },
  {
    "refill": 1902,
    "status": {
      "error": "Refill not found"
    }
  }
]

Parameters

KeyValue
keyrequiredYour API key
actionrequiredcancel
ordersrequiredOrder IDs separated by commas

Example response

JSON
[
  {
    "order": 84512,
    "cancel": 1
  },
  {
    "order": 84513,
    "cancel": {
      "error": "Incorrect order ID"
    }
  }
]

Parameters

KeyValue
keyrequiredYour API key
actionrequiredbalance

Example response

JSON
{
  "balance": "148.72",
  "currency": "USD"
}

When something goes wrong

A failed call still answers with a JSON body carrying an error field, so read the body rather than relying on the status code alone.

MessageWhat it means and what to do
Invalid API keyThe key was missing, mistyped or regenerated. Copy it again from the Account page.
Invalid actionThe action value is not one of the ten listed above. Watch the spelling and the underscores.
Not enough fundsThe order costs more than your balance. Top up, then send the call again.
Incorrect service IDThat service no longer exists or was renumbered. Refresh your cached catalogue with services.
Incorrect order IDThe order is not on your account. Order IDs belong to an account, they are not global.
Incorrect linkThe URL does not match what the service expects: a profile link where a post link is needed, or the wrong network.
Quantity out of rangeBelow the service minimum or above its maximum. Both numbers come back in services.
Refill not availableThis service has no refill guarantee, or the guarantee window has already closed.

Questions

On the Account page. It is tied to your account, so anything ordered with it is charged to your balance.
Normal use is not throttled, but tight polling loops can be. Check status on a timer of a minute or more, and use multi_status to fold many orders into one call instead of firing one request per order.
Anyone holding it can spend your balance. Keep it on your server, never in browser JavaScript or a mobile app, and regenerate it from the Account page the moment you suspect it is out.
Only while it is still pending, and only where the service allows it. Once delivery has started the cancel call answers with an error and the order runs to completion.
No. Cache it on your side and refresh a few times a day. Prices, limits and availability do change, so a cache that is never refreshed will eventually place orders that fail.
Any of them. The request is an ordinary form-encoded POST, so cURL in PHP, requests in Python, fetch on a Node server or a plain HTTP node in an automation tool all work the same way.
The rate returned by services is the price your account pays, with any discount already applied to it. Read it from the response rather than hardcoding numbers.

Ready to connect?

Grab your key, paste the sample request above, and your first automated order can be running in a couple of minutes.

Get my API key