Skip to main content
Store an artifact in the memory store. Artifacts are immutable and lossless — the raw payload is preserved exactly as submitted.

Request

POST /v1/ingest
workspace_id
string
required
Workspace/tenant identifier. All data is scoped to this workspace.
actor_id
string
required
User or agent who created this artifact.
artifact_type
string
required
One of: chat_turn, tool_call, tool_result, document, note, meeting_transcript, email, calendar_event, attachment
raw_payload
object | string | array
The artifact content. Stored as-is — no rewriting or summarizing.
timestamp
string
ISO 8601 datetime. When the artifact was created. Defaults to current time.
permissions
object
Access control for this artifact.
idempotency_key
string
Prevents duplicate ingestion. Same key + workspace = same artifact returned.
session_id
string
Session grouping identifier.
thread_id
string
Thread grouping identifier.

Response

artifact_id
string
UUID of the stored artifact.
content_hash
string
SHA-256 hash of the raw payload.
indexed
boolean
Whether text extraction, chunking, and embedding completed inline. false when async indexing is enabled.

Example

from nined.memory import MemoryClient

client = MemoryClient(base_url="https://api.9dlabs.xyz", api_key="your-key")

result = client.ingest(
    workspace_id="ws_acme",
    actor_id="user_alice",
    artifact_type="chat_turn",
    raw_payload={
        "role": "user",
        "content": "The Q2 enterprise discount cap has been raised to 18%."
    },
    permissions={"visibility": "restricted", "rbac_tags": ["pricing", "enterprise"]},
    idempotency_key="msg_q2_pricing_update",
)

print(result["artifact_id"])
Response
{
  "artifact_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "content_hash": "sha256:e3b0c44298fc1c14...",
  "indexed": true
}

Artifact Types

TypeDescription
chat_turnA single conversation message (user or assistant)
tool_callAn agent’s invocation of an external tool
tool_resultThe result returned by a tool
documentA document (policy, runbook, report, etc.)
noteA free-form note
meeting_transcriptMeeting transcript or summary
emailAn email message
calendar_eventA calendar entry
attachmentA file attachment (binary content via blob_pointer)

Notes

  • Artifacts are immutable — once ingested, they cannot be modified. Use feedback to flag artifacts as wrong or outdated.
  • The raw payload is stored losslessly with a SHA-256 content hash for verification.
  • When ASYNC_INDEXING=true, indexing (text extraction, chunking, embedding) happens in a background worker. Use artifact status to check progress.