Référence API
Tous les points d'accès API utilisent le format JSON. L'authentification utilise une clé API Bearer aqn_. Voir Authentification pour plus de détails.
URL de base : https://your-instance/api/
Authentification
Incluez votre clé API dans toutes les requêtes :
Authorization: Bearer aqn_your_api_key
Les clés API sont créées et gérées depuis la page Clés API (/keys/). Les clés à accès complet voient toutes les collections ; les clés limitées ne voient que les collections autorisées.
Collections
Lister les collections
GET /api/collections/
Renvoie les collections visibles par l'utilisateur authentifié (possédées + publiques souscrites).
Réponse : 200 OK
[
{
"uuid": "a1b2c3...",
"name": "Project Docs",
"slug": "project-docs",
"description": "Technical documentation",
"document_count": 15,
"total_chunks": 342,
"is_public": false,
"is_subscribed": false,
"created_at": "2026-03-01T10:00:00Z"
}
]
Obtenir une collection
GET /api/collections/{uuid}/
Réponse : 200 OK — Objet Collection
Documents
Lister les documents
GET /api/documents/
Renvoie les documents de toutes les collections visibles.
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
tag |
string | Filtrer par tag (insensible à la casse) |
collection |
string | Filtrer par identifiant de collection |
Réponse : 200 OK
[
{
"uuid": "d4e5f6...",
"title": "Annual Report 2025",
"source_type": "pdf",
"status": "indexed",
"tags": ["finance", "annual"],
"chunks_count": 24,
"original_filename": "report-2025.pdf",
"file_size": 102400,
"collection_name": "Project Docs",
"collection_slug": "project-docs",
"created_at": "2026-03-01T10:00:00Z"
}
]
Obtenir le détail d'un document
GET /api/documents/{uuid}/
Réponse : 200 OK — Inclut content_text, error_message et le tableau chunks.
{
"uuid": "d4e5f6...",
"title": "Annual Report 2025",
"source_type": "pdf",
"status": "indexed",
"tags": ["finance", "annual"],
"chunks_count": 24,
"original_filename": "report-2025.pdf",
"file_size": 102400,
"content_text": "Full extracted text...",
"error_message": "",
"collection_name": "Project Docs",
"collection_slug": "project-docs",
"created_at": "2026-03-01T10:00:00Z",
"chunks": [
{
"id": "uuid",
"content": "Chunk text content...",
"chunk_index": 0,
"embedding_model": "text-embedding-3-small"
}
]
}
Rechercher
Recherche hybride
POST /api/search/
Corps de la requête :
{
"query": "payment terms",
"collection": "project-docs",
"limit": 5
}
| Champ | Type | Requis | Par défaut |
|---|---|---|---|
query |
string | Oui | — |
collection |
slug | Non | Toutes les collections visibles |
limit |
int | Non | 5 (max: 50) |
Réponse : 200 OK
{
"query": "payment terms",
"count": 3,
"results": [
{
"content": "Matching chunk text...",
"title": "Contract Document",
"document_id": "uuid",
"collection_name": "Legal",
"tags": ["contract"],
"score": 0.89
}
]
}
Abonnements aux collections
S'abonner à une collection publique
POST /api/collections/{slug}/subscribe/
Réponse : 200 OK
{
"status": "subscribed",
"collection": "project-docs"
}
Erreurs :
404— Collection introuvable ou non publique
Se désabonner d'une collection
DELETE /api/collections/{slug}/subscribe/
Réponse : 200 OK
{
"status": "unsubscribed",
"collection": "project-docs"
}
Erreurs :
404— Abonnement introuvable
Gestion des clés API (KaaS)
Les clés API KaaS permettent aux développeurs externes de rechercher dans vos collections. Elles sont gérées via la page Clés API de l'interface web ou via l'API REST.
Lister / Créer des clés API
GET /api/keys/
POST /api/keys/
Corps de la requête de création :
{
"name": "Acme Corp Key"
}
Réponse de création : 201 Created
{
"uuid": "key-uuid",
"name": "Acme Corp Key",
"prefix": "aqn_abc123...",
"key": "aqn_full_key_here",
"is_active": true,
"created_at": "2026-03-01T10:00:00Z"
}
Le champ key n'est renvoyé qu'au moment de la création.
Rotation de la clé API
POST /api/keys/{uuid}/rotate/
Révoque la clé API existante et en crée une nouvelle avec le même nom et les mêmes autorisations d'accès aux collections. L'ancienne clé est immédiatement désactivée.
Réponse : 201 Created
{
"uuid": "new-key-uuid",
"name": "Acme Corp Key",
"prefix": "aqn_abc123...",
"key": "aqn_new_full_key_here",
"is_active": true,
"is_full_access": false,
"created_at": "2026-03-13T10:00:00Z"
}
Le champ key n'est renvoyé qu'au moment de la rotation. Conservez-le en lieu sûr — il ne pourra pas être récupéré ultérieurement.
Erreurs :
404— Clé API introuvable ou n'appartenant pas à l'utilisateur authentifié
Accorder / Révoquer l'accès à une collection
POST /api/keys/{uuid}/collections/
DELETE /api/keys/{uuid}/collections/{collection-slug}/
Corps de la requête d'autorisation :
{
"collection": "collection-slug"
}
Statistiques d'utilisation
GET /api/keys/usage/?days=30
GET /api/keys/{uuid}/usage/
Point d'accès MCP
Le serveur MCP est accessible à /mcp via le transport Streamable HTTP.
Authentification : Authorization: Bearer aqn_<key>
Outils disponibles :
| Outil | Description |
|---|---|
search_documents |
Recherche hybride texte + vecteur avec filtre de collection et limite de résultats optionnels |
list_collections |
Lister toutes les collections avec le nombre de documents et les descriptions |
get_document_info |
Obtenir les détails complets d'un document et ses fragments par UUID |
search_by_tag |
Trouver tous les documents avec un tag spécifique |
Gestion des erreurs
Codes de statut HTTP
| Code | Signification |
|---|---|
200 |
Succès |
201 |
Créée |
400 |
Requête incorrecte (erreur de validation) |
401 |
Non autorisé (jeton ou clé API manquant ou invalide) |
404 |
Ressource introuvable |
429 |
Limite de débit atteinte |
500 |
Erreur du serveur |
Format de réponse d'erreur
Toutes les erreurs utilisent une enveloppe cohérente avec un champ error :
{
"error": "Error message describing what went wrong."
}
Les erreurs de validation incluent un objet fields avec les détails par champ :
{
"error": "Validation failed.",
"fields": {
"name": ["This field is required."],
"collection": ["Collection not found."]
}
}