Chargement...
Chargement...
Public OpenAPI 3.1 specification — endpoints, schemas, examples.
Every request must include your API key. Two accepted headers:
# Option 1 — X-API-Key header
curl https://www.tevaxia.lu/api/v1/estimation \
-H "X-API-Key: tvx_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"commune":"Luxembourg","surface":90}'
# Option 2 — Authorization Bearer
curl https://www.tevaxia.lu/api/v1/estimation \
-H "Authorization: Bearer tvx_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"commune":"Luxembourg","surface":90}'Manage your API keys from /profil/api (create, revoke, 30-day usage tracking).
This public key lets you try endpoints available to the Free tier. Its quota is shared by all users on the same server instance: 10 requests per minute and 200 per 24-hour window.
tvx_sandbox_public_demo_key_read_onlySandboxAvailability depends on the remaining quota and service. This key cannot export invoices or import PMS observations. For individual use, create a key at /profil/api; no separate monthly capacity is guaranteed.
Two AI endpoints accessible with your tevaxia API key (standard rate-limit tier):
# POST /api/v1/ai/analyze
curl https://www.tevaxia.lu/api/v1/ai/analyze \
-H "X-API-Key: tvx_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"context": "Commune: Luxembourg\nSurface: 90m²\nEstimation: 950000 EUR",
"prompt": "Comment this estimate vs market."
}'
# → { "text": "...", "model": "gemini-3.6-flash", "provider": "gemini", "remaining": -1 }
# POST /api/v1/ai/chat
curl https://www.tevaxia.lu/api/v1/ai/chat \
-H "X-API-Key: tvx_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{ "role": "user", "content": "How is LU 3% VAT computed?" }
]
}'
# → { "text": "...", "model": "...", "provider": "...", "remaining": -1 }The server tries the free providers in order: Google Gemini 3.6 Flash, then Groq and Cerebras if their keys are configured — it automatically moves to the next one on failure. If you configured a BYOK key in your profile, it takes priority. Limit: your API key rate-limit tier (Free: 10/min, 200/day).
Single and batch estimates use the same contract: freehold apartments, optional parameters and defaults documented in OpenAPI. Examples use explicit assumptions to adapt to the property. Unknown fields, text booleans and unrecognised adjustment keys are rejected. A batch may partially succeed: check every result. The method uses a municipal reference and statistically unvalidated adjustments, without TEGOVA or CRR certification.
const response = await fetch(
"https://www.tevaxia.lu/api/v1/estimation/batch",
{
method: "POST",
headers: {
"X-API-Key": process.env.TEVAXIA_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
items: myPortfolio.map((asset) => ({
commune: asset.commune,
surface: asset.surface,
typeBien: "appartement",
estNeuf: false,
parking: false,
nbChambres: 0,
classeEnergie: "D",
etage: "adjEtage2e3eRef",
etat: "adjEtatBonRef",
exterieur: "adjExtBalconRef",
})),
}),
}
);
if (!response.ok) throw new Error(await response.text());
const { results, succeeded, failed } = await response.json();
console.log(`${succeeded}/${results.length} assets estimated`);