Product availability
Synthetic datasets are currently offered as scoped pilots and custom deliveries. The pilot starts from one immutable observed release, one intended use, a target volume, required fields, excluded identifiers, and jointly agreed acceptance criteria.
The API contract documents the intended delivery surface. Production access, thresholds, and recurring delivery are enabled only when they are included in the engagement scope.
Pilot journey
- 1State the decision, test, or analysis the data must support
- 2Pin the observed dataset and exact source release
- 3Agree the target row count, fields, constraints, and excluded identifiers
- 4Agree fidelity and privacy review criteria for the intended use
- 5Review the report and resolve any pending thresholds
- 6Publish for API or file delivery only after explicit acceptance
Illustrative vehicle-market scope
| Item | Illustrative value | Status |
|---|---|---|
| Observed reference | dsv-preview-20260813 · 18,420 rows | Available reference |
| Target | 100,000 rows for testing and market analytics | Pilot target |
| Fields | make, model, year, price, location | In scope |
| Fidelity | Schema, distributions, coverage, relationships | Threshold pending |
| Privacy | Direct identifiers and source-row similarity | Review pending |
| Delivery | Dataset API or file | Not published |
Read the review before using the data
Fidelity is always relative to an intended use. A dataset that is adequate for pagination testing may not be adequate for market forecasting. Review field distributions, category coverage, relationships, missingness, rare combinations, and any domain-specific tests.
Privacy review must cover direct identifiers, similarity to source rows, rare records, and the impact of the intended use. Record the source release and review version with every downstream import.
Treat the dataset label as the delivery contract
| Label field | What to verify |
|---|---|
| Publication status | Accepted for the declared use; no required review remains pending |
| Observed source release | Exact immutable release used as the comparison point |
| Intended and approved uses | Your integration stays inside the reviewed purpose |
| Prohibited uses | Downstream teams cannot silently expand the purpose |
| Fidelity and privacy review | Review version, thresholds, result, and unresolved limitations |
| Fields and volume | Delivered schema and row count match the accepted scope |
| Known limitations | Rare combinations, tails, missingness, and domain caveats remain visible |
| Validity | Which newer label or release supersedes this one |
Use the standard released-dataset surface
After acceptance, a synthetic delivery is consumed through the same immutable dataset and release resources as an observed delivery. The delivery path does not require the customer to operate the synthesis process. Use the IDs supplied in the dashboard or handoff record; the example IDs below are placeholders until a release is accepted.
| Task | Operation | Why |
|---|---|---|
| Inspect dataset and label context | GET /v1/datasets/{dataset_id} | Confirm identity, fields, latest accepted release, and intended use |
| Inspect one immutable release | GET /v1/datasets/{dataset_id}/releases/{release_id} | Confirm quality, lineage, review state, and release metadata |
| Read a bounded sample | POST /v1/datasets/{dataset_id}/query | Validate integration behavior without downloading the complete artifact |
| Download the complete artifact | GET /v1/datasets/{dataset_id}/releases/{release_id}/download | Stream JSONL, CSV, or Parquet after acceptance |
Inspect first, then stream the accepted artifact
DATASET_ID="synthetic-finnish-vehicle-market"
RELEASE_ID="replace-with-accepted-release-id"
# Inspect the accepted release and its metadata first.
curl --fail --location \
"https://api.datasets.nordicdevhouse.com/v1/datasets/$DATASET_ID/releases/$RELEASE_ID" \
-H "Authorization: Bearer $DATASET_API_KEY" \
-H "X-API-Version: 1"
# Download only after the release status and dataset label are accepted.
curl --fail --location \
"https://api.datasets.nordicdevhouse.com/v1/datasets/$DATASET_ID/releases/$RELEASE_ID/download?format=parquet" \
-H "Authorization: Bearer $DATASET_API_KEY" \
-H "X-API-Version: 1" \
--output "$RELEASE_ID.parquet"import os
from pathlib import Path
import requests
base_url = "https://api.datasets.nordicdevhouse.com/v1"
dataset_id = os.environ["DATASET_ID"]
release_id = os.environ["RELEASE_ID"]
headers = {
"Authorization": f"Bearer {os.environ['DATASET_API_KEY']}",
"X-API-Version": "1",
}
release = requests.get(
f"{base_url}/datasets/{dataset_id}/releases/{release_id}",
headers=headers,
timeout=20,
)
release.raise_for_status()
manifest = release.json()
if manifest.get("quality_status") != "complete":
raise RuntimeError("Release is not accepted for delivery")
target = Path(f"{release_id}.jsonl.part")
with requests.get(
f"{base_url}/datasets/{dataset_id}/releases/{release_id}/download?format=jsonl",
headers=headers,
timeout=120,
stream=True,
) as response:
response.raise_for_status()
with target.open("wb") as output:
for chunk in response.iter_content(chunk_size=1024 * 1024):
if chunk:
output.write(chunk)
target.replace(target.with_suffix(""))import { createWriteStream } from "node:fs";
import { pipeline } from "node:stream/promises";
import { Readable } from "node:stream";
const baseUrl = "https://api.datasets.nordicdevhouse.com/v1";
const { DATASET_API_KEY, DATASET_ID, RELEASE_ID } = process.env;
const headers = {
Authorization: "Bearer " + DATASET_API_KEY,
"X-API-Version": "1",
};
const releaseUrl = baseUrl + "/datasets/" + DATASET_ID + "/releases/" + RELEASE_ID;
const releaseResponse = await fetch(releaseUrl, { headers });
if (!releaseResponse.ok) throw new Error("Release lookup failed: " + releaseResponse.status);
const release = await releaseResponse.json();
if (release.quality_status !== "complete") throw new Error("Release is not accepted for delivery");
const download = await fetch(releaseUrl + "/download?format=jsonl", { headers });
if (!download.ok || !download.body) throw new Error("Download failed: " + download.status);
await pipeline(Readable.fromWeb(download.body), createWriteStream(RELEASE_ID + ".jsonl"));- 1Copy the dataset and accepted release IDs from the dashboard or delivery handoff
- 2Fetch the release metadata and compare it with the approved dataset label
- 3Stop if quality or a required review is pending
- 4Stream the requested format into temporary storage
- 5Compute and store your own checksum with the release and label versions
- 6Promote the artifact atomically and retain lineage in downstream metadata