Articles
Use these endpoints to fetch published content. Responses include structuredContent as content, plus basic SEO metadata.
Schemas
Looking for copy/paste response types? See Schemas.
GET /api/v1/public/articles
List published articles for your organization (API key scoped).
Query params
product(optional): product slugterritory(optional): territory code (e.g.US)limit(default20, max100)offset(default0)
Example
curl -H "Authorization: Bearer trident_pk_..." \
"https://app.tridentseo.ai/api/v1/public/articles?product=my-product&territory=US&limit=20&offset=0"Response
Returns a paginated list. Note: this endpoint currently includes the full content payload per article (which may be large).
{
"data": [
{
"id": "...",
"title": "...",
"slug": "...",
"excerpt": "...",
"content": { /* structuredContent JSON */ },
"seo": {
"title": "...",
"metaDescription": "...",
"targetKeyword": "...",
"secondaryKeywords": []
},
"publishedAt": "2026-01-01T00:00:00.000Z",
"product": { "name": "...", "slug": "..." },
"territory": { "code": "US", "languageCode": "en", "locale": "en-US" }
}
],
"pagination": { "total": 123, "limit": 20, "offset": 0, "hasMore": true }
}Schema
TypeScript shape (see full definitions in Schemas):
type PublicArticlesListResponse = {
data: PublicArticleSummary[];
pagination: {
total: number;
limit: number;
offset: number;
hasMore: boolean;
};
};PublicArticleSummary
| Field | Type | Notes |
|---|---|---|
| id | string | Article UUID |
| title | string | Article title |
| slug | string | URL slug |
| excerpt | string | null | Short summary (may be null) |
| content | StructuredArticleContent | LegacyStructuredArticleContent | null | Article structuredContent JSON |
| seo | object | See below |
| publishedAt | string | null | ISO datetime |
| product | object | Product summary |
| territory | object | Territory summary |
seo
| Field | Type | Notes |
|---|---|---|
| title | string | SEO title (currently equals article title) |
| metaDescription | string | null | Currently sourced from excerpt |
| targetKeyword | string | null | Primary keyword (nullable) |
| secondaryKeywords | string[] | Additional keywords |
GET /api/v1/public/articles/:slug
Fetch a single published article by slug.
Query params
product(optional): product slug (useful if you want to be explicit)
Example
curl -H "Authorization: Bearer trident_pk_..." \
"https://app.tridentseo.ai/api/v1/public/articles/my-article-slug?product=my-product"Response
Includes schema markup and citation sources.
{
"data": {
"id": "...",
"title": "...",
"slug": "...",
"excerpt": "...",
"content": { /* structuredContent JSON */ },
"seo": {
"title": "...",
"metaDescription": "...",
"targetKeyword": "...",
"secondaryKeywords": [],
"schemaMarkup": { /* JSON-LD or other schema */ }
},
"wordCount": 1234,
"publishedAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-02T00:00:00.000Z",
"product": { "name": "...", "slug": "..." },
"territory": { "code": "US", "name": "United States", "languageCode": "en", "locale": "en-US" },
"sources": [
{ "title": "Source title", "url": "https://example.com", "citationIndex": 1 }
]
}
}Schema
TypeScript shape (see full definitions in Schemas):
type PublicArticleDetailResponse = {
data: PublicArticleDetail;
};Content schema
The content field is the article’s structuredContent JSON. It may be the rich schema or the legacy schema, depending on when the article was generated. See Schemas for the full definitions and recommended union type.