Skip to main content
GET
/
articles
/
:id-or-slug
Get Article / Item
curl --request GET \
  --url https://api.example.com/articles/:id-or-slug

Endpoints

GET /articles/:id-or-slug
GET /posts/:id-or-slug                              # backward-compatible alias
GET /collections/:collection-slug/items/:id-or-slug
Plan note:
  • Articles are available on all plans.
  • Additional non-article collections require the Authority plan.
The path value accepts either:
  • Skayle content ID
  • Content slug

Query parameters

ParameterTypeDescription
_fieldsstringComma-separated attribute field filter
includestringInclude related resources (categories,tags,authors)

Example request (root article)

curl "https://api.skayle.ai/v1/ORG_ID/articles/b2b-saas-content-strategy-2026?include=categories,tags,authors"

Example request (collection item)

curl "https://api.skayle.ai/v1/ORG_ID/collections/answers/items/what-is-product-led-seo"

Example response

{
  "data": {
    "id": "post_01HZX2...",
    "type": "articles",
    "attributes": {
      "title": "B2B SaaS Content Strategy for 2026",
      "slug": "b2b-saas-content-strategy-2026",
      "excerpt": "A practical framework for demand capture and category coverage.",
      "content_html": "<h2>...</h2>",
      "comparison_screenshots": [
        {
          "section_heading": "Acme vs Competitor A",
          "section_slug": "acme-vs-competitor-a",
          "competitor_name": "Competitor A",
          "source_url": "https://competitor-a.com/",
          "screenshot_url": "https://cdn.example.com/comparison-screenshots/org/post/acme-vs-competitor-a.webp",
          "captured_at": "2026-02-25T13:02:11.000Z",
          "status": "captured"
        }
      ],
      "status": "published",
      "seo_title": "B2B SaaS Content Strategy for 2026",
      "meta_description": "Framework for planning and publishing ranking-focused content.",
      "author": "Alex Jordan",
      "created_at": "2026-01-28T12:15:01.000Z",
      "updated_at": "2026-02-01T09:20:11.000Z"
    },
    "relationships": {
      "categories": {
        "data": [{ "type": "categories", "id": "cat_01HZX..." }]
      },
      "tags": {
        "data": [{ "type": "tags", "id": "tag_01HZX..." }]
      },
      "authors": {
        "data": [{ "type": "authors", "id": "author_01HZX..." }]
      }
    },
    "links": {
      "self": "/v1/ORG_ID/articles/post_01HZX2..."
    }
  },
  "included": [
    {
      "id": "author_01HZX...",
      "type": "authors",
      "attributes": {
        "name": "Alex Jordan",
        "slug": "alex-jordan",
        "bio": "SEO lead focused on B2B SaaS growth.",
        "avatar_url": "https://cdn.example.com/avatar.jpg",
        "social_links": {
          "linkedin": "https://www.linkedin.com/in/alex-jordan"
        }
      }
    }
  ]
}

Error responses

Content not found

{
  "errors": [
    {
      "status": "404",
      "title": "Not Found",
      "detail": "Post with id or slug \"missing-post\" not found"
    }
  ]
}

Response field descriptions

FieldTypeDescription
data.idstringContent ID
data.typestringResource type (articles for root feed, items for non-article collections)
data.attributes.titlestringContent title
data.attributes.slugstringContent slug
data.attributes.excerptstring | nullSummary text
data.attributes.contentstringContent body
data.attributes.content_htmlstring | nullRendered HTML
data.attributes.comparison_screenshotsarrayCompetitor screenshot metadata for comparison sections
data.attributes.statusstringContent status (published, draft, scheduled)
data.attributes.authorstring | nullDisplay author name
data.attributes.created_atstringISO datetime
data.attributes.updated_atstringISO datetime
data.relationshipsobjectLinked taxonomy references
included[]arrayOptional included resources

Notes

  • Path supports either a content ID or slug.
  • /posts/:id-or-slug remains backward-compatible.
  • For comparison posts, content_html may include embedded <img> tags directly below competitor H2 headings, and comparison_screenshots returns structured capture metadata.