Home/Docs/4Based reference

4Based API Reference

Native access to 4based.com creator accounts through the CreatorAPI proxy. One key, the same shape as OnlyFans and Fansly. You never touch 4based's tokens, headers or its /user/{id}/... path layout · CreatorAPI resolves the creator's own id for you and signs every request server side. Native read and write · shorthand aliases for the common reads · self id resolved for you.

How every call works

All native 4based routes are reached through one pattern:

Text
{METHOD} https://api.creator-api.com/v1/{account}/native/{native_path}

{account} is the connected 4based account id. Auth header X-API-Key: <your key>. GET is read only; writes need a full scope key. Billing: read = 1 credit, write = 2 credits.

Shorthands · you do not need the raw paths

4based puts the creator's own id in almost every path (/user/{id}/...). You do not have to know it. Call the shorthand and CreatorAPI rewrites it to the real path and fills in the id. An explicit query param always wins over the default.

ShorthandWhat you getRewrites to
meThe creator's own 4based profile/user/{id}
subscribersSubscriber list/user/{id}/subscription
subscriber-countActive, cancelled and pending counts/user/{id}/subscription-count
tiersSubscription tiers and prices/user/{id}/subscription/configuration
chatsConversation list/user/{id}/chatsByList
feedThe creator's own feed/base
vaultMedia vault/user/{id}/vault
earningsEarnings stats/user/{id}/process/stats

So GET /v1/{account}/native/subscribers just works, the same way me works on OnlyFans and Fansly. There is no /me route on 4based itself; the shorthand me maps to the real profile route /user/{id}.

4based response notes

  • Self id: the id in /user/{id}/... is the creator's 4based ObjectId. CreatorAPI fills it in for every shorthand, so you never send it.
  • Default paging: chats and subscribers require a limit upstream (4based returns 400 without one), so CreatorAPI adds limit=50 when you omit it. Pass your own ?limit= and ?offset= to page.
  • Empty lists: an account with no subscribers, chats or earnings yet returns an empty body, not an error. That is the real 4based response, not a fault.
  • Amounts: money fields (tier price, earnings) come through exactly as 4based returns them, with the currency field alongside. Read the currency per row before you aggregate.

Account & profile

Get the creator profile

GET /v1/{account}/native/me · 1 credit(s)

Shell
curl -X GET \
  -H "X-API-Key: $CREATOR_API_KEY" \
  "https://api.creator-api.com/v1/{account}/native/me"
Python
import requests
r = requests.get(
    "https://api.creator-api.com/v1/{account}/native/me",
    headers={"X-API-Key": CREATOR_API_KEY},
)
print(r.json())
JavaScript
const r = await fetch(
  "https://api.creator-api.com/v1/{account}/native/me",
  { headers: { "X-API-Key": process.env.CREATOR_API_KEY } },
);
console.log(await r.json());

Subscribers

List subscribers

GET /v1/{account}/native/subscribers · 1 credit(s)

Shell
curl -X GET \
  -H "X-API-Key: $CREATOR_API_KEY" \
  "https://api.creator-api.com/v1/{account}/native/subscribers?limit=50&offset=0"
Python
import requests
r = requests.get(
    "https://api.creator-api.com/v1/{account}/native/subscribers",
    headers={"X-API-Key": CREATOR_API_KEY},
    params={"limit": 50, "offset": 0},
)
print(r.json())
JavaScript
const r = await fetch(
  "https://api.creator-api.com/v1/{account}/native/subscribers?limit=50&offset=0",
  { headers: { "X-API-Key": process.env.CREATOR_API_KEY } },
);
console.log(await r.json());

Subscriber count

GET /v1/{account}/native/subscriber-count · 1 credit(s)

Returns active, cancelled and pending cancelled subscription counts.

Shell
curl -X GET \
  -H "X-API-Key: $CREATOR_API_KEY" \
  "https://api.creator-api.com/v1/{account}/native/subscriber-count"

Subscription tiers

List tiers and prices

GET /v1/{account}/native/tiers · 1 credit(s)

Each tier carries its price, repeat_days, type, status and currency.

Shell
curl -X GET \
  -H "X-API-Key: $CREATOR_API_KEY" \
  "https://api.creator-api.com/v1/{account}/native/tiers"
Python
import requests
r = requests.get(
    "https://api.creator-api.com/v1/{account}/native/tiers",
    headers={"X-API-Key": CREATOR_API_KEY},
)
for tier in r.json():
    print(tier["type"], tier["price"], tier["currency"])

Messaging

List conversations

GET /v1/{account}/native/chats · 1 credit(s)

CreatorAPI adds limit=50 when you omit it. Page with ?limit= and ?offset=.

Shell
curl -X GET \
  -H "X-API-Key: $CREATOR_API_KEY" \
  "https://api.creator-api.com/v1/{account}/native/chats?limit=50"

Read messages in a chat

GET /v1/{account}/native/user/{selfId}/chat/{chatId}/message · 1 credit(s)

The messages route needs the chat id, so it takes the full path. Use the me response to get the creator's _id as {selfId}, and a chat id from chats.

Shell
curl -X GET \
  -H "X-API-Key: $CREATOR_API_KEY" \
  "https://api.creator-api.com/v1/{account}/native/user/{selfId}/chat/{chatId}/message?limit=50"

Send a message or PPV

POST /v1/{account}/native/user/{selfId}/chat/{chatId}/message · 2 credit(s) · full scope key

Body { "message": "hey", "file_stack_id": "...", "message_price": 500, "local_id": "..." }. Set message_price above zero for a pay per view message; leave it out for a free message.

Shell
curl -X POST \
  -H "X-API-Key: $CREATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message":"hey there"}' \
  "https://api.creator-api.com/v1/{account}/native/user/{selfId}/chat/{chatId}/message"

Feed & vault

Get the feed

GET /v1/{account}/native/feed · 1 credit(s)

Shell
curl -X GET \
  -H "X-API-Key: $CREATOR_API_KEY" \
  "https://api.creator-api.com/v1/{account}/native/feed?limit=50"

List the media vault

GET /v1/{account}/native/vault · 1 credit(s)

Shell
curl -X GET \
  -H "X-API-Key: $CREATOR_API_KEY" \
  "https://api.creator-api.com/v1/{account}/native/vault?limit=50"

Earnings

Earnings stats

GET /v1/{account}/native/earnings · 1 credit(s)

Optional init_from and init_to (YYYY-MM-DD) narrow the window. Amounts arrive as 4based returns them, with currency alongside.

Shell
curl -X GET \
  -H "X-API-Key: $CREATOR_API_KEY" \
  "https://api.creator-api.com/v1/{account}/native/earnings"
Python
import requests
r = requests.get(
    "https://api.creator-api.com/v1/{account}/native/earnings",
    headers={"X-API-Key": CREATOR_API_KEY},
    params={"init_from": "2026-01-01", "init_to": "2026-07-01"},
)
print(r.json())

Connect a 4based account

You connect a 4based creator to your key by importing a captured session. No proxy is required for 4based.

POST /v1/connect/import · full scope key

Body { "creator_id": "your_id", "platform": "4based", "auth": { "token": "...", "resource": "...", "account_id": "..." } }. The three auth fields come from a logged in 4based session. On success the account is verified and attached to your key.

Shell
curl -X POST \
  -H "X-API-Key: $CREATOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"creator_id":"my_creator","platform":"4based","auth":{"token":"...","resource":"...","account_id":"..."}}' \
  "https://api.creator-api.com/v1/connect/import"
No endpoint matches that filter.