---
title: "Get Enrichment Status Batch"
method: POST
path: "/api/v1/enrichment/enrich_async/status_batch"
tags: ["enrichment"]
---

# Get Enrichment Status Batch

`POST /api/v1/enrichment/enrich_async/status_batch`

Get the status of multiple enrichment workflows.

## Request body

- EnrichmentStatusBatchRequest — Request model for getting the status of multiple enrichment workflows.
  - `workflow_ids` string[], required

## Response `200`

Successful Response

- EnrichmentStatusListResponse — Response model for returning a list of enrichment task statuses.
  - `statuses` EnrichmentStatusResponse[], required
    - `workflow_id` string, required — The ID of the DBOS workflow (or legacy Celery task).
    - `status` string, required — The current status of the workflow (PENDING, SUCCESS, FAILURE, etc.).
    - `result` EnrichRowResponse — Response schema for enriching a specific row. Attributes: value: The enriched value (result of the enrichment) reasoning: Explanation or rationale for the enrichment value citations: List of web search sources that support the enrichment value state: The final state of the enrichment for this row
      - `value` union, required
        - string
        - number
        - boolean
        - string[]
        - object[]
        - object
        - integer
        - ContactModel[]
          - `id` string, nullable — Unique identifier for the contact. Required for PDL contacts, auto-generated for web search contacts.
          - `full_name` string, nullable
          - `first_name` string, nullable
          - `middle_name` string, nullable
          - `middle_initial` string, nullable
          - `last_name` string, nullable
          - `last_initial` string, nullable
          - `job_title` string, nullable
          - `job_title_role` string, nullable
          - `job_title_sub_role` string, nullable
          - `job_title_levels` string[]
          - `job_title_class` string, nullable
          - `job_company_name` string, nullable
          - `job_company_id` string, nullable
          - `job_company_website` string, nullable
          - `job_company_size` string, nullable
          - `job_company_industry` string, nullable
          - `job_company_location_name` string, nullable
          - `job_company_location_locality` string, nullable
          - `job_company_location_region` string, nullable
          - `job_company_location_country` string, nullable
          - `job_start_date` string, nullable
          - `job_last_changed` string, nullable
          - `job_last_verified` string, nullable
          - `linkedin_url` string, nullable
          - `linkedin_username` string, nullable
          - `linkedin_id` string, nullable
          - `has_email` boolean
          - `has_phone` boolean
          - `has_personal_email` boolean
          - `has_work_email` boolean
          - `has_mobile_phone` boolean
          - `work_email` string, nullable
          - `personal_email` string, nullable
          - `mobile_phone` string, nullable
          - `phone` string, nullable
          - `location_name` string, nullable
          - `location_locality` string, nullable
          - `location_region` string, nullable
          - `location_country` string, nullable
          - `location_continent` string, nullable
          - `twitter_url` string, nullable
          - `twitter_username` string, nullable
          - `facebook_url` string, nullable
          - `facebook_username` string, nullable
          - `github_url` string, nullable
          - `github_username` string, nullable
          - `industry` string, nullable
          - `sex` string, nullable
          - `age_range` AgeRange — Age range from PDL. Can represent exact age (min == max) or range.
            - `min` integer, nullable
            - `max` integer, nullable
            - `is_approximate` boolean
            - `reasoning` string, nullable — The reasoning for the age range.
            - `sources` string[] — The sources for the age range.
          - `skills` string[]
          - `interests` string[]
          - `tenure` TenureRange — Job tenure range representing when someone started at their current position/company. Used for employment duration (e.g., via PDL data). Can represent exact year (min == max) or range of possible years. Confidence is inferred: exact year = confirmed, range = approximate.
            - `min` integer, nullable
            - `max` integer, nullable
            - `reasoning` string, nullable — The reasoning for the tenure range.
            - `sources` string[] — The sources for the tenure range.
          - `ownership_duration` OwnershipDuration — Property ownership duration representing when ownership began. Used for property/parcel ownership (e.g., via deed records). Can represent exact year (min == max) or range of possible years. Confidence is inferred: exact year = confirmed, range = approximate.
            - `min` integer, nullable
            - `max` integer, nullable
            - `reasoning` string, nullable — The reasoning for the ownership duration.
            - `sources` string[] — The sources for the ownership duration.
          - `identity_evidence` ContactIdentityEvidence — How this contact's identity was established, as a typed claim. ``corroborated`` is reserved for identities at least two independent sources agree on. The validator enforces a floor — two distinct non-empty source *strings* — so a bare or duplicated claim cannot be represented; whether the named sources are genuinely independent remains the agent's assertion. ``single_source`` states exactly what an unconfirmed vendor return is. ``conflicting`` flags a name that disagrees with the record's owner or target person.
            - `identity` 'corroborated' | 'single_source' | 'conflicting', required — corroborated: at least two independent sources agree this is the person. single_source: one source reported it and nothing independent confirms it. conflicting: the name disagrees with the record's owner or target person.
            - `identity_basis` string, required — What establishes (or undermines) the identity, in one sentence.
            - `corroborating_sources` string[] — Named independent sources backing the identity. At least two distinct sources are required to declare 'corroborated'.
            - `reachability_source` 'property_records' | 'published' | 'both', nullable — Where the phone/email came from; 'both' means both source types were used. A vendor match score is not evidence a number is reachable.
          - `experience` PDLExperience[]
            - `company` PDLCompany — Company information from PDL.
              - …
            - `title` PDLTitle — Job title information from PDL.
              - …
            - `location_names` string[]
            - `start_date` string, nullable
            - `end_date` string, nullable
            - `is_primary` boolean
          - `education` PDLEducation[]
            - `school` PDLSchool — School information from PDL.
              - …
            - `degrees` string[]
            - `majors` string[]
            - `minors` string[]
            - `start_date` string, nullable
            - `end_date` string, nullable
            - `gpa` number, nullable
          - `profiles` PDLProfile[]
            - `network` string, required
            - `id` string, nullable
            - `url` string, nullable
            - `username` string, nullable
          - `dataset_version` string, nullable
        - TenantLeaseConcise[]
          - `tenant_legal_name` string, nullable — Tenant legal name or primary occupant name.
          - `lease_start_date` string, date, nullable — Lease commencement / tenant move-in date (if known).
          - `lease_end_date` string, date, nullable — Lease expiration date for the current in-place term.
          - `in_place_rent_psf_yr` string, nullable — $ / SF / Year current in-place base rent (net of abatements if possible).
          - `expense_structure` 'nnn' | 'modified_gross' | 'full_service_gross' | 'industrial_gross' | 'other'
          - `escalation_type` 'fixed_percent' | 'cpi' | 'hybrid' | 'none' | 'other'
          - `occupancy_status` 'leased' | 'vacant' | 'owner_occupied' | 'partially_leased' | 'unknown'
          - `num_tenants` integer, nullable — Number of distinct tenants in the building (1 = single-tenant).
          - `delinquency_status` string, nullable — Description of the tenant's delinquency status.
          - `as_of` string, date-time — UTC timestamp when this record was compiled/last updated.
      - `reasoning` string, nullable
      - `citations` EnrichmentCitation[], nullable
        - `url` string, nullable — Optional URL of the source that supports the enrichment value.
        - `title` string, nullable — Optional human-readable title for the source.
        - `snippet` string, nullable — Optional snippet or excerpt from the cited material.
        - `provider` string, nullable — Provider or domain the citation originated from.
        - `source_type` string, nullable — Provider-specific type identifier for the cited source.
      - `state` 'unenriched' | 'enriched' | 'attempted' | 'user_edited' | 'pending', required — Enum representing the state of an enrichment value.
    - `error_info` string, nullable — Error information if the workflow failed.
    - `completed_at` string, date-time, nullable — Timestamp when the workflow completed.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/maia-analytics/apis/maia-api.md) · [All operations](https://skmtc.net/maia-analytics/apis/maia-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/maia-analytics/maia-api/revisions/ac8a0a8837e3/schema)
