Using the API
Get started with the SEO software REST API.
SEO Software API
The SEO Software API allows you to programmatically access content created and published through the SEO Software platform. You can use the API to fetch published articles and integrate them into your own websites, applications, or content pipelines.
⚠️ Note: We do not recommend using Postman to test the API. It has proven unreliable for this integration. Use a proper server-side environment instead.
Making Articles Available via the API
Only published articles are accessible through the SEO Software API. You can publish articles in one of the following ways:
- Automatic publishing via the bulk generator
- Articles generated in bulk can be automatically published to the API once generation is complete.
- Manual publishing from the editor
- You can also publish articles individually using the publish option inside the SEO Software editor.
👉 If you edit an article after publishing it, you must republish the article to ensure the API returns the latest version.
Authentication
To access the API, you’ll need an API key.
How to Generate an API Key
- Open your SEO Software dashboard
- Go to Settings
- Navigate to the API Key section
- Generate a new API key
All API requests must include this key in the request headers using:
x-api-key: your-api-key
Fetching All Published Articles
To retrieve a list of published articles, send a POST request to the following endpoint:
POST https://seo.software/api/public/collections
Optional Request Parameters
You may include the following parameters in the request body:
- excludeSlugs (string)
- A comma-separated list of article slugs to exclude
- includeSlugs (string)
- A comma-separated list of article slugs to include
- includeContent (boolean)
- If
true, returns full HTML content - Default is
false(metadata only, faster response) - offset (number)
- Number of articles to skip (default:
0) - limit (number)
- Maximum number of articles to return (default:
30)
Pagination
The API uses offset-based pagination.
- Each request returns up to 30 articles by default
- Use
offsetto skip articles - Use
limitto control how many results are returned per request
Example:
offset: 30retrieves the second page when using the default limit
Example Request (Generic)
POST https://seo.software/api/public/collections
Headers
x-api-key: your-api-key
Body
{"excludeSlugs": "article-to-exclude-1,article-to-exclude-2","includeSlugs": "article-to-include-1,article-to-include-2","includeContent": false,"offset": 0,"limit": 40
}
Example Request (Node.js)
const fetch = require('node-fetch');
const apiKey = 'your-api-key';
const requestBody = {
excludeSlugs: 'article-to-exclude-1,article-to-exclude-2',
includeSlugs: 'article-to-include-1,article-to-include-2',
includeContent: false,
offset: 0,
limit: 40
};
fetch('https://seo.software/api/public/collections', {
method: 'POST',
headers: {
'x-api-key': apiKey
},
body: JSON.stringify(requestBody)
})
.then(res => res.json())
.then(data => console.log(data));
Example Request (PHP)
$apiKey = 'your-api-key';
$requestBody = [
'excludeSlugs' => 'article-to-exclude-1,article-to-exclude-2',
'includeSlugs' => 'article-to-include-1,article-to-include-2',
'includeContent' => false
];
$ch = curl_init('https://seo.software/api/public/collections');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestBody));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'x-api-key: ' . $apiKey
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
Example Response (Collection)
{"data": [{"slug": "article-slug-1","title": "Article Title 1","language": "English","metaTitle": "Article Meta Title 1","updatedAt": "2023-08-15T12:34:56Z","publishedAt": "2023-08-01T12:34:56Z","createdAt": "2023-07-25T12:34:56Z","featureImage": "https://example.com/article-image.jpg","featureImageAlt": "Feature image description","metaDescription": "Meta description text","preview": "Short article preview","content": "HTML article content","markdown": "Markdown article content","faq": [{"question": "FAQ Question","answer": "FAQ Answer"}]}],"hasMore": true
}
Fetching a Single Article
To retrieve a single published article, send a POST request to:
POST https://seo.software/api/public/collection
Required Parameter
- slug (string): The article slug to retrieve
Example Request (Single Article – Generic)
{"slug": "my-article-slug"
}
Example Request (Node.js)
const fetch = require('node-fetch');
fetch('https://seo.software/api/public/collection', {
method: 'POST',
headers: {
'x-api-key': 'your-api-key'
},
body: JSON.stringify({ slug: 'my-article-slug' })
})
.then(res => res.json())
.then(data => console.log(data));
Example Response (Single Article)
{"data": {"slug": "article-slug-1","title": "Article Title 1","language": "English","metaTitle": "Article Meta Title 1","metaDescription": "Meta description text","featureImage": "https://example.com/article-image.jpg","content": "HTML article content","markdown": "Markdown article content","faq": [{"question": "FAQ Question","answer": "FAQ Answer"}]}
}
Rate Limiting
The SEO Software API uses rate limiting to prevent abuse and ensure stable performance.
Best practice:
Cache articles whenever possible and avoid unnecessary repeated requests.