Last updated

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

  1. Replace deprecated fields with current equivalents.
  2. Re-run end-to-end tests with baseline retrieval settings.
  3. Update templates and SDK wrappers to emit only current fields.

Field Migrations

Search Ranking (policyreranking_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.

Old Field (Deprecated)New FieldNotes
policy.vectorreranking_configSimplified reranking configuration
policy.vector.modereranking_config.reranking_providerfast"none", enhanced"papr_enhanced", max"papr_max"
rank_resultsreranking_configUse reranking_config instead
holographic_configreranking_configUse 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-mini
  • papr_enhanced - Graph rerank (replaces old mode: "enhanced")
  • papr_max - Graph rerank + CE + EGR (replaces old mode: "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.modeNew 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 FieldNotes
enable_holographicpolicy.transform_embedding.modeUse "auto" instead of true, "none" instead of false
frequency_schema_idpolicy.transform_embedding.domain_idRenamed for consistency

Deprecated Field on Search:

Old Field (Deprecated)New FieldNotes
holographic_configpolicy.vectorNew structure with mode, domain_id, signal_thresholds
holographic_config.enabledpolicy.vector.modeUse "enhanced" or "max" instead of true
holographic_config.frequency_schema_idpolicy.vector.domain_idRenamed for consistency
holographic_config.frequency_filterspolicy.vector.signal_thresholdsRenamed for clarity

Deprecated Endpoints:

Old Endpoint (Deprecated)New EndpointStatus
POST /v1/holographic/transformPOST /v1/graph/transformDeprecated
POST /v1/holographic/transform/batchUse /v1/graph/transform with batchDeprecated
POST /v1/holographic/rerankPOST /v1/graph/rerankDeprecated
POST /v1/holographic/metadataPart of /v1/graph/transform responseDeprecated
GET /v1/holographic/domainsGET /v1/graph/domainsDeprecated
POST /v1/holographic/domainsPOST /v1/graph/domainsDeprecated

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:

  • namedomain_id (the unique identifier)
  • name is now a human-readable display name
  • fieldssignals

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_config where 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_policy and link_to where possible

Migration Checklist

For Search Ranking (policy → reranking_config): ⚡ Latest

  1. Update Search calls: Replace policy.vector with reranking_config
  2. Update provider names: mode: "enhanced"reranking_provider: "papr_enhanced"
  3. Update mode mapping: See table above for complete mapping
  4. Remove deprecated fields: Remove rank_results and holographic_config usage
  5. Test reranking: Verify results with new provider names

For Graph-Aware Embeddings (Holographic → Graph):

  1. Update Add/Update calls: Replace enable_holographic + frequency_schema_id with policy.transform_embedding
  2. Update Search calls: Replace holographic_config with policy.vector Use reranking_config (see above)
  3. Update domain registration: Use POST /v1/graph/domains instead of /v1/holographic/domains
  4. Update field names: Change frequency_schema_id to domain_id, fields to signals
  5. Update API URLs: Replace /v1/holographic/* with /v1/graph/* for standalone transforms/reranks
  6. Test increased limits: Verify your app handles up to 200 search results

General Migrations:

  1. Replace deprecated request fields in all write/search calls.
  2. Add explicit tenant scope (organization_id, namespace_id) where needed.
  3. Add explicit policy controls (memory_policy) for sensitive data.
  4. Re-test retrieval with agentic graph enabled.
  5. 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.vector in search calls
  • ✅ Using reranking_config with correct provider names
  • ✅ No references to deprecated rank_results
  • ✅ No references to deprecated holographic_config in search

Graph-Aware Embeddings:

  • ✅ No references to enable_holographic in add/update calls
  • ✅ No references to frequency_schema_id (use domain_id instead)
  • ✅ All /v1/holographic/* endpoints replaced with /v1/graph/*
  • ✅ Domain registrations use domain_id and signals fields
  • ✅ 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.