Get Site Readiness analysis
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": 123,
"issuesCount": 123,
"optimizationsCount": 123
},
"robotsUrl": "<string>",
"llmsUrl": "<string>",
"sitemapUrl": "<string>",
"robotsAnalysis": {
"status": "<string>",
"finalUrl": "<string>",
"error": "<string>",
"content": "<string>",
"crawlers": {}
},
"llmsAnalysis": {},
"sitemapAnalysis": {},
"lastAnalyzedAt": "<string>",
"generatedLlmsTxt": "<string>"
}Analyze and act
Get Site Readiness analysis
Read the stored Site Readiness analysis for robots.txt, llms.txt, and sitemap.xml.
GET
https://www.qwairy.co
/
api
/
v1
/
brands
/
{brandId}
/
technical-analysis
Get Site Readiness analysis
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": 123,
"issuesCount": 123,
"optimizationsCount": 123
},
"robotsUrl": "<string>",
"llmsUrl": "<string>",
"sitemapUrl": "<string>",
"robotsAnalysis": {
"status": "<string>",
"finalUrl": "<string>",
"error": "<string>",
"content": "<string>",
"crawlers": {}
},
"llmsAnalysis": {},
"sitemapAnalysis": {},
"lastAnalyzedAt": "<string>",
"generatedLlmsTxt": "<string>"
}Returns the latest stored Site Readiness analysis for
robots.txt, llms.txt, and sitemap.xml. The response field remains aiReadiness for API compatibility. This read-only request does not start a crawl.
When no stored analysis exists,
analyzed is false, aiReadiness and the analysis fields are null, and the response includes a message explaining how the product initializes the analysis.string
required
Bearer token. Example:
Bearer qw-api-xxxPath parameters
string
required
The unique identifier of the brand
Site Readiness Score formula
Out of 100:- robots.txt present: +20
- accessible crawlers: +round((Allowed or Partial entries / returned crawler entries) × 40). No crawler entries means 0 points for this component.
- llms.txt present: +20
- sitemap.xml present: +20
Response
boolean
Indicates if the request was successful
object
id, name, domainboolean
false when no analysis has been generated yet (all analysis fields are then null)object
string
URL checked for robots.txt
string
URL checked for llms.txt
string
URL checked for sitemap.xml
object
object
Same shape as
robotsAnalysis (no crawlers)object
Same shape as
robotsAnalysis (no crawlers)string
Last analysis timestamp (ISO 8601) or
nullstring
Generated llms.txt template, or
null if never generatedSynthetic request
curl -X GET "https://www.qwairy.co/api/v1/brands/cm1234567890abcdef/technical-analysis" \
-H "Authorization: Bearer qw-api-your-token-here"
Synthetic response
{
"success": true,
"brand": { "id": "cm1234567890abcdef", "name": "Northstar Labs", "domain": "northstar.example" },
"analyzed": true,
"aiReadiness": {
"score": 80,
"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
}
Errors
| Status | Code | Description |
|---|---|---|
401 | gateway error | Authentication failed |
404 | BRAND_NOT_FOUND | Brand not found or not accessible |
429 | gateway error | Rate limit exceeded; honor Retry-After |

