Contents
Long-form content — blog posts and articles. List, get by ID, get by slug.
Contents are blog posts and articles. They can be written manually in the dashboard or generated by AI on a schedule. Each content item has an author, category, publish date, featured image, SEO metadata, tags, and a markdown body.
List contents
GET /api/organizations/{orgId}/contents
API-key callers receive all published content, newest first.
Response
{
"items": [
{
"id": "cnt_1",
"title": "How to grow with content",
"slug": "how-to-grow-with-content",
"excerpt": "A short summary of the post.",
"categoryName": "Marketing",
"categorySlug": "marketing",
"authorName": "Inventra",
"publishedAt": "2026-03-15",
"featuredImage": { "url": "...", "alt": "..." },
"seoMetadata": { "title": "...", "description": "..." },
"tags": ["seo", "growth"]
}
]
}Note the list response does not include the article body. Fetch by slug (or ID) to get the full content.
SDK equivalent
const posts = await inventra.contents.list();Get content by ID
GET /api/organizations/{orgId}/contents/{contentId}
Get content by slug
GET /api/organizations/{orgId}/contents/by-slug/{slug}
Returns the full content detail, including the markdown body.
Response
{
"id": "cnt_1",
"title": "How to grow with content",
"slug": "how-to-grow-with-content",
"excerpt": "A short summary of the post.",
"content": "## Introduction\n\nLong-form markdown body...",
"categoryName": "Marketing",
"categorySlug": "marketing",
"authorName": "Inventra",
"publishedAt": "2026-03-15",
"featuredImage": { "url": "...", "alt": "..." },
"seoMetadata": { "title": "...", "description": "..." },
"tags": ["seo", "growth"],
"references": [
{
"source": "The Knot 2024 Real Weddings Study",
"url": "https://example.com/study",
"asOf": "2024",
"claim": "$2,800 average US wedding photographer package"
}
]
}The references array lists the external sources cited inline in the body via
[N] markers. Each entry has the publication name (source), a direct url,
an optional asOf year, and the optional verbatim claim the marker refers
to. Older posts created before structured references were stored separately
may have references: null and still keep the references embedded in the
markdown body.
Example (TypeScript)
const post = await inventra.contents.getBySlug('how-to-grow-with-content');
console.log(post.content); // full markdownSDK equivalent
const post = await inventra.contents.getBySlug(slug);Get references
GET /api/organizations/{orgId}/contents/{contentId}/references
Returns just the references array for a single content item. Useful when you
already have the post body cached and only need the citation list.
Response
[
{
"source": "The Knot 2024 Real Weddings Study",
"url": "https://example.com/study",
"asOf": "2024",
"claim": "$2,800 average US wedding photographer package"
}
]Returns [] when the post has no references (or when the post predates
structured references and still carries them inline in the markdown body).
Rendering the content body
The content field is raw markdown (GitHub-flavored). Render it with your markdown renderer of choice. The SDK ships a ready-to-use React component that handles headings, tables, links, and code blocks:
import { Markdown } from 'inventra/react';
<Markdown>{post.content}</Markdown>See the React SDK page for the full component reference.