Skip to main content
V2 endpoint — requires Pro, Team, or Enterprise plan.
When you ingest with async_index: true, each artifact gets a job_id. Use this endpoint to check whether indexing has completed and the artifact is ready to retrieve.

Request

GET /v2/jobs/{job_id}
job_id
string
required
The job ID returned in queued_jobs from POST /v2/ingest.

Response

job_id
string
The job ID.
status
string
Current state of the indexing job.
ValueMeaning
pendingQueued, not yet started.
processingIndexing in progress.
doneComplete. Artifact is available for retrieval.
failedIndexing failed. See error_message.
artifact_id
string
UUID of the artifact. Present once status is done.
workspace_id
string
Workspace this job belongs to.
created_at
string
ISO 8601 timestamp.
updated_at
string
ISO 8601 timestamp of the most recent status change.
error_message
string | null
Human-readable error if status is failed. null otherwise.

Example

import time
from nined.memory import MemoryClientV2

client = MemoryClientV2(api_key="your-key", workspace_id="ws_ops")

result = client.ingest(
    [{"artifact_type": "document", "raw_payload": {"content": large_doc}}],
    async_index=True,
)
job_id = result["queued_jobs"][0]["job_id"]

# Poll with backoff
for _ in range(20):
    status = client.job_status(job_id)
    if status["status"] == "done":
        print(f"Ready: {status['artifact_id']}")
        break
    if status["status"] == "failed":
        print(f"Failed: {status['error_message']}")
        break
    time.sleep(2)
Response
{
  "job_id": "j1a2b3c4-...",
  "workspace_id": "ws_ops",
  "status": "done",
  "artifact_id": "a1b2c3d4-...",
  "created_at": "2025-03-30T12:00:00Z",
  "updated_at": "2025-03-30T12:00:03Z",
  "error_message": null
}
For most indexing jobs, done status arrives in under a few seconds. Poll every 2 seconds with a backoff cap at 30 seconds for large documents.