Getting started with Technis API
Quick start
The Technis API gives you programmatic access to your sites, zones, passages, devices, and the metrics they produce.
This guide walks you through your first authenticated request and the response shape you should expect. For endpoint reference and request examples, see Examples.
Need to better understand your physical spaces? Technis is a spatial data platform that helps analyze footfall traffic, air quality and energy consumption. Get reliable indicators dedicated to your activity.
Learn more at technis.com →
Before you start
You will need:
- A Technis account with permission to manage API keys in the target organization.
- An HTTP client. The examples below use curl, but anything that can set a header and parse JSON will work
Step 1: Create an API Key
API keys live on the organization, not on your personal user account, so any key you create can be used by your services until it is revoked.
- Sign in to Technis account and go to Settings > Organization page.
- Scroll down to the API keys section. If you do not see it, you do not have permission to manage keys — ask an admin in your organization.
- Click Create new key, give the key a descriptive name (for example, analytics-pipeline-prod), and confirm.
- Copy the generated key and paste it into your application's secret configuration. The key will be shown only once. If you lose it, revoke the key and create a new one.
Treat the key like a password: never commit it to source control, never paste it into a shared channel, and store it in your secrets manager of choice.
Step 2: Make your first request
Every request must include an x-api-key header containing your key. The simplest call is a GET against the list of sites you can access:
curl https://api.technis.com/v3/sites \
-H "x-api-key: $TECHNIS_API_KEY"A successful response looks like this:
{
"data": [
{
"id": "1",
"name": "Lausanne flagship",
"category": "store",
"address": {
"street": "Avenue de la Gare 4",
"postCode": "1005",
"city": "Lausanne",
"country": "Switzerland"
},
"timezone": "Europe/Zurich",
"organizationId": "5",
"archived": false,
"createdAt": "2026-12-01T11:23:43",
"updatedAt": "2026-12-01T11:23:43"
}
],
"meta": {
"requestId": "550e8400-e29b-41d4-a716-446655440000",
"serverTag": "3.0.0",
"pagination": {
"limit": 10,
"offset": 0,
"total": 1,
"hasPrevious": false,
"hasNext": false
},
"warnings": [],
"errors": []
}
}If you got a 401, double-check that the x-api-key header is present and that the key has not been revoked.
Step 3: Understand response envelope
Every endpoint in the API responds with same top-level shape:
{
"data": {/* what you asked for */},
"meta": {/* everything that describes data or errors and warnings */}
}Meta fields are also worth keeping around for support tickets:
meta.requestId: Unique identifier for this request. Include it when you contact support.
Error reporting
Errors that the server can recover from (for example, an invalid pagination value) are returned inside meta.errors with an HTTP status that matches the most severe error. Each entry has a stable machine-readable code, a human-readable message, and optionally a details object listing the offending fields:
{
"data": null,
"meta": {
"requestId": "550e8400-e29b-41d4-a716-446655440000",
"serverTag": "0.0.1",
"warnings": [],
"errors": [
{
"code": "INVALID_PAGINATION_PARAMS",
"message": "Pagination params have the wrong type",
"details": { "limit": "limit must be a number" }
}
]
}
}Switch on code rather than parsing the message: codes are part of the contract, messages are not.
Updated 17 days ago