API Développeur

API de recherche coranique par IA

Une API de recherche gratuite basée sur l'IA pour le Noble Coran. Décrivez un thème, une histoire ou une question en langage simple et obtenez des références de sourates et de versets pertinents avec de courtes explications IA au format JSON.

POST
/api/ai-search
Réponse JSON
Gratuit

Aperçu

L'API de recherche IA fait correspondre les requêtes en langage naturel aux sourates et aux versets du Coran en utilisant l'IA sémantique. Elle est conçue pour les intégrateurs qui souhaitent une découverte basée sur des thèmes sans construire leur propre index de recherche ou pipeline LLM.

  • Renvoie une seule réponse JSON que vous pouvez analyser avec n'importe quel client HTTP.
  • Rédige le résumé de pertinence de chaque résultat dans la langue que vous spécifiez, ou détecte automatiquement la langue de la requête (detectedLanguage) si vous l'omettez.
  • Renvoie des numéros de sourates et de versets structurés vers lesquels votre application peut créer des liens.

Veuillez créer un lien de retour

Cette API est gratuite. Si vous l'utilisez pour créer quelque chose, nous vous serions reconnaissants de bien vouloir créer un lien vers OpenQuran.app — par exemple, là où les résultats de recherche apparaissent, ou dans vos crédits ou votre page À propos.

Un exemple de lien que vous pourriez utiliser :

HTML
<a href="https://openquran.app" rel="noopener">Recherche coranique par OpenQuran.app</a>

Nous partageons ce travail librement pour l'amour du Coran. Un petit lien retour aide les autres à découvrir le lecteur et signifie beaucoup pour nous.

Endpoint

Envoyez un corps JSON contenant la phrase de recherche de l'utilisateur. L'API répond avec un seul objet JSON contenant les références correspondantes.

URL
POST https://openquran.app/api/ai-search

En-têtes

En-têteValeurNotes
Content-Typeapplication/jsonRequis

Requête

Le corps de la requête est un objet JSON unique :

Corps JSON
{
  "query": "patience in hardship",
  "language": "en"
}

Contraintes

  • La requête doit contenir entre 2 et 300 caractères après suppression des espaces.
  • language est facultatif : un code ISO 639-1 (ex. en, ar, fr) pour les explications de pertinence. S'il est omis ou invalide, la langue est automatiquement détectée à partir de la requête.
  • Au maximum 12 résultats par requête.
  • Les espaces de début et de fin sont supprimés.

Réponse

Les requêtes réussies renvoient HTTP 200 avec un objet JSON.

Type de contenu : application/json

Exemple de réponse
{
  "ok": true,
  "results": [
    {
      "type": "surah",
      "surah": 2,
      "relevance": "Covers patience through trials."
    },
    {
      "type": "verse",
      "surah": 2,
      "ayah": 255,
      "relevance": "Ayat al-Kursi speaks of steadfastness in faith."
    }
  ],
  "detectedLanguage": "en"
}

Chaque élément des résultats inclut un champ de pertinence. Ce texte est rédigé dans la langue que vous avez demandée, ou dans la langue de requête détectée (detectedLanguage) si aucune langue n'a été fournie — par exemple, une requête en arabe produit des résumés de pertinence en arabe.

Champs de niveau supérieur

ChampTypeNotes
oktrueToujours vrai en cas de succès.
resultsarrayListe ordonnée de références de sourates ou de versets (voir Types de résultats).
detectedLanguagestring | nullCode ISO 639-1 pour la langue détectée à partir de la requête. Les chaînes de pertinence utilisent la langue de votre requête si elle est fournie, sinon cette langue détectée.

Types de résultats

Chaque résultat est un objet étiqueté — soit une sourate entière, soit un seul verset :

SemanticSearchResult
// Whole surah reference
{ "type": "surah", "surah": 2, "relevance": "One sentence explaining the match." }

// Single verse reference
{ "type": "verse", "surah": 2, "ayah": 255, "relevance": "One sentence explaining the match." }
  • surahNuméro de sourate, 1–114.
  • ayahNuméro de verset basé sur 1 dans la sourate (résultats de versets uniquement).
  • relevanceExplication en une phrase de la raison pour laquelle la référence correspond, rédigée dans la langue demandée ou la langue de requête détectée. Nul pour les recherches de référence rapide.

Référence rapide

Les numéros de sourates et les références de versets bruts contournent le modèle d'IA et se résolvent instantanément :

  • 2naviguer vers la Sourate 2
  • 2:255naviguer au verset 255 de la sourate 2

Les requêtes de référence rapide sont renvoyées immédiatement avec la pertinence définie sur null pour chaque résultat.

Limites de débit

Pour maintenir le service gratuit et disponible, chaque adresse IP client est limitée à 10 requêtes toutes les 60 secondes.

  • Les limites sont suivies par adresse IP en utilisant les en-têtes de proxy standard (`X-Forwarded-For`, `X-Real-IP`).
  • En cas de limitation, l'API renvoie HTTP 429 avec un en-tête `Retry-After` (secondes avant de pouvoir réessayer).
  • Le scraping automatisé, les requêtes en masse ou les tentatives de contournement des limites peuvent entraîner un blocage.
429 Too Many Requests
{
  "ok": false,
  "error": "Too many requests. Please slow down."
}

Réponses d'erreur

Les requêtes échouées renvoient un corps JSON avec 'ok' défini sur 'false' et un court message d'erreur.

StatutSignification
400JSON invalide, requête vide ou requête plus courte que la longueur minimale.
429Limite de débit dépassée. Vérifiez l'en-tête 'Retry-After' (secondes).
502Le service de recherche a échoué de manière inattendue.
503La recherche IA n'est pas configurée sur ce déploiement.

Toutes les réponses d'erreur utilisent la forme : 'ok': false, 'error': "message".

Exemples de code

cURL

curl
curl -X POST 'https://openquran.app/api/ai-search' \
  -H 'Content-Type: application/json' \
  -d '{"query":"patience in hardship"}'

JavaScript

JavaScript (fetch)
const response = await fetch('https://openquran.app/api/ai-search', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ query: 'patience in hardship' }),
});

if (!response.ok) {
  const error = await response.json();
  throw new Error(error.error ?? response.statusText);
}

const data = await response.json();
console.log(data.results);

Avertissement

Les résultats sont générés par un modèle d'IA et peuvent être incomplets ou imparfaits. Ce sont des indications pour aider les gens à explorer le Coran — et non des décisions religieuses ou une interprétation faisant autorité. Lisez toujours les versets dans leur contexte complet.

En utilisant cette API, vous acceptez nos Conditions d'utilisation et notre Politique de confidentialité.