Back to Help Center

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

  1. Open your SEO Software dashboard
  2. Go to Settings
  3. Navigate to the API Key section
  4. 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 offset to skip articles
  • Use limit to control how many results are returned per request

Example:

  • offset: 30 retrieves 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.

Need more help?

Our support team is ready to assist you.

Contact Support