Getting started¶
1. Get an API key¶
Every /v1 route requires an API key. Create a free account on the landing page
(/signup) and mint a key from your dashboard (/account) — the
free plan includes 10k calls a month across up to 5 active keys, and the dashboard shows
your usage live (per day and against your quota). Operators can also mint keys on any plan from
the CLI:
The plaintext key (rok_…) is shown once at creation — store it somewhere safe. Only a
hash is kept server-side. Lost a key? Revoke it in the dashboard and mint a new one.
2. Make your first request¶
import httpx
API_KEY = "rok_..."
BASE = "https://api.canovix.ro"
client = httpx.Client(base_url=BASE, headers={"Authorization": f"Bearer {API_KEY}"})
page = client.get("/v1/transport/vehicle_registry", params={"limit": 5}).json()
for row in page["data"]:
print(row["county"], row["manufacturer"], row["vehicle_count"])
print(f'{page["pagination"]["total"]:,} rows total')
const API_KEY = "rok_...";
const BASE = "https://api.canovix.ro";
const res = await fetch(`${BASE}/v1/transport/vehicle_registry?limit=5`, {
headers: { Authorization: `Bearer ${API_KEY}` },
});
const page = await res.json();
for (const row of page.data) {
console.log(row.county, row.manufacturer, row.vehicle_count);
}
console.log(`${page.pagination.total} rows total`);
Every list response uses the same envelope:
{
"data": [ ... ],
"pagination": { "total": 382667, "count": 5, "limit": 5, "offset": 0, "has_next": true, "next_offset": 5 },
"meta": { "api_version": "v1", "dataset": "vehicle_registry", "domain": "transport", "last_updated": "...", "generated_at": "..." },
"links": { "self": "...", "next": "..." }
}
3. Find what's available¶
# All published datasets
curl -H "Authorization: Bearer $API_KEY" "https://api.canovix.ro/v1/datasets"
# Everything about one dataset: columns, types, row count, sample row, provenance
curl -H "Authorization: Bearer $API_KEY" "https://api.canovix.ro/v1/datasets/vehicle_registry"
# Full-text search across the catalog (diacritic-insensitive)
curl -H "Authorization: Bearer $API_KEY" "https://api.canovix.ro/v1/search?q=sanatate"
4. Explore interactively¶
- Swagger UI at
/docs— every dataset endpoint with its real response schema, no key needed to browse. -
Postman — generate the OpenAPI file and import it (File → Import):
Set the imported collection's Authorization to Bearer Token with your key; every request inherits it.
Next steps¶
- Querying & filtering — operators, sorting, field selection.
- Pagination — when to use offset pages vs cursors.
- Bulk export — pull a whole dataset as CSV/NDJSON.
- Authentication & limits — plans, rate limits, quotas.