---
title: "Get Enrichment Job"
method: GET
path: "/public/enrich/{job_id}"
tags: ["Enrich"]
---

# Get Enrichment Job

`GET /public/enrich/{job_id}`

## Request

- Base URL: `https://catalogapi.rastro.ai/api`
- URL: `https://catalogapi.rastro.ai/api/public/enrich/{job_id}`
- Auth: HTTP bearer

Poll enrichment job status and get results.

Returns results **progressively** — partial results are available while the job
is still running, as each batch of items completes processing.

**Flow:**
1. Submit enrichment with `async_mode=true` → get `job_id`
2. Poll this endpoint — results appear incrementally as items are processed
3. When `status` changes to `completed`, all results are ready

**Pagination:**
- `page`: Page number (1-indexed, default: 1)
- `page_size`: Results per page (default: 1000)
- Response includes `page`, `page_size`, `total_pages`, `completed_items`

**Statuses:**
- `running`: Job is still processing (partial results may be available)
- `completed`: Job finished, all results ready
- `failed`: Job failed or was cancelled (partial results may still be available)

**Example:**
```
GET /api/public/enrich/{job_id}?page=1&page_size=50

Response (running, partial results):
{
    "job_id": "08aa2b0d-...",
    "status": "running",
    "results": [
        {"after_data": {...}, "before_data": {...}, "sources": {...}}
    ],
    "total_items": 500,
    "completed_items": 200,
    "successful": 0,
    "credits_used": 0,
    "page": 1,
    "page_size": 50,
    "total_pages": 4
}
```

## Path parameters

- `job_id` string, required

## Query parameters

- `page` integer
- `page_size` integer

## Headers

- `X-Organization-Id` string, nullable

## Response `200`

Successful Response

- EnrichResponse: Response with enriched data for all items.
  - `job_id` string, nullable: Job ID for tracking (always returned). Use this with source_activity_id to trigger full run.
  - `results` EnrichItemResult[]: Enrichment results for each item (empty if async_mode=true)
    - `original_data` object, required: The original input data
    - `after_data` object: Complete enriched record with values, sources, and source_explanations
    - `all_sources` string[]: All web sources used across all fields
    - `error` string, nullable: Error message if enrichment failed for this item
    - `category_id` string, nullable: Predicted taxonomy node ID
    - `taxonomy_attributes` object, nullable: Predicted taxonomy-specific attributes
    - `taxonomy_attribute_sources` object, nullable: Per-attribute source URLs or input references used to derive taxonomy attribute values
    - `taxonomy_attribute_explanations` object, nullable: Per-attribute explanations of how values were derived from sources
    - `review_info` object, nullable: AI reasoning, flags for human review
    - `low_confidence_candidates` LowConfidenceCandidate[], nullable: Optional tail section of plausible but non-canonical field or taxonomy candidates
      - `scope` string: Candidate scope: field, taxonomy_attribute, or category
      - `name` string, required: Canonical field or taxonomy attribute name
      - `candidate_value` string, nullable: Candidate value serialized as exact text or compact JSON
      - `confidence` string: Confidence level for this candidate
      - `reason` string, nullable: Why this candidate is plausible but not strong enough for canonical output
      - `sources` string[]: Resolved source URLs or input:* references supporting the candidate
      - `source_explanation` string, nullable: Optional short explanation of where the candidate came from
    - `low_confidence_fields` string[], nullable: Field or taxonomy attribute names that should be highlighted as low-confidence while remaining in after_data
    - `staged_change_id` string, nullable: ID of the staged change record (if stage_changes=true)
  - `total_items` integer, required: Number of items being processed (may be limited by max_rows)
  - `total_rows` integer, nullable: Total items passed in the request (before max_rows limit)
  - `successful` integer: Number of successfully enriched items
  - `credits_used` integer: Number of credits used (1 per successful item)
  - `status` string: Job status: 'running' (async) or 'completed' (sync)
  - `service_usage` object, nullable: Detailed API usage metrics (costs, calls, tokens) - only present when job is complete
  - `pricing_estimates` object, nullable: Estimated pricing breakdown (for example knowledge-base storage + model runtime costs when available)
  - `knowledge_base_enabled` boolean, nullable: Whether this enrichment job used a knowledge base vector store
  - `knowledge_base_sources` object, nullable: SOURCE_X -> hosted document URL mapping for knowledge-base files used by the activity
  - `page` integer, nullable: Current page number (1-indexed)
  - `page_size` integer, nullable: Number of results per page
  - `total_pages` integer, nullable: Total number of pages available
  - `completed_items` integer, nullable: Number of items with results available so far (useful while status=running)

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/rastro-ai/apis/rastro-public-api.md) - [All operations](https://skmtc.dev/rastro-ai/apis/rastro-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/rastro-ai/apis/rastro-public-api/revisions/57c8ed4854bb?raw)
