Developers

EnergyNetWatch API reference

Start with prepaid oil and gas API credits, create a key, and run a health check before connecting drilling permit, well, operator, or production records to your software. API-only access does not require a Premium app subscription. Check endpoint coverage and unit costs before larger exports.

Base URL

All public API requests use the EnergyNetWatch API domain.

https://api.energynetwatch.com

Authentication

Send an API key with every protected request. Keep keys in server-side environment variables or a managed secret store.

X-API-Key: $ENERGYNETWATCH_API_KEY

Key environment variable

export ENERGYNETWATCH_API_KEY="enw_live_xxxxxxxxxxxxx"
Start here

Oil and gas API setup: account to first request

  1. 1Create an account or sign in, then open Settings → API Access.
  2. 2Choose prepaid API credits and complete checkout. Starter credits cost $50 for 10,000 units; a Premium app subscription is not required.
  3. 3After payment is processed and API access is active, create an API key. Save the copy-once key privately and check its enabled scopes.
  4. 4Store the key server-side as an environment variable such as ENERGYNETWATCH_API_KEY.
  5. 5Run the health check.
  6. 6Run a simple operator, permit, or data-availability request.
  7. 7Use the OpenAPI schema to inspect endpoints, parameters, and response formats.

Already have an account? Sign in to API Access. Need custom delivery, licensing, or help choosing a dataset? Request integration help. Standard prepaid access does not require a sales call. Account creation alone does not unlock paid data.

First call path

Everything needed for the first request

Start with the health check, then run a small operator, permit, or data-availability request. Log the X-Request-ID header for troubleshooting, but never log full API keys.

Base URL
https://api.energynetwatch.com
Environment variable
ENERGYNETWATCH_API_KEY=enw_live_xxxxxxxxxxxxx
Authentication header
X-API-Key: $ENERGYNETWATCH_API_KEY
Health check
curl -i https://api.energynetwatch.com/api/public/health \
  -H "X-API-Key: $ENERGYNETWATCH_API_KEY"
Authenticated request
curl -i "https://api.energynetwatch.com/api/public/operators?search=Civitas&limit=5" \
  -H "X-API-Key: $ENERGYNETWATCH_API_KEY"
Failed no-key behavior
curl -i https://api.energynetwatch.com/api/public/health
# Expected: HTTP 401
Before you connect

What you need to start

Set up API access

Account with API access

Use an EnergyNetWatch account with API access enabled. Billing, keys, usage, and support all stay tied to that account.

Server-side API key

Store the key server-side. Do not expose API keys in browsers, public repositories, client-side applications, or shared scripts.

Usage limits

Requests count against your daily limit and unit balance. Rate-limit headers show when to slow down or retry.

API specification (OpenAPI)

Use the schema to inspect endpoints, generate client code, and keep request and response handling predictable.

API coverage

Endpoint families available through API access

Access is scoped by account and endpoint family. State coverage and freshness vary by route, so use the coverage page and OpenAPI schema before building production jobs.

Operators
Official Texas RRC operators and organization numbers
Data availability / coverage metadata
Drilling permits
Wells
Texas well-to-district-and-lease identity
Texas completion, inactive-status, and test/allowable context
Texas UIC injection/disposal profiles and H-10/H-10H monthly reports
Modeled well production
Official filed Texas lease production
Facility permits
Infrastructure records
Physical Texas pipeline, T-4 route, and TX/NM facility records
TX PS-48 construction signals
New Mexico APD signals
Source-date and freshness context
API or MCP?

Choose the connection style

Use the API when

Your software, dashboard, CRM, enrichment job, report workflow, or backend service needs to make direct endpoint requests.

  • Pull operator records into an internal dashboard.
  • Enrich a CRM account list with permit or production context.
  • Build a recurring permit, well, production, or infrastructure signal workflow.
  • Resolve a Texas UIC control number, inspect its permit profile, and retrieve separate H-10/H-10H monthly reports.

Use MCP when

An AI assistant, agent, or MCP-compatible client needs to query EnergyNetWatch data through a natural-language workflow.

  • Ask an AI agent to find operators with recent permit activity.
  • Ask for a county-level activity summary from a complete county-filtered REST export; the current MCP permit tool has no native county filter.
  • Ask an assistant to check whether an operator has wells, permits, production, or infrastructure records.
  • Build an AI-supported lead list from source-backed public records.
First API checks

Copy-paste requests for a new key

Step

Health

curl -i https://api.energynetwatch.com/api/public/health \
  -H "X-API-Key: $ENERGYNETWATCH_API_KEY"

Expected: HTTP 200, a request id, rate-limit headers, and current usage details.

Step

No-key check

curl -i https://api.energynetwatch.com/api/public/health

Expected: HTTP 401. Protected API requests should not work without a key.

Step

Operators sample

curl -i "https://api.energynetwatch.com/api/public/operators?search=Civitas&limit=5" \
  -H "X-API-Key: $ENERGYNETWATCH_API_KEY"

Expected: HTTP 200 and paged operator records when operator access is enabled.

Step

TX/NM signals sample

curl -i "https://api.energynetwatch.com/api/public/reports/tx-nm-signal-summary" \
  -H "X-API-Key: $ENERGYNETWATCH_API_KEY"

Expected: HTTP 200, TX/NM signal totals, and notes for interpreting the source records.

Step

Texas UIC bounded search

curl -i "https://api.energynetwatch.com/api/public/regulatory/tx/uic/wells?operatorNo=628658&limit=5" \
  -H "X-API-Key: $ENERGYNETWATCH_API_KEY"

Expected: HTTP 200 and at most five UIC profiles. An exact UIC, API, or operator identifier is required.

Endpoint reference

Public API surface

Manage API keys
Method
GET
Path
/api/public/health
Units
0
Purpose

Check API availability and key authorization. Rate-limit headers accompany the response; view unit balance in Settings → API Access.

Method
GET
Path
/api/public/openapi.json
Units
0
Purpose

Machine-readable OpenAPI 3.1 schema.

Method
GET
Path
/api/public/operators
Units
2
Purpose

Search and page normalized operator records.

Method
GET
Path
/api/public/data-availability
Units
12
Purpose

Check which record groups match a company, well, or search term.

Method
GET
Path
/api/public/operators/{id}
Units
4
Purpose

Fetch one normalized operator profile.

Method
GET
Path
/api/public/operators/{id}/production-summary
Units
8
Purpose

Operator production summary where supported by coverage.

Method
GET
Path
/api/public/operators/{id}/permits-summary
Units
10
Purpose

Operator permit activity summary.

Method
GET
Path
/api/public/permits
Units
6
Purpose

Search and page permits.

Method
GET
Path
/api/public/permits/top-operators
Units
4
Purpose

Rank operators by permit activity.

Method
GET
Path
/api/public/permits/operator-growth
Units
6
Purpose

Show permit-growth context by operator where supported.

Method
GET
Path
/api/public/facility-permits
Units
4
Purpose

Preview facility permit records with source caveats.

Method
GET
Path
/api/public/infrastructure/operator-leads
Units
8
Purpose

Return infrastructure lead signals by operator where available.

Method
GET
Path
/api/public/signals/tx/ps48
Units
8
Purpose

Texas PS-48 pipeline construction-start notices with operator, county, timing, and T-4 status context.

Method
GET
Path
/api/public/signals/nm/apds
Units
6
Purpose

New Mexico APD surface-activity signals with county, operator, coordinates, issue dates, and spud context.

Method
GET
Path
/api/public/reports/tx-nm-signal-summary
Units
12
Purpose

Executive TX/NM signal summary across TX PS-48, TX infrastructure leads, NM APDs, NM facilities, and NM midstream context.

Method
GET
Path
/api/public/wells
Units
4
Purpose

Search and page normalized wells. This remains the low-cost starting point for lookup by operator, API number, lease name, or county.

Method
GET
Path
/api/public/wells/{api}
Units
4
Purpose

Fetch one normalized well profile by API number.

Method
GET
Path
/api/public/wells/{api}/production
Units
6
Purpose

Fetch supported modeled monthly well history, kept separate from official filed lease production.

Method
GET
Path
/api/public/production/latest-month
Units
2
Purpose

Return the latest complete modeled-production month and the separate well-explorer snapshot month.

Method
GET
Path
/api/public/regulatory/tx/operators
Units
2
Purpose

Search official Texas RRC operator names and organization numbers.

Method
GET
Path
/api/public/regulatory/tx/operators/{operatorNo}
Units
4
Purpose

Fetch one official Texas RRC operator identity and latest filed-production context.

Method
GET
Path
/api/public/regulatory/tx/operators/{operatorNo}/production
Units
8
Purpose

Fetch official filed lease-production totals for one Texas RRC operator.

Method
GET
Path
/api/public/regulatory/tx/wells/{api}
Units
24
Purpose

Resolve a Texas API number to official operator, district, oil/gas class, and lease identity.

Method
GET
Path
/api/public/regulatory/tx/wells/{api}/production
Units
72
Purpose

Resolve a Texas API10 internally and return the same official filed lease history as the district/lease call. On multi-well leases, this remains a lease total, not official individual-well production.

Method
GET
Path
/api/public/regulatory/tx/wells/{api}/completion
Units
40
Purpose

Fetch Full Wellbore formation/perforation context and retained approved W-2/G-1 measured depth or TVD.

Method
GET
Path
/api/public/regulatory/tx/wells/{api}/inactive-status
Units
6
Purpose

Fetch the latest official IWAR inactive status and factual snapshot transition context.

Method
GET
Path
/api/public/regulatory/tx/wells/{api}/oltdw-status
Units
6
Purpose

Fetch uniquely matched OLTDW status/test context; values are not actual individual-well production.

Method
GET
Path
/api/public/regulatory/tx/wells/{api}/tests-allowables
Units
6
Purpose

Fetch uniquely matched Oil Masters test/allowable context; values are not actual individual-well production.

Method
GET
Path
/api/public/regulatory/tx/uic/wells
Units
12
Purpose

Run a bounded Texas UIC injection/disposal-well search using an exact UIC, API, or operator identifier.

Method
GET
Path
/api/public/regulatory/tx/uic/wells/{uicControlNumber}
Units
24
Purpose

Fetch one current Texas RRC UIC inventory and permit profile by native control number.

Method
GET
Path
/api/public/regulatory/tx/uic/wells/{uicControlNumber}/monthly
Units
48
Purpose

Fetch bounded H-10 and H-10H regulatory history as separate report records.

Method
GET
Path
/api/public/regulatory/tx/leases
Units
4
Purpose

Search official Texas RRC lease identities by district, lease, operator, or text.

Method
GET
Path
/api/public/regulatory/tx/leases/{oilGasCode}/{districtNo}/{leaseNo}/production
Units
48
Purpose

Fetch official filed production at lease grain. This is the canonical official-history call after resolving a well.

Method
GET
Path
/api/public/regulatory/tx/production/summary
Units
4
Purpose

Fetch official filed statewide or district lease-production totals.

Method
GET
Path
/api/public/midstream/tx/pipelines/coverage
Units
2
Purpose

Inspect loaded Texas pipeline GIS coverage before requesting segment geometry.

Method
GET
Path
/api/public/midstream/tx/pipelines/segments
Units
8
Purpose

Fetch bounded Texas pipeline GIS segments with source and geometry caveats.

Method
GET
Path
/api/public/midstream/tx/t4/{permitNumber}/route
Units
6
Purpose

Fetch mapped route evidence for one Texas T-4 permit number.

Method
GET
Path
/api/public/midstream/facilities
Units
6
Purpose

Search regulator-derived Texas or New Mexico facility records.

Keys and usage

How access works

Base URL

https://api.energynetwatch.com

Authentication

Send an API key in the X-API-Key header on every protected request.

API key issuance

Create a key in Settings → API Access after prepaid checkout activates access, or use an existing active app/API entitlement. Custom access can be arranged separately.

Endpoint access

Your key controls which endpoint families you can call.

Unit cost

Each OpenAPI operation lists x-energynetwatch-unit-cost so you can estimate usage before running jobs.

Included / prepaid units

Accounts can include plan-based units, prepaid units, or both, depending on plan and approved access.

Coverage notes

Responses may include source dates, loaded-through values, and coverage notes where they matter.

OpenAPI

Use the OpenAPI schema to generate clients or inspect request and response shapes.

Build notes

Recommended practices

  • Keep API keys in server-side environment variables or a managed secret store.
  • Run the health endpoint before scheduled jobs and during deployment checks.
  • Keep source dates and coverage notes with API results when you show them in reports or dashboards.
  • Use pagination and filters for recurring data synchronization jobs.
  • Contact EnergyNetWatch before using API data in a public-facing or resold product.
Example responses

JSON examples

Abridged response examples with illustrative values, not current search results. Additional fields are omitted. Preserve source, freshness, coverage and pagination metadata from real responses. Well production defaults to a well-card snapshot; explicit date windows request separately labeled modeled history, not official individual-well filings.

Health check

{
  "success": true,
  "data": {
    "ok": true,
    "service": "oandg-public-api",
    "now": "2026-09-13T12:00:00.000Z"
  }
}

Operator search

{
  "success": true,
  "data": {
    "items": [{"operator_id": 123, "operator_name": "Example Energy LLC"}],
    "pagination": {"page": 1, "limit": 5, "returned": 1}
  }
}

Data availability

{
  "success": true,
  "data": {
    "query": "Example Energy",
    "stateScope": "TX",
    "hasAnyData": true,
    "operatorProfiles": [{"operator_id": 123, "operator_name": "Example Energy LLC"}]
  }
}

Permit search

{
  "success": true,
  "data": {
    "permits": [{"permit_number": "123456", "state_code": "TX", "operator_name": "Example Energy LLC", "issue_date": "2026-08-01", "spud_date": null}],
    "totalPermits": 1,
    "pagination": {"page": 1, "limit": 10, "returned": 1, "hasMore": false, "nextPage": null}
  }
}

Well production

{
  "success": true,
  "data": {
    "api": "4212345678",
    "state": "TX",
    "series": [{"month": "2026-03-01", "oilBbl": 1200, "gasMcf": 850, "qualityFlag": "well_explorer_snapshot"}],
    "source": {"table": "well_explorer_multistate", "basis": "latest well-card snapshot row", "defaultUsesWellCardSnapshot": true}
  }
}

Infrastructure operator leads

{
  "success": true,
  "data": {
    "stateScope": "TX",
    "days": 90,
    "operators": [{"rank": 1, "operatorName": "Example Energy LLC", "permits": 5, "facilityRecords": 3, "counties": ["Reeves"]}]
  }
}

TX PS-48 signals

{
  "success": true,
  "data": {
    "ps48Notices": [{"operatorName": "Example Pipeline Co", "countyNames": ["Reeves"], "constructionStartDate": "2026-04-01"}],
    "pagination": {"page": 1, "limit": 2, "returned": 1, "total": 1},
    "quality": {"sourceSystem": "Texas RRC PS-48 New Pipeline Construction Reports"}
  }
}

TX/NM signal summary

{
  "success": true,
  "data": {
    "reportWindowStart": "2025-12-27",
    "tx": {"ps48": {"rows": 144, "reportedMiles": 1348.42}},
    "nm": {"apd": {"rows": 1572}},
    "quality": {"coverageScore": {"combinedPct": 97}}
  }
}

Illustrative Texas UIC monthly record

{
  "success": true,
  "data": {
    "well": {"uicControlNumber": "123456789", "api10": "4200300297"},
    "series": [{
      "reportMonth": "2025-12-01",
      "reportType": "H-10",
      "h10": {"averageInjectionPressurePsi": 725, "totalVolumeBbl": 42000},
      "h10h": null,
      "source": {"period": "2026-08-01", "runId": "latest-example-run", "loadedAt": "2026-09-03T14:00:00Z", "reportingGrain": "one UIC control number + report month + report type", "caveat": "Regulatory report; not real-time telemetry."},
      "rowProvenance": {"period": "2026-07-01", "runId": "example-run", "loadedAt": "2026-08-02T14:00:00Z"}
    }],
    "meta": {"coverage": {"reportTypesKeptSeparate": true, "hydrocarbonProduction": false}}
  }
}

Error response

{
  "success": false,
  "error": "Prepaid credits required",
  "message": "Monthly included API units are exhausted and prepaid credits are not sufficient for this request."
}
Test script

Basic checks before a scheduled job

# Set ENERGYNETWATCH_API_KEY privately before running this checklist.
: "${ENERGYNETWATCH_API_KEY:?Set your API key in your private environment first}"

echo "1. OpenAPI schema"
curl -i https://api.energynetwatch.com/api/public/openapi.json

echo "2. No-key health check should return 401"
curl -i https://api.energynetwatch.com/api/public/health

echo "3. Authenticated health should return 200"
curl -i https://api.energynetwatch.com/api/public/health \
  -H "X-API-Key: $ENERGYNETWATCH_API_KEY"

echo "4. Operator search"
curl -i "https://api.energynetwatch.com/api/public/operators?search=Civitas&limit=5" \
  -H "X-API-Key: $ENERGYNETWATCH_API_KEY"

echo "5. Data availability"
curl -i "https://api.energynetwatch.com/api/public/data-availability?search=Civitas&state=TX&includeCounty=true" \
  -H "X-API-Key: $ENERGYNETWATCH_API_KEY"

echo "6. TX PS-48 signal sample"
curl -i "https://api.energynetwatch.com/api/public/signals/tx/ps48?limit=2" \
  -H "X-API-Key: $ENERGYNETWATCH_API_KEY"

echo "7. NM APD signal sample"
curl -i "https://api.energynetwatch.com/api/public/signals/nm/apds?limit=2" \
  -H "X-API-Key: $ENERGYNETWATCH_API_KEY"

echo "8. TX/NM signal summary"
curl -i "https://api.energynetwatch.com/api/public/reports/tx-nm-signal-summary" \
  -H "X-API-Key: $ENERGYNETWATCH_API_KEY"

echo "9. Latest production month"
curl -i "https://api.energynetwatch.com/api/public/production/latest-month?state=TX" \
  -H "X-API-Key: $ENERGYNETWATCH_API_KEY"

echo "10. Bad limit / validation check"
curl -i "https://api.energynetwatch.com/api/public/operators?search=Civitas&limit=999999" \
  -H "X-API-Key: $ENERGYNETWATCH_API_KEY"

echo "11. Bogus key should return 401"
curl -i https://api.energynetwatch.com/api/public/health \
  -H "X-API-Key: bogus_test_key"

Expected behavior: no-key and bogus-key requests return 401, valid keys return 200, invalid parameters return 400, endpoint access problems return 403, exhausted usage returns 402 where applicable, and rate-limited usage returns 429. Successful responses should include X-Request-ID and rate-limit headers where limits apply.

Errors and headers

What to log and how to retry

401 Unauthorized

The key is missing, malformed, revoked, or paused. Stop the job and check the key.

402 Prepaid credits required

The account is out of included units and does not have enough prepaid units for the request.

403 Forbidden

The key is valid, but the account does not have access to that endpoint.

429 Rate limit exceeded

Too many requests were sent in the current window. Respect Retry-After before retrying.

X-Request-ID

Log this header with failed jobs or support requests. Do not log full API keys.

X-RateLimit-*

Use limit, remaining, and reset headers for backoff, monitoring, and job scheduling.

meta.freshness / meta.coverage

Keep source dates, loaded-through values, state coverage, and caveats with the results.

UIC source clocks

source and meta.freshness describe the latest completed dataset check; rowProvenance describes when a specific profile or monthly record was introduced or corrected.