Obtenir l’analyse de préparation du site
curl --request GET \
--url https://www.qwairy.co/api/v1/brands/{brandId}/technical-analysis \
--header 'Authorization: <authorization>'import requests
url = "https://www.qwairy.co/api/v1/brands/{brandId}/technical-analysis"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://www.qwairy.co/api/v1/brands/{brandId}/technical-analysis', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"brand": {},
"analyzed": true,
"aiReadiness": {
"score": {},
"isComplete": true,
"issuesCount": 123,
"optimizationsCount": 123
},
"robotsUrl": "<string>",
"llmsUrl": "<string>",
"sitemapUrl": "<string>",
"robotsAnalysis": {
"status": "<string>",
"verificationIncomplete": true,
"finalUrl": "<string>",
"error": "<string>",
"content": "<string>",
"crawlers": {}
},
"llmsAnalysis": {},
"sitemapAnalysis": {},
"lastAnalyzedAt": "<string>",
"generatedLlmsTxt": "<string>"
}Analyse et action
Obtenir l’analyse de préparation du site
Lisez l’analyse enregistrée de préparation du site pour robots.txt, llms.txt et sitemap.xml.
GET
https://www.qwairy.co
/
api
/
v1
/
brands
/
{brandId}
/
technical-analysis
Obtenir l’analyse de préparation du site
curl --request GET \
--url https://www.qwairy.co/api/v1/brands/{brandId}/technical-analysis \
--header 'Authorization: <authorization>'import requests
url = "https://www.qwairy.co/api/v1/brands/{brandId}/technical-analysis"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://www.qwairy.co/api/v1/brands/{brandId}/technical-analysis', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"brand": {},
"analyzed": true,
"aiReadiness": {
"score": {},
"isComplete": true,
"issuesCount": 123,
"optimizationsCount": 123
},
"robotsUrl": "<string>",
"llmsUrl": "<string>",
"sitemapUrl": "<string>",
"robotsAnalysis": {
"status": "<string>",
"verificationIncomplete": true,
"finalUrl": "<string>",
"error": "<string>",
"content": "<string>",
"crawlers": {}
},
"llmsAnalysis": {},
"sitemapAnalysis": {},
"lastAnalyzedAt": "<string>",
"generatedLlmsTxt": "<string>"
}Renvoie la dernière analyse enregistrée de préparation du site pour
robots.txt, llms.txt et sitemap.xml. Le champ de réponse reste aiReadiness par compatibilité. Cette requête en lecture seule ne lance pas d’exploration.
Sans analyse enregistrée,
analyzed vaut false, aiReadiness et les champs d’analyse valent null, et la réponse inclut un message expliquant comment le produit initialise l’analyse.string
requis
Jeton bearer. Exemple :
Bearer qw-api-xxxParamètres de chemin
string
requis
L’identifiant unique de la marque
Formule du score de préparation du site
Sur 100 :- robots.txt présent : +20
- crawlers autorisés : +round((entrées Allowed ou Partial / entrées de crawlers renvoyées) × 40). Sans entrée de crawler, ce critère vaut 0 point.
- llms.txt présent : +20
- sitemap.xml présent : +20
Réponse
boolean
Indique si la requête a réussi
object
id, name, domainboolean
false tant qu’aucune analyse n’a été générée (tous les champs d’analyse valent alors null)object
Afficher AI Readiness
Afficher AI Readiness
string
URL contrôlée pour robots.txt
string
URL contrôlée pour llms.txt
string
URL contrôlée pour sitemap.xml
object
Afficher Analyse du fichier
Afficher Analyse du fichier
string
present, missing, error ou invalidboolean
true lorsqu’une limite de taille ou une réponse partielle a empêché la vérification complète de ce fichierstring
URL finale après redirections
string
Message d’erreur lorsque le statut est
errorstring
Contenu du fichier récupéré
object
Table par crawler
{ status: "Allowed" | "Disallowed" | "Partial", reason } (robots.txt uniquement)object
Même forme que
robotsAnalysis (sans crawlers)object
Même forme que
robotsAnalysis (sans crawlers)string
Horodatage de la dernière analyse (ISO 8601) ou
nullstring
Modèle de llms.txt généré, ou
null s’il n’a jamais été généréExemple de requête
curl -X GET "https://www.qwairy.co/api/v1/brands/cm1234567890abcdef/technical-analysis" \
-H "Authorization: Bearer qw-api-your-token-here"
Exemple de réponse
{
"success": true,
"brand": { "id": "cm1234567890abcdef", "name": "Northstar Labs", "domain": "northstar.example" },
"analyzed": true,
"aiReadiness": {
"score": 80,
"isComplete": true,
"issuesCount": 0,
"optimizationsCount": 1
},
"robotsUrl": "https://northstar.example/robots.txt",
"llmsUrl": "https://northstar.example/llms.txt",
"sitemapUrl": "https://northstar.example/sitemap.xml",
"robotsAnalysis": {
"status": "present",
"finalUrl": "https://northstar.example/robots.txt",
"crawlers": {
"GPTBot": { "status": "Allowed", "reason": "No matching disallow rule" },
"ClaudeBot": { "status": "Allowed", "reason": "No matching disallow rule" }
}
},
"llmsAnalysis": { "status": "missing" },
"sitemapAnalysis": { "status": "present", "finalUrl": "https://northstar.example/sitemap.xml" },
"lastAnalyzedAt": "2026-05-12T08:30:00.000Z",
"generatedLlmsTxt": null
}
Erreurs
| Statut | Code | Description |
|---|---|---|
401 | erreur de passerelle | Échec de l’authentification |
404 | BRAND_NOT_FOUND | Marque introuvable ou inaccessible |
429 | erreur de passerelle | Limite de débit dépassée ; respectez Retry-After |

