Getting your key

DataCo licenses are issued through Discord rather than a web dashboard. This keeps support and key delivery in one place — the same server you'd go to if something breaks.

1. Join the Discord

Use the invite link on the pricing page to join the server.

2. Pick a plan

In the #plans channel, select the role matching the plan you want (Hobby, Studio, or Studio Pro). This is what the bot checks before issuing a key.

3. Run /getkey

Type the /getkey slash command in any channel where bot commands are allowed. The DataCo bot will reply privately with your API key.

you
/getkey
DataCo Bot — Here's your key for the Studio plan:
bks_live_••••••••••••••••
Keep this private — treat it like a password.
Keep your key private. Don't commit it to a public GitHub repo or paste it into a public model file. If a key leaks, regenerate it with /getkey reset in Discord.

Installing the module

DataCo ships as a single ModuleScript. Place it somewhere shared, like ReplicatedStorage, so both server scripts can require it.

  1. Download DataCo.rbxm from the #downloads channel in Discord.
  2. Drag it into ReplicatedStorage in Studio's Explorer.
  3. Require it from any server-side script.

Adding your key

Set your key once, before your game requests any data. The recommended place is a server Script that runs on startup, not a LocalScript — your key should never reach the client.

ServerScriptService/Init.lua
local DataCo = require(game.ReplicatedStorage.DataCo)

DataCo.SetKey("bks_live_your_key_here")

For a published game, store the key in Studio's ServerStorage or as a secret, rather than typing it directly into a script you might share.

GetStore

A store is a named collection, similar to DataStoreService:GetDataStore().

example.lua
local store = DataCo.GetStore("PlayerSaves")

Reading data

Get checks the local cache before making a network call.

example.lua
local data = store:Get(player.UserId)

if data then
    print("Coins:", data.coins)
else
    print("No save found, using defaults")
end

Writing data

Set queues the write and retries automatically if Roblox throttles the request.

example.lua
store:Set(player.UserId, {
    coins = 250,
    level = 4,
    lastSeen = os.time(),
})

Autosave

Enable a save interval once, and DataCo handles saving every tracked player on a timer in addition to on leave.

example.lua
store:EnableAutosave(120) -- seconds

API reference

MethodDescription
SetKey(key)Authenticates the module with your license key. Call once on server start.
GetStore(name)Returns a store object for the given name, creating it if needed.
store:Get(key)Returns cached or stored data for a key, or nil if none exists.
store:Set(key, value)Queues a write for the given key. Retries automatically on throttle.
store:Remove(key)Deletes stored data for a key.
store:EnableAutosave(seconds)Saves all tracked players on the given interval.
store:GetVersions(key, limit)Returns recent saved versions for a key, newest first.

Error codes

CodeMeaning
BKS_AUTHKey missing or invalid. Run /getkey again in Discord to check your key.
BKS_PLAN_LIMITYou've hit your plan's saved-key limit. Upgrade on the pricing page or remove unused keys.
BKS_LOCKEDThat key is session-locked by another server. Usually resolves within a few seconds.
BKS_THROTTLEDInformational only — the write was queued and will retry automatically.
Still stuck? Ask in the #support channel in Discord with your error code and we'll take a look.