Configuration
Methods for getting and setting system configuration.
Configuration Management
get_config
Get the current system configuration.
config = client.get_config()curl -X GET "${REFLEXIO_URL:-https://www.reflexio.ai}/api/get_config" \
-H "User-Agent: my-agent-reflexio" \
-H "Authorization: Bearer $REFLEXIO_API_KEY"Returns: ConfigResponse — the persisted shared Config fields plus
deployment-specific response overlays. Every shared nested type is linked in
the accordion below.
For Enterprise, ConfigResponse also carries the response-only
offline_tuner_config overlay. Its complete shape is { "enabled": false }.
The current release exposes this overlay only as disabled availability status.
Attempts to set enabled: true are unavailable: managed deployments reject the
request with replay_unsupported or config_reset_incomplete, and self-hosted
deployments return deployment_unsupported. No public offline-tuner generator,
optimizer, automatic application, or publication workflow is reachable.
Example:
config = client.get_config()
print(config.profile_extractor_config.extraction_definition_prompt)
print(config.user_playbook_extractor_config.extraction_definition_prompt)curl -X GET "${REFLEXIO_URL:-https://www.reflexio.ai}/api/get_config" \
-H "User-Agent: my-agent-reflexio" \
-H "Authorization: Bearer $REFLEXIO_API_KEY"set_config
Set the system configuration with replacement semantics. The Python client
accepts a Config instance or a dict that validates as the shared Config
model. It strips deployment-specific response overlays from Config model
instances, including objects returned by get_config. Dictionary inputs are
validated strictly and reject response overlays. A raw HTTP request is
normalized by the active server configurator, so Enterprise accepts its
normalized response overlays in a full replacement payload. Unknown fields are
rejected. Omitted fields that have model defaults are reset to those defaults,
so use update_config for partial changes.
Retrieval experiment fields are lifecycle-owned. A full save that omits them
preserves their current values, while attempts to change them through
set_config or update_config return 409. Use the
retrieval experiment methods instead.
response = client.set_config(config)curl -X POST "${REFLEXIO_URL:-https://www.reflexio.ai}/api/set_config" \
-H "User-Agent: my-agent-reflexio" \
-H "Authorization: Bearer $REFLEXIO_API_KEY" \
-H "Content-Type: application/json" \
--data @- <<'JSON'
{
"...": "updated full config object"
}
JSONProp
Type
Returns: dict with success and message keys.
The Python client's set_config method strips response-only deployment
overlays from Config model instances. A dictionary containing those overlays
is rejected by strict shared-Config validation. Treat
offline_tuner_config as read-only disabled availability status in the current
release; attempts to enable it are unavailable. See the
Config Schema for every shared
field, including the nested ProfileExtractorConfig,
UserPlaybookExtractorConfig, PlaybookAggregatorConfig,
DeduplicationConfig, AgentSuccessConfig, APIKeyConfig, and LLMConfig
shapes.
Partial changes: use update_config for targeted edits such as applying a preset.
response = client.update_config({
"extraction_preset": "long_form", # auto-sets window_size=25, stride_size=10
})curl -X POST "${REFLEXIO_URL:-https://www.reflexio.ai}/api/update_config" \
-H "User-Agent: my-agent-reflexio" \
-H "Authorization: Bearer $REFLEXIO_API_KEY" \
-H "Content-Type: application/json" \
--data @- <<'JSON'
{
"extraction_preset": "long_form"
}
JSONExample — full configuration:
config = client.get_config()
# Configure profile extraction
config.profile_extractor_config = {
"extraction_definition_prompt": "Extract user preferences and interests",
"context_prompt": "Analyzing customer conversations",
}
# Add playbook configuration with aggregation and deduplication
config.user_playbook_extractor_config = {
"extraction_definition_prompt": "Extract playbook entries about response quality",
"aggregation_config": {
"min_cluster_size": 3,
"clustering_similarity": 0.6,
},
"deduplication_config": {
"search_threshold": 0.4,
"search_top_k": 5,
},
}
response = client.set_config(config)
print(f"Config updated: {response['success']}")curl -X GET "${REFLEXIO_URL:-https://www.reflexio.ai}/api/get_config" \
-H "User-Agent: my-agent-reflexio" \
-H "Authorization: Bearer $REFLEXIO_API_KEY"
curl -X POST "${REFLEXIO_URL:-https://www.reflexio.ai}/api/set_config" \
-H "User-Agent: my-agent-reflexio" \
-H "Authorization: Bearer $REFLEXIO_API_KEY" \
-H "Content-Type: application/json" \
--data @- <<'JSON'
{
"...": "updated full config object"
}
JSONupdate_config
Apply a partial (PATCH-style) update to the org config. Unlike set_config, this does not round-trip the payload through Config(**...) client-side, so partial updates succeed without re-sending required fields like storage_config. The server fetches the existing config and shallow-merges atomically — there is no client-side read-modify-write race.
Nested objects (e.g. storage_config, llm_config) are replaced wholesale; deep merging is intentionally not supported. Raises TypeError if the argument is not a dict.
response = client.update_config({"shadow_mode_enabled": True})curl -X POST "${REFLEXIO_URL:-https://www.reflexio.ai}/api/update_config" \
-H "User-Agent: my-agent-reflexio" \
-H "Authorization: Bearer $REFLEXIO_API_KEY" \
-H "Content-Type: application/json" \
--data @- <<'JSON'
{
"shadow_mode_enabled": true
}
JSONProp
Type
Returns: dict with success and msg keys.
invalidate_cache
Explicitly evict the server-side per-org Reflexio cache entry. Useful when the running config has been mutated through a channel the server can't observe (sibling-replica writes, direct DB updates, hand-edited config files). Most cases are handled automatically; this is the manual escape hatch.
Cross-org invalidation is not supported — the endpoint only ever invalidates the caller's own org.
response = client.invalidate_cache()curl -X POST "${REFLEXIO_URL:-https://www.reflexio.ai}/api/admin/cache/invalidate" \
-H "User-Agent: my-agent-reflexio" \
-H "Authorization: Bearer $REFLEXIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{}'Prop
Type
Returns: dict {"invalidated": bool, "org_id": str}. The invalidated flag is False when nothing was cached for the org (still a successful no-op).
Identity & Storage Routing
Two read-only endpoints expose information about the organization and storage backing the current API key. Hosted Enterprise users commonly use them to verify where a key is routed.
whoami
Return the server's view of the caller's org and storage routing. The response is masked — it never contains raw credentials, so it is safe to print or include in bug reports.
identity = client.whoami()
print(identity.org_id, identity.storage_type, identity.storage_label)curl -X GET "${REFLEXIO_URL:-https://www.reflexio.ai}/api/whoami" \
-H "User-Agent: my-agent-reflexio" \
-H "Authorization: Bearer $REFLEXIO_API_KEY"The reflexio status whoami CLI command wraps this method and prints a formatted summary.
get_my_config
Return the raw storage credentials for the caller's org. Used by reflexio config pull / config storage to let users move per-org server-side config to a fresh machine.
my_config = client.get_my_config()
if my_config.success:
print(my_config.storage_type)
# my_config.storage_config is a dict containing raw credentialscurl -X GET "${REFLEXIO_URL:-https://www.reflexio.ai}/api/my_config" \
-H "User-Agent: my-agent-reflexio" \
-H "Authorization: Bearer $REFLEXIO_API_KEY"Unlike whoami, this response does contain raw credentials. Do not log or print the full response. Treat it like any other secret material.