DEVELOPER DOCS

REST API

Workspace Settings

On this page

Three independent toggles. Each is a GET + PATCH pair; the PATCH body carries exactly one field.

SettingRead roleWrite roleDefault
capture-textvieweradminfalse
broaden-sourcesvieweradminfalse
cost-providervieweradminprovider default

Capture text

HTTP
GET   /v1/observ/orgs/{org}/workspaces/{ws}/settings/capture-text
PATCH /v1/observ/orgs/{org}/workspaces/{ws}/settings/capture-text

Controls whether prompt and completion text is stored, as opposed to metrics and metadata only.

Privacy control — fail-closed. This defaults to false. While it is off, the SDK does not send text bodies at all, so no text is stored. Turn it on only when your data-handling policy permits storing prompt content, and pair it with redaction rules. The SDK reads this flag at init() via GET /v1/workspaces/{ws}/sdk-config and fails closed if the lookup fails.

PATCH request body — _CaptureTextBody

FieldTypeRequiredDescription
capture_textboolean✅Enable or disable text capture

Examples

cur = evigauge.get("/v1/observ/orgs/{org}/workspaces/{ws}/settings/capture-text")
print("capture_text:", cur["capture_text"])

evigauge.patch("/v1/observ/orgs/{org}/workspaces/{ws}/settings/capture-text",
               json={"capture_text": True})

Changing this affects new spans only. Text already stored is unaffected; to remove it, use retention.


Broaden sources

HTTP
GET   /v1/observ/orgs/{org}/workspaces/{ws}/settings/broaden-sources
PATCH /v1/observ/orgs/{org}/workspaces/{ws}/settings/broaden-sources

Allows the sources engine to verify claims against the open web, not only your internal knowledge base.

PATCH request body — _BroadenSourcesBody

FieldTypeRequiredDescription
broaden_sourcesboolean✅Enable open-web verification

Examples

evigauge.patch("/v1/observ/orgs/{org}/workspaces/{ws}/settings/broaden-sources",
               json={"broaden_sources": True})

Open-web verification requires a search credential — see search credentials. Without one, the engine stays in closed-KB mode regardless of this flag.


Cost provider

HTTP
GET   /v1/observ/orgs/{org}/workspaces/{ws}/settings/cost-provider
PATCH /v1/observ/orgs/{org}/workspaces/{ws}/settings/cost-provider

Selects the pricing table used to convert token counts into dollars.

PATCH request body — _CostProviderBody

FieldTypeRequiredDescription
cost_providerstring✅Provider key for the pricing table. Free-form, not an enum — the value is lower-cased and truncated to 64 characters. Send "" to clear it and fall back to the default.

The GET returns both what you set and what is actually in force:

JSON
{ "cost_provider": "anthropic", "effective_provider": "anthropic" }

effective_provider is the resolved value — your cost_provider when set, otherwise the deployment default (openrouter unless OPEXIA_DEFAULT_COST_PROVIDER overrides it). Read effective_provider, not cost_provider, when displaying what pricing is in use; cost_provider is "" on a workspace that has never set one.

Examples

cur = evigauge.get("/v1/observ/orgs/{org}/workspaces/{ws}/settings/cost-provider")
print("in force:", cur["effective_provider"])

evigauge.patch("/v1/observ/orgs/{org}/workspaces/{ws}/settings/cost-provider",
               json={"cost_provider": "anthropic"})

# Clear the override and fall back to the deployment default.
evigauge.patch("/v1/observ/orgs/{org}/workspaces/{ws}/settings/cost-provider",
               json={"cost_provider": ""})

This changes how future costs are computed. Historical figures keep the pricing version in force when they were calculated, so past reports stay stable.