Advanced

API Integration Guide

Integrate EZIO articles directly into your website or application.

The EZIO API allows you to fetch your optimized articles to display them natively on your platform. Several options are available for installation.

Integration Options

1. Custom Integration

Ideal if you have a technical team. Your developer can use our REST API to fetch articles in JSON format and inject them into your CMS or framework (Next.js, React, Laravel, etc.).

2. EZIO Installation Service

Don't have a developer available? An EZIO expert can handle the technical integration directly on your platform. Contact our team to schedule this service.

3. WordPress Plugin (Coming Soon)

We are currently developing an official WordPress plugin that will allow you to display your EZIO articles in a few clicks, without any code.


API Parameters

Authentication

All requests must include your API key in the HTTP header:

x-api-key: YOUR_API_KEY

Fetch Articles

Endpoint: GET https://api.ezioseo.com/api/public/v1/articles

Query Parameters

ParameterTypeDefaultDescription
qstring-Search by title or slug.
takenumber50Number of articles to fetch (max 100).
skipnumber0Number of articles to skip (pagination).
orderBystringpublishedAtSort by: createdAt, publishedAt, title, views.
orderstringdescSort direction: asc or desc.

Pagination and Performance

To optimize loading (Lazy Load) or implement "Infinite Scroll," use the take and skip parameters.

Pagination Logic:

  • Page 1: take=10&skip=0
  • Page 2: take=10&skip=10
  • Page 3: take=10&skip=20

Using Meta: The returned meta object allows you to know when to stop loading:

FieldTypeDescription
totalnumberTotal number of articles matching the search.
takenumberNumber of articles returned in this request.
skipnumberOffset (start index) used.

SEO and Indexing (Sitemaps)

To ensure Google indexes all your articles (even beyond the first 100 on your listing), we provide a dedicated endpoint for generating your sitemap.xml.

Sitemap Endpoint: GET https://api.ezioseo.com/api/public/v1/sitemap

Unlike the regular articles endpoint, this one returns the complete list of your active slugs and their update dates so indexing bots don't miss any content.

Integration Tip:

Your server should fetch this JSON stream to dynamically generate your sitemap file:

// Example: Fetching everything for sitemap.xml
const { data } = await fetch('https://api.ezioseo.com/api/public/v1/sitemap', { 
  headers: { 'x-api-key': '...' } 
}).then(r => r.json());

// data = [{ url: 'slug-1', lastmod: '2024-03-10' }, ...]

Response Format

The API returns a JSON object containing your published articles, including the full HTML body and schema.org markup (JSON-LD) ready to inject on your page.

Example Response:

{
  "data": [
    {
      "id": "a1b2c3d4-...",
      "title": "How to optimize your SEO in 2026",
      "slug": "optimize-seo-2026",
      "bannerUrl": "https://storage.ezioseo.com/...",
      "keywords": ["SEO", "Marketing"],
      "metaTitle": "SEO Guide 2026 | EZIO",
      "metaDesc": "Discover the best strategies...",
      "publishedAt": "2026-03-20T10:00:00Z",
      "category": "Marketing",
      "readTime": 5,
      "contentHtml": "<p>...</p>",
      "schemaMarkup": { "@context": "https://schema.org", "@graph": [ ] }
    }
  ],
  "meta": {
    "total": 124,
    "take": 50,
    "skip": 0
  }
}

List Articles Without Content (Preview)

If you're building a listing page (article grid, carousel) and don't need each article's full HTML body, use this lighter endpoint: same parameters and authentication as /articles, but without contentHtml, schemaMarkup, metaTitle, or metaDesc.

Endpoint: GET https://api.ezioseo.com/api/public/v1/articles/preview

Example Response:

{
  "data": [
    {
      "title": "How to optimize your SEO in 2026",
      "slug": "optimize-seo-2026",
      "bannerUrl": "https://storage.ezioseo.com/...",
      "publishedAt": "2026-03-20T10:00:00Z",
      "readTime": 5,
      "category": "Marketing",
      "keywords": ["SEO", "Marketing"]
    }
  ],
  "meta": {
    "total": 124,
    "take": 50,
    "skip": 0
  }
}