Skip to documentation content
Dataset APIDocs

End-to-end examples

Apply one release-pinned workflow with curl, Python, or JavaScript.

In this guide
  1. 1Discover
  2. 2Pin
  3. 3Query
  4. 4Propagate metadata
In this guide
  1. 1Discover
  2. 2Pin
  3. 3Query
  4. 4Propagate metadata

The production workflow

  1. 1
    List available datasets
  2. 2
    Select a dataset and inspect its field contract
  3. 3
    Select a complete immutable release
  4. 4
    Query a bounded sample or download the full artifact
  5. 5
    Store release and quality metadata with the import

Native HTTP client examples

cURL
curl -X POST "https://api.datasets.nordicdevhouse.com/v1/datasets/finnish-vehicle-market-listings/query" \
  -H "Authorization: Bearer $DATASET_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-API-Version: 1" \
  -d '{
    "release_id": "dsv-preview-finnish-vehicle-market-listings",
    "filters": { "make": "Toyota" },
    "fields": ["make", "model", "year", "price_eur"],
    "limit": 50
  }'
Python
import os
import requests

base_url = "https://api.datasets.nordicdevhouse.com/v1"
headers = {
    "Authorization": f"Bearer {os.environ['DATASET_API_KEY']}",
    "X-API-Version": "1",
}

catalog = requests.get(f"{base_url}/datasets", headers=headers, timeout=20)
catalog.raise_for_status()
dataset = catalog.json()["data"][0]
release_id = dataset["latest_release"]["id"]

response = requests.post(
    f"{base_url}/datasets/{dataset['id']}/query",
    headers={**headers, "Content-Type": "application/json"},
    json={"release_id": release_id, "limit": 100},
    timeout=30,
)
response.raise_for_status()
print(response.json())
JavaScript
const baseUrl = "https://api.datasets.nordicdevhouse.com/v1";
const headers = {
  Authorization: `Bearer ${process.env.DATASET_API_KEY}`,
  "X-API-Version": "1",
};

const catalogResponse = await fetch(`https://api.datasets.nordicdevhouse.com/v1/datasets`, { headers });
if (!catalogResponse.ok) throw new Error(`Catalog failed: ${catalogResponse.status}`);
const [dataset] = (await catalogResponse.json()).data;

const queryResponse = await fetch(`${baseUrl}/datasets/${dataset.id}/query`, {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify({ release_id: dataset.latest_release.id, limit: 100 }),
});
if (!queryResponse.ok) throw new Error(`Query failed: ${queryResponse.status}`);
console.log(await queryResponse.json());

Run the preview workflow

Discover and query a release
  1. 1
    listDatasets
  2. 2
    getDatasetRelease
  3. 3
    queryDataset

Validate every response boundary

Was this page helpful?