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.
bks_live_••••••••••••••••
Keep this private — treat it like a password.
/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.
- Download
DataCo.rbxmfrom the#downloadschannel in Discord. - Drag it into
ReplicatedStoragein Studio's Explorer. - 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.
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().
local store = DataCo.GetStore("PlayerSaves")
Reading data
Get checks the local cache before making a network call.
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.
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.
store:EnableAutosave(120) -- seconds
API reference
| Method | Description |
|---|---|
| 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
| Code | Meaning |
|---|---|
| BKS_AUTH | Key missing or invalid. Run /getkey again in Discord to check your key. |
| BKS_PLAN_LIMIT | You've hit your plan's saved-key limit. Upgrade on the pricing page or remove unused keys. |
| BKS_LOCKED | That key is session-locked by another server. Usually resolves within a few seconds. |
| BKS_THROTTLED | Informational only — the write was queued and will retry automatically. |
#support channel in Discord with your error code and we'll take a look.