Get content
curl --request GET \
--url https://www.qwairy.co/api/v1/brands/{brandId}/content/{articleId} \
--header 'Authorization: <authorization>'import requests
url = "https://www.qwairy.co/api/v1/brands/{brandId}/content/{articleId}"
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/{articleId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"brand": {},
"article": {
"id": "<string>",
"title": "<string>",
"slug": "<string>",
"description": "<string>",
"content": "<string>",
"articleType": "<string>",
"status": "<string>",
"targetLength": 123,
"wordCount": 123,
"guidelines": "<string>",
"includeTldr": true,
"includeFaq": true,
"metaData": {},
"outline": {},
"finalUrl": "<string>",
"publishedAt": "<string>",
"generatedAt": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"sources": [
{}
]
}
}Content
Get content
Retrieve a full Content Studio article including the markdown body.
GET
https://www.qwairy.co
/
api
/
v1
/
brands
/
{brandId}
/
content
/
{articleId}
Get content
curl --request GET \
--url https://www.qwairy.co/api/v1/brands/{brandId}/content/{articleId} \
--header 'Authorization: <authorization>'import requests
url = "https://www.qwairy.co/api/v1/brands/{brandId}/content/{articleId}"
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/{articleId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"brand": {},
"article": {
"id": "<string>",
"title": "<string>",
"slug": "<string>",
"description": "<string>",
"content": "<string>",
"articleType": "<string>",
"status": "<string>",
"targetLength": 123,
"wordCount": 123,
"guidelines": "<string>",
"includeTldr": true,
"includeFaq": true,
"metaData": {},
"outline": {},
"finalUrl": "<string>",
"publishedAt": "<string>",
"generatedAt": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"sources": [
{}
]
}
}Returns one Content Studio article with its Markdown
A
See Rate limits for retry behavior.
content, outline, metadata, and sources.
string
required
Bearer token. Example:
Bearer qw-api-xxxPath parameters
string
required
The unique identifier of the brand
string
required
The unique identifier of the article
Response
boolean
Indicates if the request was successful
object
id, name, domainobject
Show Article
Show Article
string
Article ID
string
Article title
string
URL slug or
nullstring
Short description or
nullstring
Full article body in Markdown
string
Article type
string
DRAFT, GENERATING, LIVE or ARCHIVEDnumber
Target word count used for generation
number
Actual word count
string
Generation guidelines or
nullboolean
Whether a TL;DR was requested
boolean
Whether an FAQ was requested
object
SEO/initialization metadata (JSON) or
nullobject
Structured outline with
sections or nullstring
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)
array
Sources used for the article. Each object has
id, title, url, usageType, order.404 RESOURCE_NOT_FOUND is returned if the article does not exist or does not belong to the brand.
Synthetic request
curl "https://www.qwairy.co/api/v1/brands/YOUR_BRAND_ID/content/ARTICLE_ID" \
-H "Authorization: Bearer $QWAIRY_API_TOKEN"
Synthetic response
{
"success": true,
"brand": {
"id": "brand_01",
"name": "Acme Analytics",
"domain": "acme.example"
},
"article": {
"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.",
"content": "# How to choose the right solution in 2026\n\n## Introduction\n\n...",
"articleType": "HOW_TO",
"status": "LIVE",
"targetLength": 1500,
"wordCount": 1480,
"guidelines": null,
"includeTldr": true,
"includeFaq": false,
"metaData": {
"seo": {
"metaTitle": "How to choose the right solution (2026 guide)",
"metaDescription": "A practical buyer's guide for 2026."
}
},
"outline": {
"sections": [
{ "id": "s1", "level": 2, "title": "Introduction", "order": 0 }
],
"generatedAt": "2026-05-08T14:20:00.000Z"
},
"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",
"sources": [
{
"id": "src_1",
"title": "Industry benchmark report",
"url": "https://research.example/benchmark",
"usageType": "AUTO",
"order": 0
}
]
}
}
Errors
| Status | Meaning |
|---|---|
401 | Missing or invalid API token |
404 | Brand or article not found |
429 | Rate limit exceeded; honor Retry-After |

