Create blog article
curl --request POST \
--url https://api.yalg.ai/v1/blog/articles \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '{}'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.yalg.ai/v1/blog/articles', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.yalg.ai/v1/blog/articles"
payload = {}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "018f9f54-22d4-783a-a3d9-8bcdf1717032",
"title": "How founder stories become useful content",
"status": "draft",
"markdown": "# How founder stories become useful content",
"createdAt": "2026-06-20T17:24:39.000Z",
"updatedAt": "2026-06-20T17:24:39.000Z"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request",
"code": "validation_failed"
}{
"statusCode": 401,
"message": "Invalid or missing API key",
"error": "Unauthorized",
"code": "unauthorized"
}{
"statusCode": 403,
"message": "Access denied",
"error": "Forbidden",
"code": "forbidden"
}{
"statusCode": 409,
"message": "Resource conflict",
"error": "Conflict",
"code": "conflict"
}{
"statusCode": 429,
"message": "Rate limit exceeded",
"error": "Too Many Requests",
"code": "rate_limit_exceeded",
"retryAfter": 60
}{
"statusCode": 500,
"message": "Internal server error",
"error": "Internal Server Error",
"code": "internal_server_error"
}Blog
Create blog article
Create blog article through the YALG API. Requests are scoped to the authenticated API key owner; cross-owner resource IDs return 404.
POST
/
v1
/
blog
/
articles
Create blog article
curl --request POST \
--url https://api.yalg.ai/v1/blog/articles \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '{}'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.yalg.ai/v1/blog/articles', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.yalg.ai/v1/blog/articles"
payload = {}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "018f9f54-22d4-783a-a3d9-8bcdf1717032",
"title": "How founder stories become useful content",
"status": "draft",
"markdown": "# How founder stories become useful content",
"createdAt": "2026-06-20T17:24:39.000Z",
"updatedAt": "2026-06-20T17:24:39.000Z"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request",
"code": "validation_failed"
}{
"statusCode": 401,
"message": "Invalid or missing API key",
"error": "Unauthorized",
"code": "unauthorized"
}{
"statusCode": 403,
"message": "Access denied",
"error": "Forbidden",
"code": "forbidden"
}{
"statusCode": 409,
"message": "Resource conflict",
"error": "Conflict",
"code": "conflict"
}{
"statusCode": 429,
"message": "Rate limit exceeded",
"error": "Too Many Requests",
"code": "rate_limit_exceeded",
"retryAfter": 60
}{
"statusCode": 500,
"message": "Internal server error",
"error": "Internal Server Error",
"code": "internal_server_error"
}Authorizations
ApiKeyAuthbearer
YALG Developer API key. Send it in the x-api-key header from a server-side environment only.
Body
application/json
Topic to generate into an SEO blog article
Required string length:
1 - 500Optional editorial angle
Maximum string length:
2000Anecdote selection mode. V1 supports auto only.
Available options:
auto Optional SEO keyword identifiers to use as article targets. Omit this field to let YALG select eligible keywords automatically.
Maximum array length:
50Example:
["018f9f48-08ab-71c2-887d-bbca79017364"]
Optional blog fuel anecdote identifiers to ground the article in source stories. Omit this field for automatic selection.
Maximum array length:
50Example:
["018f9f53-7a79-703c-993f-588d176bf5a6"]
Preferred output language code for the generated article.
Maximum string length:
10Example:
"en"
Response
Created successfully. Create blog article.
Blog article generation job.