curl --request GET \
--url https://api.zelinqa.ai/v1/configuration \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.zelinqa.ai/v1/configuration"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.zelinqa.ai/v1/configuration', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"request_id": "req_1005",
"state": "published",
"configuration_version": "cfg_00013",
"draft_revision": null,
"published_at": "2026-08-28T14:02:00Z",
"objective": {
"name": "Qualifier un projet de canapé",
"description": "Comprendre le besoin, le budget et le délai avant de recommander un produit.",
"qualification_level": "balanced",
"max_turns": 10,
"candidates_per_call": 3,
"order_strength": 0.35
},
"sub_objectives": [
{
"id": "so_besoin",
"name": "Besoin et usage",
"order_position": 0,
"completion_role": "blocking"
},
{
"id": "so_budget",
"name": "Budget",
"order_position": 1,
"completion_role": "blocking"
},
{
"id": "so_livraison",
"name": "Délai de livraison",
"order_position": 2,
"completion_role": "contributing"
}
],
"success_informations": [
{
"id": "annual_budget",
"label": "Budget envisagé",
"primary_question_id": "q_budget",
"schema": {
"type": "number",
"minimum": 0
}
},
{
"id": "delivery_window",
"label": "Fenêtre de livraison souhaitée",
"primary_question_id": "q_delai",
"schema": {
"type": "string",
"enum": [
"dans_le_mois",
"trois_mois",
"plus_tard"
]
}
}
],
"questions": [
{
"id": "q_style",
"text": "Quel style de canapé recherchez-vous ?",
"type": "single_choice",
"sub_objective_id": "so_besoin",
"active": true,
"choices": [
{
"id": "choice_contemporain",
"label": "Contemporain"
},
{
"id": "choice_scandinave",
"label": "Scandinave"
},
{
"id": "choice_classique",
"label": "Classique"
}
]
},
{
"id": "q_budget",
"text": "Quel budget souhaitez-vous consacrer au canapé ?",
"type": "open",
"sub_objective_id": "so_budget",
"active": true,
"choices": []
},
{
"id": "q_delai",
"text": "À quelle période souhaitez-vous être livré ?",
"type": "single_choice",
"sub_objective_id": "so_livraison",
"active": true,
"choices": [
{
"id": "choice_1m",
"label": "Dans le mois",
"maps_to_value": "dans_le_mois"
},
{
"id": "choice_3m",
"label": "Dans les trois mois",
"maps_to_value": "trois_mois"
},
{
"id": "choice_later",
"label": "Plus tard",
"maps_to_value": "plus_tard"
}
]
}
]
}{
"code": "unauthorized",
"message": "Clé d'intégration absente ou invalide.",
"request_id": "req_9000",
"details": {}
}{
"code": "insufficient_scope",
"message": "Cette clé ne permet pas de publier une configuration.",
"request_id": "req_9001",
"details": {
"required_scopes": [
"configuration:publish"
],
"granted_scopes": [
"configuration:read",
"configuration:write"
]
}
}{
"code": "unknown_configuration",
"message": "Aucun brouillon n'existe pour cette configuration.",
"request_id": "req_9008",
"details": {
"state": "draft"
}
}Lire la configuration éditoriale
Renvoie les quatre objets configurés dans NBQ Studio : objectif, sous-objectifs, informations de réussite et questions.
state=published (défaut) renvoie la configuration active et exige
configuration:read. state=draft renvoie le brouillon en cours d’édition
et exige configuration:write.
Cette route n’expose jamais les internes de compilation : ni prototypes de
réponse, ni graphe R, ni matrices R_k ou G, ni artefact.
curl --request GET \
--url https://api.zelinqa.ai/v1/configuration \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.zelinqa.ai/v1/configuration"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.zelinqa.ai/v1/configuration', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"request_id": "req_1005",
"state": "published",
"configuration_version": "cfg_00013",
"draft_revision": null,
"published_at": "2026-08-28T14:02:00Z",
"objective": {
"name": "Qualifier un projet de canapé",
"description": "Comprendre le besoin, le budget et le délai avant de recommander un produit.",
"qualification_level": "balanced",
"max_turns": 10,
"candidates_per_call": 3,
"order_strength": 0.35
},
"sub_objectives": [
{
"id": "so_besoin",
"name": "Besoin et usage",
"order_position": 0,
"completion_role": "blocking"
},
{
"id": "so_budget",
"name": "Budget",
"order_position": 1,
"completion_role": "blocking"
},
{
"id": "so_livraison",
"name": "Délai de livraison",
"order_position": 2,
"completion_role": "contributing"
}
],
"success_informations": [
{
"id": "annual_budget",
"label": "Budget envisagé",
"primary_question_id": "q_budget",
"schema": {
"type": "number",
"minimum": 0
}
},
{
"id": "delivery_window",
"label": "Fenêtre de livraison souhaitée",
"primary_question_id": "q_delai",
"schema": {
"type": "string",
"enum": [
"dans_le_mois",
"trois_mois",
"plus_tard"
]
}
}
],
"questions": [
{
"id": "q_style",
"text": "Quel style de canapé recherchez-vous ?",
"type": "single_choice",
"sub_objective_id": "so_besoin",
"active": true,
"choices": [
{
"id": "choice_contemporain",
"label": "Contemporain"
},
{
"id": "choice_scandinave",
"label": "Scandinave"
},
{
"id": "choice_classique",
"label": "Classique"
}
]
},
{
"id": "q_budget",
"text": "Quel budget souhaitez-vous consacrer au canapé ?",
"type": "open",
"sub_objective_id": "so_budget",
"active": true,
"choices": []
},
{
"id": "q_delai",
"text": "À quelle période souhaitez-vous être livré ?",
"type": "single_choice",
"sub_objective_id": "so_livraison",
"active": true,
"choices": [
{
"id": "choice_1m",
"label": "Dans le mois",
"maps_to_value": "dans_le_mois"
},
{
"id": "choice_3m",
"label": "Dans les trois mois",
"maps_to_value": "trois_mois"
},
{
"id": "choice_later",
"label": "Plus tard",
"maps_to_value": "plus_tard"
}
]
}
]
}{
"code": "unauthorized",
"message": "Clé d'intégration absente ou invalide.",
"request_id": "req_9000",
"details": {}
}{
"code": "insufficient_scope",
"message": "Cette clé ne permet pas de publier une configuration.",
"request_id": "req_9001",
"details": {
"required_scopes": [
"configuration:publish"
],
"granted_scopes": [
"configuration:read",
"configuration:write"
]
}
}{
"code": "unknown_configuration",
"message": "Aucun brouillon n'existe pour cette configuration.",
"request_id": "req_9008",
"details": {
"state": "draft"
}
}Autorisations
Clé d'intégration préfixée nbq_live_, envoyée dans
Authorization: Bearer nbq_live_… et résolue par l'authorizer Lambda de
l'API Gateway publique. L'authorizer valide la clé, puis injecte en amont
du service les headers de contexte x-tenant-id, x-nbq-id et x-scopes —
x-scopes étant la liste des scopes de la clé séparés par des virgules,
par exemple runtime,configuration:read.
Ces headers ne sont jamais acceptés depuis le client : toute valeur entrante
est écrasée. Une clé absente ou invalide produit 401 au niveau de la
passerelle ; une clé valide sans le scope requis produit 403 avec le code
insufficient_scope.
Paramètres de requête
published exige configuration:read. draft exige
configuration:write : lire un brouillon revient à voir du travail
non publié, ce qui relève de l'édition plutôt que de la consultation.
Ce contrôle est dynamique, appliqué par le service, pas par
l'authorizer. L'authorizer de la passerelle décide à partir de la
méthode et du chemin ; il ne voit pas les paramètres de requête et ne
peut donc pas distinguer ?state=draft de ?state=published. Il
n'exige ici que configuration:read, et le service refuse ensuite
avec 403 insufficient_scope si state=draft est demandé sans
configuration:write.
published, draft Réponse
Configuration demandée.
Les quatre objets visibles dans NBQ Studio. Ni prototypes de réponse, ni graphe de relations, ni matrices, ni artefact compilé n'apparaissent ici : ce sont des internes de compilation.
published, draft Champs volontairement absents en V1 : min_turns_before_auto_complete,
retention_mode, business_weight, et toute version de corpus choisie par
le client.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Renseignée pour published, nulle pour un brouillon jamais publié.
Renseignée pour draft, à passer en expected_draft_revision lors de la publication.