---
title: "Well lifecycle summary for one well"
method: GET
path: "/v1/well-lifecycle/wells/{api_number}"
tags: ["Well Lifecycle"]
---

# Well lifecycle summary for one well

`GET /v1/well-lifecycle/wells/{api_number}`

Returns the persisted permit-to-production lifecycle summary for a single
promoted-state well. Runtime requests read materialized lifecycle summaries
and do not perform large raw permit/production joins.

## Path parameters

- `api_number` string, required

## Response `200`

Persisted lifecycle summary

- object
  - `status` string
  - `data` WellLifecycleWellSummary
    - `api_number` string
    - `state` string
    - `county` string, nullable
    - `operator` string, nullable
    - `well_name` string, nullable
    - `source` string
    - `lifecycle_dates` object
      - `permit_date` string, date, nullable
      - `approval_date` string, date, nullable
      - `spud_date` string, date, nullable
      - `year_spudded` integer, nullable
      - `completion_date` string, date, nullable
      - `first_production_month` string, date, nullable
      - `latest_production_month` string, date, nullable
    - `production` object
      - `production_months` integer
      - `cumulative_oil_bbl` number, nullable
      - `cumulative_gas_mcf` number, nullable
      - `cumulative_water_bbl` number, nullable
      - `cumulative_boe` number, nullable
    - `cycle_times` object
      - `permit_to_spud_days` integer, nullable
      - `spud_to_completion_days` integer, nullable
      - `completion_to_first_prod_days` integer, nullable
      - `permit_to_first_prod_days` integer, nullable
      - `permit_to_frac_days` integer, nullable
      - `completion_to_frac_days` integer, nullable
      - `frac_to_first_prod_days` integer, nullable
    - `frac_focus` object
      - `matched` boolean
      - `disclosure_count` integer
      - `match_status` 'no_match' | 'exact_api_match' | 'exact_api_match_missing_job_date' | 'multiple_exact_api_matches' | 'multiple_exact_api_matches_missing_primary_job_date'
      - `match_confidence` integer, nullable
      - `primary_upload_key` string, nullable
      - `job_start_date` string, date, nullable
      - `job_end_date` string, date, nullable
      - `water_gallons` integer, nullable
      - `non_water_gallons` integer, nullable
      - `chemical_count` integer, nullable
      - `source` string
    - `source_coverage_status` 'full_chain' | 'permit_spud_production_no_completion' | 'permit_completion_production_no_spud' | 'permit_production_only' | 'production_join_without_permit_date'
    - `data_quality_flags` string[]
    - `summary_generated_at` string, date-time

## Other responses

- `400` — Malformed API number
- `401` — Unauthorized
- `403` — Enterprise plan required
- `404` — Lifecycle summary unavailable for this well or state
- `500` — Unexpected server error. Retry transient failures with bounded backoff and retain the request ID when contacting support.

---

[API](https://skmtc.net/oilpriceapi/apis/oil-price-api-v1.md) · [All operations](https://skmtc.net/oilpriceapi/apis/oil-price-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oilpriceapi/oil-price-api-v1/revisions/5a5ce424cacc/schema)
