List content
curl --request GET \
--url https://www.qwairy.co/api/v1/brands/{brandId}/content \
--header 'Authorization: <authorization>'import requests
url = "https://www.qwairy.co/api/v1/brands/{brandId}/content"
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}/content', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"pagination": {
"total": 123,
"count": 123,
"limit": 123,
"offset": 123
},
"articles": [
{
"id": "<string>",
"title": "<string>",
"slug": "<string>",
"description": "<string>",
"articleType": "<string>",
"status": "<string>",
"wordCount": 123,
"finalUrl": "<string>",
"publishedAt": "<string>",
"generatedAt": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>"
}
]
}Content
List content
List Content Studio articles for syndication to an external CMS.
GET
https://www.qwairy.co
/
api
/
v1
/
brands
/
{brandId}
/
content
List content
curl --request GET \
--url https://www.qwairy.co/api/v1/brands/{brandId}/content \
--header 'Authorization: <authorization>'import requests
url = "https://www.qwairy.co/api/v1/brands/{brandId}/content"
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}/content', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"pagination": {
"total": 123,
"count": 123,
"limit": 123,
"offset": 123
},
"articles": [
{
"id": "<string>",
"title": "<string>",
"slug": "<string>",
"description": "<string>",
"articleType": "<string>",
"status": "<string>",
"wordCount": 123,
"finalUrl": "<string>",
"publishedAt": "<string>",
"generatedAt": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>"
}
]
}Lists Content Studio article metadata for read-only integrations. Fetch article detail to retrieve the Markdown body.
See Rate limits for retry behavior.
The route defaults to
status=LIVE. Pass status explicitly to list another lifecycle state.string
required
Bearer token. Example:
Bearer qw-api-xxxPath parameters
string
required
The unique identifier of the brand
Query parameters
string
default:"LIVE"
Filter by status:
DRAFT, GENERATING, LIVE, ARCHIVEDstring
Filter by type:
INFORMATIONAL, COMPARISON, HOW_TO, LISTICLE, REVIEW, CASE_STUDY, NEWS, OPINION, OTHERnumber
default:"50"
Maximum number of articles to return (max: 100)
number
default:"0"
Pagination offset
string
default:"updatedAt"
Field to sort by:
createdAt, updatedAt, publishedAt, title, wordCountstring
default:"desc"
Sort order:
asc or descResponse
boolean
Indicates if the request was successful
object
array
Show Article object
Show Article object
string
Article ID (use with the detail endpoint)
string
Article title
string
URL slug or
nullstring
Short description or
nullstring
Article type
string
DRAFT, GENERATING, LIVE or ARCHIVEDnumber
Word count of the generated content
string
Published URL (if set by you) or
nullstring
Publish timestamp (ISO 8601) or
nullstring
Content generation timestamp (ISO 8601) or
nullstring
Creation timestamp (ISO 8601)
string
Last update timestamp (ISO 8601)
Synthetic request
curl "https://www.qwairy.co/api/v1/brands/YOUR_BRAND_ID/content?status=LIVE&limit=20" \
-H "Authorization: Bearer $QWAIRY_API_TOKEN"
Synthetic response
{
"success": true,
"pagination": {
"total": 12,
"count": 1,
"limit": 20,
"offset": 0
},
"articles": [
{
"id": "art_abc123",
"title": "How to choose the right solution in 2026",
"slug": "how-to-choose-the-right-solution-2026",
"description": "A practical buyer's guide.",
"articleType": "HOW_TO",
"status": "LIVE",
"wordCount": 1480,
"finalUrl": "https://acme.example/blog/how-to-choose",
"publishedAt": "2026-05-10T09:00:00.000Z",
"generatedAt": "2026-05-08T14:22:00.000Z",
"createdAt": "2026-05-08T13:50:00.000Z",
"updatedAt": "2026-05-10T09:00:00.000Z"
}
]
}
Errors
| Status | Meaning |
|---|---|
400 | Invalid status, article type, pagination, or sort parameter |
401 | Missing or invalid API token |
404 | Brand not found or inaccessible |
429 | Rate limit exceeded; honor Retry-After |

