---
title: "Quickstart — a real request returning real data | Data Tactical Group"
route: "/docs/api/quickstart"
updated: "2026-10-23"
---

# A real request, and what comes back

Ambulatory health care services in Louisiana, annual, two years. The response below is what this request returned when it was last replayed; the vintage it names is in its metadata, and a later vintage returns different values.

Your key

```
# every request goes to https://api.datatactical.group
export DTG_API_KEY=dtg_live_…
```

Request

```
curl "https://api.datatactical.group/v2/industry/series?areas=22&naics=621&from=2024&to=2025" \
  -H "Authorization: Bearer $DTG_API_KEY"
```

Response · replayed 2026-10-05 against vintage 20260913.

```
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 119
X-RateLimit-Reset: 1
​
{
  "data": [
    {
      "naics": "621",
      "area": "22",
      "ownership": "all",
      "points": [
        { "period": "2024", "emp": 117235.33, "estabs": 11094.5,
            "earnings": 7634923163.23, "avg_pay": 65124.76,
            "disclosure": 0, "reliability": 1, "naics_restated": false,
            "fips_restated": false, "quarters_present": 4 },
        { "period": "2025", "emp": 118518.71, "estabs": 11449,
            "earnings": 7980832503.2, "avg_pay": 67338.17, "disclosure": 0,
            "reliability": 1, "naics_restated": false,
            "fips_restated": false, "quarters_present": 4 }
      ]
    }
  ],
  "meta": {
    "vintage": "20260913",
    "generated_at": "2026-10-05T04:26:55Z",
    "granularity": "annual",
    "provenance_boundaries": {
      "actuals": { "from": "2004q1", "to": "2026q1" },
      "ces": { "from": "2026q2", "to": "2026q3" },
      "projections": { "from": "2026q4", "to": "2036q4" }
    },
    "geography": { "requested": 1, "returned": 1, "excluded": 0 },
    "pagination": { "cursor": null, "next_cursor": null, "count": 1 }
  }
}
```

## Make the request

Set your key in the environment and send one GET. The area is Louisiana by FIPS code, the industry is NAICS 621, the period is two annual values. State-level series are available to every key regardless of which counties the plan includes.

## What came back

`data` holds one series per area, code and ownership. Each point carries the period, employment (`emp`), establishments (`estabs`), total earnings and average pay, then the labels: `disclosure` (0 published, 1 estimated, 2 carried forward, 3 projected), `reliability` (0 to 1, 1 for a published value, null for carried-forward and projected values and where there is no employment), and the two restatement flags. On an annual point, `quarters_present` counts the quarters of source data behind it; the annual figure itself is always the average of four quarters. `meta` names the vintage, the provenance boundaries that say which periods are surveyed, carried forward and projected, how many of the requested areas were returned, and the paging state.

The response carries the vintage it was read from. Pin it with `vintage=` to get the same numbers on every call; leave it out to get the current vintage, whose values change when a new one is released.

## Change one thing

Replace `areas=22` with a county, `areas=22073`, and the same request returns Ouachita Parish, if that county is in your plan. A request whose every county is outside the plan is refused with a 403 and the code `geography_excluded`, naming the counties in `excluded_fips`:

Request

```
curl "https://api.datatactical.group/v2/industry/series?areas=48113&naics=621&from=2024&to=2025" \
  -H "Authorization: Bearer $DTG_API_KEY"
```

Response · replayed 2026-10-05 against vintage 20260913.

```
HTTP/1.1 403 Forbidden
Content-Type: application/problem+json; charset=utf-8
​
{
  "type": "https://api.datatactical.group/problems/geography_excluded",
  "title": "Forbidden",
  "status": 403,
  "detail": "No requested area is entitled.",
  "code": "geography_excluded",
  "excluded_fips": [
    "48113"
  ]
}
```

A request that mixes counties in the plan with counties outside it returns the ones in the plan, and `meta.geography.excluded` counts the rest rather than silently returning less. Add `strict=true` to turn any exclusion into the 403 instead:

Request

```
curl "https://api.datatactical.group/v2/industry/series?areas=22073,48113&naics=621&from=2024&to=2025" \
  -H "Authorization: Bearer $DTG_API_KEY"
```

Response · replayed 2026-10-05 against vintage 20260913. Trimmed: data.points to 1 of 2.

```
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
​
{
  "data": [
    {
      "naics": "621",
      "area": "22073",
      "ownership": "all",
      "points": [
        { "period": "2024", "emp": 6581.87, "estabs": 576.5,
            "earnings": 369727676.3, "avg_pay": 56173.63, "disclosure": 1,
            "reliability": 0.98, "naics_restated": false,
            "fips_restated": false, "quarters_present": 4 }
      ]
    }
  ],
  "meta": {
    "vintage": "20260913",
    "generated_at": "2026-10-05T04:26:55Z",
    "granularity": "annual",
    "provenance_boundaries": {
      "actuals": { "from": "2004q1", "to": "2026q1" },
      "ces": { "from": "2026q2", "to": "2026q3" },
      "projections": { "from": "2026q4", "to": "2036q4" }
    },
    "geography": { "requested": 2, "returned": 1, "excluded": 1 },
    "pagination": { "cursor": null, "next_cursor": null, "count": 1 }
  }
}
```

Replace `naics=621` with `naics_level=3` to get every sector at once, or set `granularity=quarterly` with `from=2024q1` for quarters. A large result comes in pages; see [paging](/docs/api/paging). Every parameter is in the [industry reference](/docs/api/reference/industry).
