GET /v1/config/:projectId + local resolution) — it’s faster, works offline, and scales further.
Request
Headers
| Header | Required | Description |
|---|---|---|
Authorization | yes | Bearer traffical_sk_... (requires sdk:read scope) |
Content-Type | yes | application/json |
Body
| Field | Type | Required | Description |
|---|---|---|---|
projectId | string | yes | Project to resolve against |
env | string | yes | Environment |
context | object | yes | Must include the unit key (e.g. userId) |
parameters | string[] | yes | Parameters to resolve |
defaults | object | no | Fallback values for parameters not covered by any policy |
Response
200 OK
| Field | Type | Description |
|---|---|---|
decisionId | string | Use this on subsequent track events for attribution |
assignments | object | Resolved parameter values keyed by parameter key |
decisions | Decision[] | Per-layer assignments (layerId, policyId, allocationName, bucket) |
bundleVersion | string | Version timestamp of the bundle used for this resolution |
401 Unauthorized
404 Not found
When to use this
- Mobile clients where caching a full bundle isn’t reasonable (very limited memory, or very rare resolutions).
- Server-to-server systems where you want fresh state without managing bundle refresh in your own code.
- Per-entity adaptive policies where bundle-mode freshness isn’t sufficient — though
POST /v1/decide/:policyIdis usually the right answer for that specific case.
GET /v1/config/:projectId and resolve locally.