---
title: "Get Dream Pass Status"
method: GET
path: "/api/admin/memory/{user_id}/dream/{job_id}"
tags: ["v2", "admin", "admin", "memory"]
---

# Get Dream Pass Status

`GET /api/admin/memory/{user_id}/dream/{job_id}`

Read the current status of a fire-and-forget dream pass job.

## Path parameters

- `user_id` string, required — User id or 'me'
- `job_id` string, required — Job id returned by the POST

## Response `200`

Successful Response

- DreamJobStatus — JobStatus envelope for ``kind="dream_pass"``.
  - `job_id` string, required
  - `user_id` string, required
  - `kind` 'nightly' | 'dream_pass' | 'rebuild', required
  - `state` 'queued' | 'running' | 'submitted' | 'complete' | 'errored', required
  - `started_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `completed_at` string, date-time, nullable
  - `current_phase` string, nullable — Free-form phase label set by the work body. Dream pass uses 'consolidate' | 'recombine' | 'sanitize' | 'apply'; nightly batch reuses those plus 'ratification'; community rebuild uses 'leiden' | 'summarize' | 'persist'.
  - `batch_id` string, nullable
  - `result` DreamPassResult — Return value of ``execute_dream_pass`` and the admin API. Mirrors ``RebuildResponse`` from the community-rebuild endpoint so the admin frontend can render both with the same toast logic.
    - `user_id` string, required
    - `pass_id` string, required
    - `started_at` string, date-time, nullable
    - `completed_at` string, date-time, nullable
    - `elapsed_seconds` number, nullable
    - `execution_path` 'sync_baseline' | 'anthropic_batch' | 'openai_batch'
    - `consolidated_count` integer
    - `proposal_count` integer
    - `demotion_count` integer
    - `entity_invalidation_count` integer
    - `summary_for_user` string
    - `dream_session_id` string, nullable
    - `ingestion_drain_status` 'drained' | 'skipped' | 'timed_out' — Fate of a dream pass's enqueued graph writes at the moment the pass was reported complete. Three distinct states, so consumers (and a future Memory Visualizer) can tell a healthy by-design skip from a real failure: * ``drained`` — the pass's own episodes were confirmed landed in the graph before the pass returned (sync path), or the pass enqueued nothing to drain. Healthy. * ``skipped`` — the drain was intentionally not run to avoid stalling a shared serial loop (batch path). The episodes process fire-and-forget; healthy by design, NOT a failure signal. * ``timed_out`` — the sync-path drain was attempted but did not finish within its budget. The reported write/proposal counts include episodes still queued in-process, which are lost if the worker's pod restarts. This is the only value that warrants an operator warning.
    - `operations` DreamOperationsSnapshot — Detailed per-operation rollup of a single dream pass. Shape used by three downstream consumers: 1. The admin memory-visualizer UI (renders the per-edge detail). 2. AgentProbe eval scorers (read via ``rawExchangeKey``). 3. The future chat-stream ``dream.operations`` SSE event (P6 + P9 daydreaming, see ``dream/TODO.md``). Kept additive on ``DreamPassResult`` so adding fields here doesn't bump the count-only top-level columns existing clients rely on.
      - `writes` WriteSummary[]
        - `edge_uuid` string, nullable
        - `content` string, required
        - `scope` string
        - `confidence` number, nullable
        - `status` 'active' | 'tentative'
        - `source_episode_uuids` string[]
        - `source_fact_uuids` string[]
      - `proposals` WriteSummary[]
        - `edge_uuid` string, nullable
        - `content` string, required
        - `scope` string
        - `confidence` number, nullable
        - `status` 'active' | 'tentative'
        - `source_episode_uuids` string[]
        - `source_fact_uuids` string[]
      - `demotions` DemotionSummary[]
        - `edge_uuid` string, required
        - `reason` string, required
        - `new_status` 'superseded' | 'contradicted', required
        - `applied` boolean
      - `entity_invalidations` EntityInvalidationSummary[]
        - `entity_uuid` string, required
        - `reason` string, required
        - `edges_touched` string[]
    - `usage` DreamPassUsage — Aggregate usage across all phases of one dream pass. Surfaced on ``DreamPassResult.usage`` so eval / admin UI / billing can read tokens + cost without recomputing. Written to ``PlatformCostLog`` from apply.py with ``provider='dream_pass'``; charged against the user's rate-limit window via ``persist_and_record_usage`` so dream-pass spend rolls into the same daily/weekly subscription tier budget as chat-execution overage.
      - `phases` PhaseUsage[]
        - `phase` 'consolidate' | 'recombine' | 'sanitize', required
        - `model` string, required
        - `input_tokens` integer
        - `output_tokens` integer
        - `cache_read_tokens` integer
        - `cache_creation_tokens` integer
        - `cost_usd` number, nullable
      - `total_input_tokens` integer
      - `total_output_tokens` integer
      - `total_cache_read_tokens` integer
      - `total_cache_creation_tokens` integer
      - `total_cost_usd` number, nullable
      - `discount_applied` number
    - `error` string, nullable
    - `skipped` boolean
    - `skip_reason` string, nullable
  - `error` string, nullable

## Other responses

- `401` — Authentication required
- `422` — Validation Error

---

[API](https://skmtc.net/significant-gravitas/apis/autogpt-agent-server.md) · [All operations](https://skmtc.net/significant-gravitas/apis/autogpt-agent-server/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/significant-gravitas/autogpt-agent-server/versions/382041c7ecb2/schema)
