List the headlines queued for article generation on your SEObot website, in the exact order they'll be generated. Use it to see what's coming next and to decide when to top up the queue (via the Add Headlines API).
Endpoint
GET https://app.seobotai.com/api/v1/headlines/scheduled?key=YOUR_API_KEY
Authentication
Pass your website API key as the key query parameter (same key as the Add Headlines API). The key identifies the target website β you don't pass host.
Query parameters
Param | Type | Required | Description |
| string | yes | Per-website API key. |
| number | no | Zero-based page, default |
| number | no | Items per page, default |
Response
{
"success": true,
"summary": {
"total": 42,
"queued": 41,
"generating": 1,
"pendingApproval": 0,
"remainingCredits": 120,
"perPeriod": 7,
"period": "week"
},
"page": 0,
"limit": 100,
"scheduled": [
{
"position": 1,
"id": "65f1c2a4e7b9d1a3f4e2c5b8",
"headline": "Best CRMs for Small Business in 2026",
"slug": "best-crms-for-small-business-2026",
"state": "generating",
"prioritized": false,
"hasContext": true,
"createdAt": "2026-05-19T09:00:00.000Z"
},
{
"position": 2,
"id": "65f1c2a4e7b9d1a3f4e2c5b9",
"headline": "How to Run a Lead Scoring Campaign",
"slug": "how-to-run-a-lead-scoring-campaign",
"state": "queued",
"prioritized": false,
"hasContext": false,
"createdAt": "2026-05-19T09:01:00.000Z"
}
]
}
The scheduled array is ordered the same way the generator picks work: whatever is currently generating comes first, then queued headlines in the order they'll be picked up. scheduled[0] is effectively "what's being worked on / next up".
summary
Field | Type | Description |
| number | Headlines in the generation queue ( |
| number | Headlines waiting to start. |
| number | Headlines currently being turned into articles (usually 0 or 1). |
| number | AI-suggested headlines awaiting your approval. Not in the |
| number | Article credits left on your plan (how many more articles can be generated in total). |
| number | null | How many articles your plan generates per period. |
| string | The pacing period: |
Rough runway estimate: queued / perPeriod periods of content remaining. When that gets low (and remainingCredits is healthy), top up with more headlines.
scheduled[]
Field | Type | Description |
| number | 1-based position in the overall queue (continues across pages). |
| string | Unique identifier of the headline. |
| string | The headline text. |
| string | Current URL slug. |
|
|
|
| boolean |
|
| boolean | Whether custom context is attached to this headline. |
| string | ISO timestamp of when the headline was added. |
Errors
Same shape as the Add Headlines API:
{ "success": false, "code": "INVALID_KEY", "error": "Wrong API key" }
| Meaning |
|
|
|
|
| Key resolved a host but the website record is missing (rare; stale key). |
Example
curl "https://app.seobotai.com/api/v1/headlines/scheduled?key=YOUR_API_KEY&limit=20"
const res = await fetch(
`https://app.seobotai.com/api/v1/headlines/scheduled?key=${KEY}`,
).then(r => r.json());
const { queued, perPeriod, period, remainingCredits } = res.summary;
console.log(`${queued} queued (~${(queued / perPeriod).toFixed(1)} ${period}s of runway), ${remainingCredits} credits left`);
console.log('Next up:', res.scheduled[0]?.headline ?? '(queue empty)');
if (queued < perPeriod && remainingCredits > 0) {
// queue is running low β top up via POST /api/v1/headlines
}
