# GET /v1/networks/{id}

> Index: https://kartpunkt.se/llms.txt

operationId: `getNetwork`. One network snapshot.
Tag: `registries`.

One network snapshot with its manifest: the NVDB deliveries, counts, layers read and code version it was built from. Use it to see what a stored provenance.network.id was built from; GET /v1/networks lists them all. It costs a request and no calculation.

## Request

`GET https://api.kartpunkt.se/v1/networks/{id}` with `Authorization: Bearer $KARTPUNKT_API_KEY`, from your backend (never browser code: the key would leak, and CORS is not enabled).

Parameters:
- `id` (path, string, pattern `^snap_[a-z0-9]+$`, required): The network snapshot's id, from GET /v1/networks or an answer's provenance.network.id.

## Response 200

Example:

```json
{
  "id": "snap_01k7exampleexampleexample0",
  "status": "active",
  "source": "synthetic",
  "source_date": "2026-10-13",
  "built_at": "2026-10-13T07:00:00.000Z",
  "active_from": "2026-10-13T07:01:00.000Z",
  "active_until": null,
  "profiles": [
    "walk",
    "car_shortest",
    "car_fastest",
    "bike"
  ],
  "manifest": {
    "counts": {
      "edges": 17824,
      "stops": 405,
      "turns": 1,
      "vertices": 17827
    },
    "test_network": "synthetic-v20:150000"
  },
  "provenance": {
    "synthetic": true,
    "network": {
      "id": "snap_01k7exampleexampleexample0",
      "dataset": "nvdb",
      "source_date": "2026-10-13",
      "built_at": "2026-10-13T07:02:00.000Z",
      "graph": "snap_01k7exampleexampleexample0"
    },
    "sources": [
      {
        "id": "nvdb",
        "name": "Trafikverket, NVDB",
        "licence": "CC0-1.0",
        "attribution": "Vägdata från NVDB, Trafikverket, CC0 1.0",
        "url": "https://creativecommons.org/publicdomain/zero/1.0/",
        "updated": "2026-10-13"
      }
    ]
  }
}
```

- `id` (string): The snapshot's id, as network.id takes it.
- `status` ("building" | "staged" | "validated" | "active" | "retired" | "archived" | "failed"): Where the snapshot is in its life (ADR-0010): 'building', 'staged' and 'validated' before it serves; 'active' the one served now; 'retired' and 'archived' served before, answered as jobs; 'failed' a build that stopped.
- `source` (string): The dataset the snapshot is built from: 'nvdb'.
- `source_date` (string | null): The NVDB delivery date (YYYY-MM-DD) the snapshot was built from.
- `built_at` (string): When the snapshot was built (RFC 3339).
- `active_from` (string | null): When the snapshot was first served (RFC 3339); null if it never was.
- `active_until` (string | null): When the snapshot stopped being served (RFC 3339); null while it is served, or if it never was.
- `profiles` (array of [Profile](https://api.kartpunkt.se/docs/shapes/Profile.md)): The profiles this snapshot can answer.
- `manifest` (object): How the snapshot was built: deliveries, counts, the layers read, the code version.
- `provenance` ([Provenance](https://api.kartpunkt.se/docs/shapes/Provenance.md))

## Errors

Every error is `{ error, message, param?, doc_url }`; `message` says what to do next. All codes: [https://api.kartpunkt.se/errors](https://api.kartpunkt.se/errors). What to do on each, with retries: [https://api.kartpunkt.se/docs/recipes/errors-and-retries.md](https://api.kartpunkt.se/docs/recipes/errors-and-retries.md).

- [`invalid_request`](https://api.kartpunkt.se/errors/invalid_request) (400): The request does not match the API schema. Fix the fields named in this message; see /openapi.json.
- [`unauthorized`](https://api.kartpunkt.se/errors/unauthorized) (401): Missing or unknown API key. Send it as 'Authorization: Bearer <key>' (or 'x-api-key'), read from the KARTPUNKT_API_KEY environment variable. The user creates a kp_test_ key on their Kartpunkt account page (https://kartpunkt.se/konto) and puts it in KARTPUNKT_API_KEY themselves; never ask them to paste a key into chat.
- [`live_access_required`](https://api.kartpunkt.se/errors/live_access_required) (403): This account is not approved for live data: kp_live_ keys are for customers under contract. Use a kp_test_ key. To ask for live access, the account holder writes to hej@kartpunkt.se, or orders a plan at https://kartpunkt.se/konto#plan.
- [`network_unavailable`](https://api.kartpunkt.se/errors/network_unavailable) (404): No network snapshot matches that id or as_of. List the snapshots with GET /v1/networks and send one of their ids, or leave network out for the active one.
- [`network_pruned`](https://api.kartpunkt.se/errors/network_pruned) (410): That network snapshot was pruned: its tables and graph are deleted, so nothing can be answered on it again, as a job or otherwise. Leave network out to answer on the active network, and store that answer's provenance.network.id; GET /v1/networks lists the snapshots that are not pruned.
- [`quota_exceeded`](https://api.kartpunkt.se/errors/quota_exceeded) (429): Request limit or plan quota reached (per minute, per day, or the account plan's monthly quota). Wait the number of seconds in the Retry-After header, then retry; without Retry-After, no wait helps: tell the account holder what this message says.
- [`internal_error`](https://api.kartpunkt.se/errors/internal_error) (500): Something failed on our side. Retry after a few seconds; if it keeps failing, contact hej@kartpunkt.se.
- [`live_data_unavailable`](https://api.kartpunkt.se/errors/live_data_unavailable) (503): Live data is not available yet: it opens when Kartpunkt's import of Lantmäteriet's address register completes. Use a kp_test_ key until then.

## Limits

none

## Metering

A request only: no calculations, no live call, no address limit.
