GamebeastDocs
Dashboard
SDK V2Bootstrap

Bootstrap configurations and experiments

GET
/sdk/v2/bootstrap

Everything an SDK needs on load, in one call: every live configuration for the authenticated environment (id, name, alias, content hash and the configuration document itself), which of them is primary, every active experiment split by unit type, and how often to poll GET /sdk/v2/status. Experiments are returned without their changesets — use GET /sdk/v2/experiments/active when changeset operations are needed for local merging. Private experiments are returned to secret keys only. 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/bootstrap"
{  "hash": "string",  "configurations": [    {      "id": 0,      "name": "string",      "alias": "string",      "hash": "string",      "configuration": null,      "privacy": [        [          "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  }}