GamebeastDocs
Dashboard
SDK V2Bootstrap

Poll configuration and experiment state

GET
/sdk/v2/status

The polling companion to GET /sdk/v2/bootstrap: the same payload without the configuration documents. Poll it on the cadence in polling — no faster than intervalSeconds, spread by jitterRatio — sending back the last hash you saw. A 304 means nothing changed. A 200 is the new snapshot: compare each configuration's hash against what you hold and refetch only those that moved. Every response carries a hash over its content, also sent as the ETag. Send it back as If-None-Match (or ?hash=) and an unchanged snapshot answers 304 with no body.

Authorization

sdkApiKey
authorization<token>

SDK (public) key, prefixed gb_pk_ (older keys: sdk_). Send it as the authorization header value. Scoped to one project, so it is safe to ship in a game build.

In: header

Query Parameters

hash?string
Length1 <= length

Header Parameters

environment?string

Environment alias. Defaults to development when omitted; studio is accepted as a synonym for it. Any alias outside the calling key's environment scope is rejected with 403.

Length1 <= length

Value in

  • "production"
  • "development"
project-id?integer
Range0 < value <= 9007199254740991
server-id?string

The calling server's instance id (Roblox: game.JobId). Scopes the per-server rate limit; without it, every server behind one egress IP shares a single bucket.

Length1 <= length <= 128

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/sdk/v2/status"
{  "hash": "string",  "configurations": [    {      "id": 0,      "name": "string",      "alias": "string",      "hash": "string"    }  ],  "primaryConfigurationId": 0,  "experiments": {    "user": [      {        "id": 0,        "name": "string",        "unitType": "user",        "assignmentMode": "weightedHash",        "baseConfigurationId": 0,        "autoAssignment": true,        "permanentEnrollment": true,        "requiredProperties": [          "string"        ],        "startsAt": "2019-08-24T14:15:22Z",        "endsAt": "2019-08-24T14:15:22Z",        "groups": [          {            "id": 0,            "label": "string",            "weight": 0,            "ordinal": 0          }        ]      }    ],    "server": [      {        "id": 0,        "name": "string",        "unitType": "user",        "assignmentMode": "weightedHash",        "baseConfigurationId": 0,        "autoAssignment": true,        "permanentEnrollment": true,        "requiredProperties": [          "string"        ],        "startsAt": "2019-08-24T14:15:22Z",        "endsAt": "2019-08-24T14:15:22Z",        "groups": [          {            "id": 0,            "label": "string",            "weight": 0,            "ordinal": 0          }        ]      }    ]  },  "requiredProperties": [    "string"  ],  "polling": {    "intervalSeconds": 1,    "jitterRatio": 0  }}