Deprecations and Migrations
Use this page to migrate old integrations to the current API contract.
Prerequisites
- Inventory of current payloads used by your app
- Access to SDK wrapper or API client code paths
- API reference available for schema checks
Minimal Setup
- Replace deprecated fields with current equivalents.
- Re-run end-to-end tests with baseline retrieval settings.
- Update templates and SDK wrappers to emit only current fields.
Field Migrations
Search Ranking (policy → reranking_config) 🚨 BREAKING CHANGE
Effective: API v1.9.0+ (June 2026)
The search endpoint now uses reranking_config instead of policy.vector for controlling result ranking.
Deprecated Field on Search:
| Old Field (Deprecated) | New Field | Notes |
|---|---|---|
policy.vector | reranking_config | Simplified reranking configuration |
policy.vector.mode | reranking_config.reranking_provider | fast → "none", enhanced → "papr_enhanced", max → "papr_max" |
rank_results | reranking_config | Use reranking_config instead |
holographic_config | reranking_config | Use reranking_provider: "papr_enhanced" or "papr_max" |
Reranking Providers:
none- Cosine-only (no reranking)cohere- Cohere rerank-v3.5 (default)openai- OpenAI gpt-5-nano or gpt-5-minipapr_enhanced- Graph rerank (replaces oldmode: "enhanced")papr_max- Graph rerank + CE + EGR (replaces oldmode: "max")
Migration Examples:
Before (Deprecated):
# Search with policy.vector - OLD WAY
results = client.memory.search(
query="How to sort a list?",
policy={
"vector": {
"mode": "enhanced", # DEPRECATED
"domain_id": "cosqa",
"signal_thresholds": {
"language": 0.9
}
}
}
)After (Current):
# Search with reranking_config - NEW WAY
results = client.memory.search(
query="How to sort a list?",
reranking_config={
"reranking_provider": "papr_enhanced", # or "papr_max"
"domain_id": "cosqa",
"signal_thresholds": {
"language": 0.9
}
}
)Mode Mapping:
Old policy.vector.mode | New reranking_provider |
|---|---|
"fast" | "none" (cosine-only) |
"enhanced" | "papr_enhanced" |
"max" | "papr_max" |
| Not specified | "cohere" (new default) |
Graph-Aware Embeddings (Holographic → Graph API) 🚨 BREAKING CHANGE
Effective: API v1.8.0+ (May 2026)
All holographic-related fields and endpoints have been deprecated and replaced with a unified policy structure using graph transform APIs.
Deprecated Fields on Add/Update/Document:
| Old Field (Deprecated) | New Field | Notes |
|---|---|---|
enable_holographic | policy.transform_embedding.mode | Use "auto" instead of true, "none" instead of false |
frequency_schema_id | policy.transform_embedding.domain_id | Renamed for consistency |
Deprecated Field on Search:
| Old Field (Deprecated) | New Field | Notes |
|---|---|---|
holographic_config | policy.vector | New structure with mode, domain_id, signal_thresholds |
holographic_config.enabled | policy.vector.mode | Use "enhanced" or "max" instead of true |
holographic_config.frequency_schema_id | policy.vector.domain_id | Renamed for consistency |
holographic_config.frequency_filters | policy.vector.signal_thresholds | Renamed for clarity |
Deprecated Endpoints:
| Old Endpoint (Deprecated) | New Endpoint | Status |
|---|---|---|
POST /v1/holographic/transform | POST /v1/graph/transform | Deprecated |
POST /v1/holographic/transform/batch | Use /v1/graph/transform with batch | Deprecated |
POST /v1/holographic/rerank | POST /v1/graph/rerank | Deprecated |
POST /v1/holographic/metadata | Part of /v1/graph/transform response | Deprecated |
GET /v1/holographic/domains | GET /v1/graph/domains | Deprecated |
POST /v1/holographic/domains | POST /v1/graph/domains | Deprecated |
Migration Examples:
Before (Deprecated):
# Add memory - OLD WAY
memory = client.memory.add(
content="Python list sorting example",
enable_holographic=True,
frequency_schema_id="cosqa"
)
# Search - OLD WAY
results = client.memory.search(
query="How to sort a list?",
holographic_config={
"enabled": True,
"frequency_schema_id": "cosqa",
"frequency_filters": {
"language": 0.9
}
}
)After (Current):
# Add memory - NEW WAY
memory = client.memory.add(
content="Python list sorting example",
policy={
"transform_embedding": {
"mode": "auto",
"domain_id": "cosqa"
}
}
)
# Search - NEW WAY (v1.9.0+)
results = client.memory.search(
query="How to sort a list?",
reranking_config={
"reranking_provider": "papr_enhanced", # or "papr_max"
"domain_id": "cosqa",
"signal_thresholds": {
"language": 0.9
}
}
)Domain Registration Migration:
Before (Deprecated):
POST /v1/holographic/domains
{
"name": "acme:legal:1.0.0",
"description": "Legal contracts",
"fields": [...]
}After (Current):
POST /v1/graph/domains
{
"domain_id": "acme:legal:1.0.0",
"name": "Legal Contracts",
"description": "Legal contract analysis",
"signals": [...]
}Key changes:
name→domain_id(the unique identifier)nameis now a human-readable display namefields→signals
Search Limit Increase:
The maximum number of results in /v1/memory/search has been increased from 50 to 200. Update any hardcoded limits or validation logic.
# OLD: max 50 results
results = client.memory.search(query="...", limit=50)
# NEW: max 200 results
results = client.memory.search(query="...", limit=200)Graph Configuration
- Deprecated:
graph_generation - Current:
memory_policy
Use memory_policy for:
- graph mode (
auto,manual) - extraction constraints
- governance (
acl,consent,risk)
User Identity
- Deprecated:
user_id(internal) - Current:
external_user_id(application identity)
Recommended: pass your app-level ID as external_user_id.
Search Ranking Toggle
- Deprecated:
rank_results - Current:
reranking_configwhere applicable
For most integrations, prioritize:
- better query quality
enable_agentic_graph=true- tuned
max_memories/max_nodes
Legacy Relationship Fields
- Deprecated or legacy patterns:
relationships_json-first workflows - Current: model graph behavior via
memory_policyandlink_towhere possible
Migration Checklist
For Search Ranking (policy → reranking_config): ⚡ Latest
- Update Search calls: Replace
policy.vectorwithreranking_config - Update provider names:
mode: "enhanced"→reranking_provider: "papr_enhanced" - Update mode mapping: See table above for complete mapping
- Remove deprecated fields: Remove
rank_resultsandholographic_configusage - Test reranking: Verify results with new provider names
For Graph-Aware Embeddings (Holographic → Graph):
- Update Add/Update calls: Replace
enable_holographic+frequency_schema_idwithpolicy.transform_embedding - Update Search calls:
ReplaceUseholographic_configwithpolicy.vectorreranking_config(see above) - Update domain registration: Use
POST /v1/graph/domainsinstead of/v1/holographic/domains - Update field names: Change
frequency_schema_idtodomain_id,fieldstosignals - Update API URLs: Replace
/v1/holographic/*with/v1/graph/*for standalone transforms/reranks - Test increased limits: Verify your app handles up to 200 search results
General Migrations:
- Replace deprecated request fields in all write/search calls.
- Add explicit tenant scope (
organization_id,namespace_id) where needed. - Add explicit policy controls (
memory_policy) for sensitive data. - Re-test retrieval with agentic graph enabled.
- Update examples and SDK wrappers to emit only current fields.
Safe Baseline for New Integrations
{
"external_user_id": "user_123",
"memory_policy": {
"mode": "auto",
"consent": "implicit",
"risk": "none"
}
}Then add manual mode and ACL specificity as your use case matures.
Validation Checklist
Search Ranking (Latest):
- ✅ No references to
policy.vectorin search calls - ✅ Using
reranking_configwith correct provider names - ✅ No references to deprecated
rank_results - ✅ No references to deprecated
holographic_configin search
Graph-Aware Embeddings:
- ✅ No references to
enable_holographicin add/update calls - ✅ No references to
frequency_schema_id(usedomain_idinstead) - ✅ All
/v1/holographic/*endpoints replaced with/v1/graph/* - ✅ Domain registrations use
domain_idandsignalsfields - ✅ Search limits updated to support up to 200 results
General:
- ✅ Deprecated fields are removed from write and search payloads
- ✅ Current fields (
external_user_id,memory_policy) are consistently used - ✅ Integration tests pass using current schema contracts
Troubleshooting
If migration breaks existing behavior, compare payload diffs against Request Templates and validate with Error Playbook.