GET /v1/config/:projectId + local resolution) — it’s faster, works offline, and scales further.
Request
Headers
The project is identified by the API key, not the request body. Keys created for a specific project need no extra headers.
Body
There is no
defaults field: fallback values come from each parameter’s configured default in the config bundle (with environment overrides applied). Parameters not covered by any matching policy resolve to those defaults.
Response
200 OK
When a matched adaptive policy is configured to log context fields, the response also includes
metadata.filteredContext containing just those fields.
Each entry in metadata.layers describes one layer’s resolution:
Every successful resolution automatically records a decision event — you don’t need to send one through
POST /v1/events.
400 Bad request
X-Project-Id header.
401 Unauthorized
403 Forbidden
Returned when the key lacks thesdk:read scope, or when an X-Org-Id or X-Project-Id header doesn’t match the key:
404 Not found
503 Service unavailable
The config store is temporarily unavailable. Fall back to local resolution or defaults and retry shortly.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.