Prompt evolution
curl --request GET \
--url https://www.qwairy.co/api/v1/brands/{brandId}/prompts/{promptId}/evolution \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.qwairy.co/api/v1/brands/{brandId}/prompts/{promptId}/evolution"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.qwairy.co/api/v1/brands/{brandId}/prompts/{promptId}/evolution', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Prompts
Prompt evolution
Track how a prompt’s metrics change over time.
GET
https://www.qwairy.co
/
api
/
v1
/
brands
/
{brandId}
/
prompts
/
{promptId}
/
evolution
Prompt evolution
curl --request GET \
--url https://www.qwairy.co/api/v1/brands/{brandId}/prompts/{promptId}/evolution \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.qwairy.co/api/v1/brands/{brandId}/prompts/{promptId}/evolution"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.qwairy.co/api/v1/brands/{brandId}/prompts/{promptId}/evolution', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Returns daily response-level metrics for one prompt. Mention Rate and Source Rate use eligible SELF-or-DIRECT answer denominators.
Path parameters
string
required
The unique identifier of the brand
string
required
The unique identifier of the prompt
Query parameters
number
Number of days to include. If not specified, returns all data.
string
Start date in
YYYY-MM-DD. Provide it with endDate; a lone boundary is currently ignored. Choose either period or the complete date pair.string
End date in
YYYY-MM-DD. Provide it with startDate; a lone boundary is currently ignored. Do not combine the complete date pair with period.string
Filter by AI provider. Supports comma-separated multi-select (e.g.,
chatgpt,claude).string
Filter by tag ID. Supports comma-separated multi-select (e.g.,
id1,id2).Synthetic request
curl "https://www.qwairy.co/api/v1/brands/YOUR_BRAND_ID/prompts/PROMPT_ID/evolution?period=7" \
-H "Authorization: Bearer $QWAIRY_API_TOKEN"
Synthetic response
{
"success": true,
"prompt": {
"id": "prompt_01",
"text": "Which analytics platforms support warehouse exports?"
},
"evolution": [
{
"date": "2026-07-01",
"answers": 5,
"mentionRate": 80.0,
"sourceRate": 60.0,
"avgSentiment": 78.5
},
{
"date": "2026-07-02",
"answers": 8,
"mentionRate": 75.0,
"sourceRate": 62.5,
"avgSentiment": 80.1
}
]
}
Errors
| Status | Code | Description |
|---|---|---|
| 400 | INVALID_PARAMETER | Invalid query parameter |
| 401 | gateway error | Missing or invalid API token |
| 404 | BRAND_NOT_FOUND | Brand doesn’t exist or not accessible |
| 404 | PROMPT_NOT_FOUND | Prompt doesn’t exist |
| 429 | gateway error | Rate limit exceeded; honor Retry-After |
mentionRate is answers with a SELF mention divided by answers with a SELF or DIRECT mention. sourceRate applies the same response-level denominator rule to citations. avgSentiment is on the 0 to 100 scale and can be null. See Rate limits for retry behavior.
