Aevum News
API Documentation
Build powerful integrations with Aevum's editorial data. Access articles, stories, authors, analytics, and more through our RESTful API.
📖 Introduction
Welcome to the Aevum News API. Our RESTful API provides programmatic access to all of Aevum's editorial content, analytics, and management tools.
https://api.aevumnews.com/v2
HTTP Methods
🔐 Authentication
The Aevum API uses API keys for authentication. Every request must include your API key in the Authorization header.
Sandbox keys — Limited to test data and simulated responses.
GET /v2/articles HTTP/2 Host: api.aevumnews.com Authorization: Bearer sk_aev_xK9mP2nQ7wR4vL8jT6yF3bH5cD1eA0g Content-Type: application/json
GET /v2/articles HTTP/2 Host: api.aevumnews.com X-Aevum-Key: sk_aev_xK9mP2nQ7wR4vL8jT6yF3bH5cD1eA0g Content-Type: application/json
GET /v2/articles?api_key=sk_aev_xK9mP2nQ7wR4vL8jT6yF3bH5cD1eA0g HTTP/2 Host: api.aevumnews.com Content-Type: application/json
Generating API Keys
curl -X POST https://api.aevumnews.com/v2/api-keys \\ -H "Authorization: Bearer YOUR_MASTER_KEY" \\ -H "Content-Type: application/json" \\ -d '{ "name": "Production API Key", "scope": "read:articles,write:articles", "environment": "live" }'
{
"key": "sk_aev_xK9mP2nQ7wR4vL8jT6yF3bH5cD1eA0g",
"name": "Production API Key",
"scope": "read:articles,write:articles",
"created_at": "2025-01-15T08:30:00Z",
"last_used": null,
"environment": "live"
}
⏱️ Rate Limits
API requests are rate-limited to ensure fair usage. Rate limits are enforced per API key.
X-RateLimit-Limit: 1000 X-RateLimit-Remaining: 847 X-RateLimit-Reset: 1705312800 X-RateLimit-Window: hourly
{
"error": {
"code": "rate_limit_exceeded",
"message": "API rate limit exceeded. Please retry after 45 seconds.",
"retry_after": 45,
"documentation_url": "https://docs.aevumnews.com/rate-limits"
}
}
⚠️ Error Handling
The Aevum API uses conventional HTTP status codes to indicate success or failure of requests.
✔️ Successful Codes
201 Created — Resource created
204 No Content — Deleted successfully
✖️ Client Error Codes
401 Unauthorized — Invalid or missing API key
403 Forbidden — Insufficient permissions
404 Not Found — Resource doesn't exist
422 Unprocessable — Validation failed
429 Too Many Requests — Rate limited
☠️ Server Error Codes
502 Bad Gateway
503 Service Unavailable
{
"error": {
"code": "not_found",
"message": "The requested article does not exist.",
"request_id": "req_a7f3k9m2p4q8",
"documentation_url": "https://docs.aevumnews.com/errors/not_found"
}
}
📦 SDKs & Libraries
Official SDKs available in popular languages to simplify API integration.
npm install @aevum/api-client
import { AevumClient } from "@aevum/api-client"; const aevum = new AevumClient({ apiKey: process.env.AENVUM_API_KEY, version: "v2" }); const articles = await aevum.articles.list({ limit: 10, category: "technology", sortBy: "published_at", order: "desc" }); console.log(`Found ${articles.total} articles`);
pip install aevum-api
from aevum import AevumClient client = AevumClient(api_key="sk_aev_xK9mP2nQ7wR4vL8jT6yF3bH5cD1eA0g") articles = client.articles.list( limit=10, category="technology", sort_by="published_at", order="desc" ) print(f"Found {len(articles.data)} articles")
gem install aevum-api
require 'aevum' client = Aevum::Client.new( api_key: "sk_aev_xK9mP2nQ7wR4vL8jT6yF3bH5cD1eA0g" ) articles = client.articles.list( limit: 10, category: "technology" ) puts "Found #{articles.total} articles"
go get github.com/aevum/aevum-go/v2
package main import ( "fmt" "github.com/aevum/aevum-go/v2" ) func main() { client := aevum.NewClient(aevum.Config{ APIKey: "sk_aev_xK9mP2nQ7wR4vL8jT6yF3bH5cD1eA0g", }) articles, _ := client.Articles.List(context.Background(), &aevum.ListParams{ Limit: 10, Category: "technology", }) fmt.Printf("Found %d articles\n", articles.Total) }
📰 Articles — List
Retrieve a paginated list of articles with filtering and sorting options.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | Optional | Number of results per page. Max 100. Default: 20 |
| offset | integer | Optional | Number of results to skip. Default: 0 |
| category | string | Optional | Filter by category slug (e.g., technology, politics) |
| author | string | Optional | Filter by author ID or slug |
| status | string | Optional | Filter by status: published, draft, archived |
| sort_by | string | Optional | Sort field: published_at, created_at, title, views |
| order | string | Optional | Sort order: asc or desc. Default: desc |
| search | string | Optional | Full-text search across title and body |
Example Request
curl -X GET \\ "https://api.aevumnews.com/v2/articles?limit=5&category=technology&sort_by=published_at&order=desc" \\ -H "Authorization: Bearer sk_aev_xK9mP2nQ7wR4vL8jT6yF3bH5cD1eA0g"
Example Response
{
"data": [
{
"id": "art_8xK3mP9qL2nR7vW4
"id": "art_8xK3mP9qL2nR7vW4", "title": "AI Revolution: New Language Models Redefine Interaction", "slug": "ai-revolution-new-language-models", "summary": "Researchers unveil breakthrough AI systems that understand context with unprecedented accuracy.", "status": "published", "category": "technology", "author": { "id": "au_3mK8pL1nQ6", "name": "Marcus Chen", "slug": "marcus-chen" }, "views": 14852, "published_at": "2025-01-15T14:30:00Z", "created_at": "2025-01-15T10:00:00Z", "updated_at": "2025-01-15T14:30:00Z" } ], "pagination": { "total": 1247, "count": 5, "per_page": 5, "current_page": 1, "total_pages": 250, "next_offset": 5, "prev_offset": null, "has_more": true } }
📄 Articles — Retrieve
Get full details of a single article by its ID or slug.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Required | The article ID or slug |
{
"data": {
"id": "art_8xK3mP9qL2nR7vW4",
"title": "AI Revolution: New Language Models Redefine Interaction",
"slug": "ai-revolution-new-language-models",
"summary": "Researchers unveil breakthrough AI systems...",
"body": "[Full HTML article content...]",
"body_plain": "[Plain text version...]",
"status": "published",
"category": "technology",
"tags": ["AI", "machine-learning", "NLP"],
"author": {
"id": "au_3mK8pL1nQ6",
"name": "Marcus Chen",
"slug": "marcus-chen",
"bio": "Senior technology correspondent...",
"avatar_url": "https://cdn.aevumnews.com/avatars/mc.jpg"
},
"featured_image": {
"url": "https://cdn.aevumnews.com/imgs/ai-model-2025.jpg",
"alt": "Abstract visualization of neural network connections",
"width": 1200,
"height": 630
},
"views": 14852,
"comments_count": 342,
"read_time_min": 5,
"published_at": "2025-01-15T14:30:00Z",
"created_at": "2025-01-15T10:00:00Z",
"updated_at": "2025-01-15T14:30:00Z"
}
}
➕ Articles — Create
Create a new article draft. Requires write:articles scope.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| title | string | Required | Article title (max 200 characters) |
| summary | string | Required | Short description / meta summary (max 300 chars) |
| body | string | Required | Full article body (HTML or Markdown) |
| category | string | Required | Category slug |
| tags | string[] | Optional | Array of tag strings |
| featured_image_url | string | Optional | URL of featured image |
| status | string | Optional | draft (default), published, archived |
| author_id | string | Optional | Override author. Defaults to API key owner. |
{
"title": "Global Markets React to Central Bank Policy Shifts",
"summary": "Markets worldwide adjust as major central banks signal rate adjustments amid shifting economic landscapes.",
"body": "<p>In a coordinated move...</p>",
"category": "business",
"tags": ["economy", "central-banks", "interest-rates"],
"status": "draft"
}
{
"data": {
"id": "art_9yL4nQ0rM3oS8wX5",
"title": "Global Markets React to Central Bank Policy Shifts",
"slug": "global-markets-react-central-bank",
"status": "draft",
"created_at": "2025-01-16T09:15:00Z",
"message": "Article created successfully as draft."
}
}
✏️ Articles — Update
Update an existing article. Supports both full PUT and partial PATCH operations.
{
"title": "Global Markets React to Central Bank Policy Shifts (Updated)",
"tags": ["economy", "central-banks", "interest-rates", "inflation"],
"status": "published"
}
🗑️ Articles — Delete
Permanently delete an article. This action cannot be undone.
// Empty response body on success // Response Headers: X-Deletion-Id: del_2xP7kM4qN9
📖 Stories — List
Retrieve editorial stories — collections of related articles covering a single topic or event.
| Parameter | Type | Required | Description |
|---|---|---|---|
| topic | string | Optional | Filter by topic slug |
| featured | boolean | Optional | Only return featured stories |
| limit | integer | Optional | Results per page. Max 50 |
➕ Stories — Create
{
"title": "Climate Crisis: A Comprehensive Overview",
"slug": "climate-crisis-overview",
"topic": "climate-environment",
"article_ids": ["art_8xK3mP", "art_9yL4nQ", "art_1zA5bR"],
"editor_note": "This story aggregates our best coverage on the climate crisis.",
"status": "published"
}
📡 Stories — Published Feed
Access the curated feed of all published stories. Ideal for content aggregators and news readers.
{
"data": [
{
"id": "str_4mL9pN2qR7",
"title": "Climate Crisis: A Comprehensive Overview",
"slug": "climate-crisis-overview",
"topic": "climate-environment",
"article_count": 3,
"published_at": "2025-01-14T12:00:00Z",
"featured": true
}
],
"pagination": {
"total": 47,
"count": 1,
"has_more": true
}
}
🏷️ Categories — List
{
"data": [
{ "id": "cat_1", "name": "Technology", "slug": "technology", "article_count": 1824 },
{ "id": "cat_2", "name": "Politics", "slug": "politics", "article_count": 2103 },
{ "id": "cat_3", "name": "World Affairs", "slug": "world", "article_count": 2410 },
{ "id": "cat_4", "name": "Business & Finance", "slug": "business", "article_count": 1567 },
{ "id": "cat_5", "name": "Science", "slug": "science", "article_count": 1198 },
{ "id": "cat_6", "name": "Culture & Arts", "slug": "culture", "article_count": 980 },
{ "id": "cat_7", "name": "Health", "slug": "health", "article_count": 860 },
{ "id": "cat_8", "name": "Climate & Environment", "slug": "climate", "article_count": 1120 }
]
}
➕ Categories — Create
{
"name": "Sports",
"slug": "sports",
"description": "Coverage of local and international sports events"
}
👤 Authors — List
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | Optional | Results per page. Max 50 |
| role | string | Optional | Filter by role: editor, correspondent, analyst |
👤 Authors — Retrieve
{
"data": {
"id": "au_3mK8pL1nQ6",
"name": "Marcus Chen",
"slug": "marcus-chen",
"role": "senior-correspondent",
"bio": "Senior technology correspondent covering AI, quantum computing, and semiconductor innovation.",
"avatar_url": "https://cdn.aevumnews.com/avatars/mc.jpg",
"social": {
"twitter": "@marcuschen_tech",
"linkedin": "linkedin.com/in/marcuschen"
},
"article_count": 187,
"total_views": 2400000,
"joined_at": "2021-03-10T00:00:00Z"
}
}
📊 Analytics — Overview
Access real-time and historical analytics for your content and account.
{
"data": {
"period": "last_30_days",
"total_views": 12847563,
"views_change": 12.4,
"total_articles": 847,
"avg_read_time_sec": 245,
"top_performing": {
"article_id": "art_8xK3mP9qL2nR7vW4",
"title": "AI Revolution: New Language Models...",
"views": 148520
},
"traffic_sources": {
"direct": 34.2,
"social": 28.7,
"search": 22.1,
"referral": 10.5,
"email": 4.5
}
}
}
📈 Analytics — Engagement
| Parameter | Type | Required | Description |
|---|---|---|---|
| from | date | Required | Start date (ISO 8601) |
| to | date | Required | End date (ISO 8601) |
| granularity | string | Optional | hourly, daily, weekly |
🪝 Webhooks
Configure webhooks to receive real-time event notifications from Aevum News.
{
"url": "https://your-app.com/webhooks/aevum",
"events": [
"article.published",
"article.updated",
"article.deleted",
"story.published"
],
"secret": "whsec_a8K3mP9qL2nR7vW4xY6z"
}
📬 Webhook Events
Available event types that trigger webhook payloads.
{
"event": "article.published",
"timestamp": "2025-01-15T14:30:00Z",
"data": {
"article_id": "art_8xK3mP9qL2nR7vW4",
"title": "AI Revolution: New Language Models...",
"author": "Marcus Chen",
"category": "technology",
"url": "https://aevumnews.com/ai-revolution-new-language-models"
}
}
{
"event": "article.updated",
"timestamp": "2025-01-15T16:00:00Z",
"data": {
"article_id": "art_8xK3mP9qL2nR7vW4",
"changes": [
{ "field": "title", "old": "Old Title", "new": "New Title" },
{ "field": "tags", "action": "added", "value": "quantum-computing" }
]
}
}
{
"event": "article.deleted",
"timestamp": "2025-01-15T18:00:00Z",
"data": {
"article_id": "art_8xK3mP9qL2nR7vW4",
"deleted_by": "admin",
"reason": "Editorial review"
}
}
X-Aevum-Signature header with each payload. Compare the HMAC-SHA256 hash of the raw body against the header value.
📋 Response Headers
All API responses include these standard headers.
| Header | Type | Description |
|---|---|---|
| X-RateLimit-Limit | integer | Maximum requests per window |
| X-RateLimit-Remaining | integer | Requests remaining in current window |
| X-RateLimit-Reset | integer | Unix timestamp when the window resets |
| X-Request-Id | string | Unique request ID for debugging |
| X-Aevum-Environment | string | live or sandbox |
| X-Api-Version | string | API version used (e.g., v2.1) |