Blog-Einträge
Die Blog Entries API ermöglicht das Erstellen, Verwalten und Veröffentlichen von Blog-Artikeln.
Endpunkte
| Methode | Endpunkt | Beschreibung |
|---|---|---|
GET | /api/v1/blog/entries | Alle Einträge auflisten |
POST | /api/v1/blog/entries | Neuen Eintrag erstellen |
GET | /api/v1/blog/entries/{id} | Einzelnen Eintrag abrufen |
PUT | /api/v1/blog/entries/{id} | Eintrag aktualisieren |
DELETE | /api/v1/blog/entries/{id} | Eintrag löschen |
POST | /api/v1/blog/entries/{id}/view | View-Count erhöhen |
GET | /api/v1/blog/entries/{id}/views | View-Count abrufen |
Das BlogEntry-Objekt
{
"id": "entry_abc123",
"projectId": "proj_xyz789",
"title": {
"de": "10 Tipps für besseres Webdesign",
"en": "10 Tips for Better Web Design"
},
"slug": "10-tipps-webdesign",
"excerpt": {
"de": "Entdecken Sie die wichtigsten Prinzipien...",
"en": "Discover the key principles..."
},
"content": {
"de": "<p>Der vollständige Artikelinhalt...</p>",
"en": "<p>The full article content...</p>"
},
"featuredImage": {
"url": "https://cdn.codefluss.com/media/blog/featured.jpg",
"alt": "Webdesign Illustration"
},
"author": {
"id": "user_def456",
"name": "Max Mustermann",
"avatar": "https://cdn.codefluss.com/avatars/max.jpg"
},
"tags": ["webdesign", "tipps", "ux"],
"category": "design",
"status": "published",
"publishedAt": "2026-01-22T09:00:00Z",
"scheduledPublishAt": null,
"viewCount": 1234,
"readingTime": 5,
"seo": {
"title": "10 Tipps für besseres Webdesign | Blog",
"description": "Entdecken Sie die wichtigsten Prinzipien für modernes Webdesign.",
"keywords": ["webdesign", "tipps", "ux", "ui"]
},
"createdAt": "2026-01-20T14:00:00Z",
"updatedAt": "2026-01-22T09:00:00Z"
}Attribute
| Attribut | Typ | Beschreibung |
|---|---|---|
id | string | Eindeutige Eintrags-ID |
projectId | string | Zugehöriges Blog-Projekt |
title | object | Titel (mehrsprachig) |
slug | string | URL-Slug |
excerpt | object | Kurzbeschreibung (mehrsprachig) |
content | object | Vollständiger Inhalt (HTML, mehrsprachig) |
featuredImage | object | Titelbild |
author | object | Autor-Informationen |
tags | array | Tags für Kategorisierung |
category | string | Hauptkategorie |
status | string | draft, published, scheduled |
publishedAt | string | Veröffentlichungszeitpunkt |
scheduledPublishAt | string | Geplante Veröffentlichung |
viewCount | integer | Anzahl der Aufrufe |
readingTime | integer | Geschätzte Lesezeit (Minuten) |
seo | object | SEO-Metadaten |
createdAt | string | Erstellungszeitpunkt |
updatedAt | string | Letzte Aktualisierung |
Einträge auflisten
GET /api/v1/blog/entriesQuery-Parameter
| Parameter | Typ | Default | Beschreibung |
|---|---|---|---|
projectId | string | Pflicht | Blog-Projekt-ID |
status | string | – | Filter: draft, published, scheduled |
category | string | – | Filter nach Kategorie |
tags | string | – | Komma-separierte Tags |
author | string | – | Filter nach Autor-ID |
language | string | – | Sprache für Titel/Excerpt |
search | string | – | Suche in Titel/Inhalt |
page | integer | 1 | Seitennummer |
pageSize | integer | 10 | Einträge pro Seite |
sortBy | string | publishedAt | publishedAt, createdAt, viewCount |
sortOrder | string | desc | asc, desc |
Beispiel-Request
curl -X GET "https://api.codefluss.com/v1/blog/entries?projectId=proj_xyz789&status=published&pageSize=5" \
-H "Authorization: Bearer cf_live_abc123..."Beispiel-Response
{
"success": true,
"data": [
{
"id": "entry_abc123",
"title": { "de": "10 Tipps für besseres Webdesign" },
"slug": "10-tipps-webdesign",
"excerpt": { "de": "Entdecken Sie die wichtigsten Prinzipien..." },
"featuredImage": { "url": "...", "alt": "..." },
"author": { "name": "Max Mustermann" },
"tags": ["webdesign", "tipps"],
"status": "published",
"publishedAt": "2026-01-22T09:00:00Z",
"viewCount": 1234,
"readingTime": 5
}
],
"pagination": {
"currentPage": 1,
"pageSize": 5,
"totalItems": 1,
"totalPages": 1
}
}Eintrag erstellen
POST /api/v1/blog/entriesRequest-Body
{
"projectId": "proj_xyz789",
"title": {
"de": "Neuer Blogartikel",
"en": "New Blog Article"
},
"slug": "neuer-blogartikel",
"excerpt": {
"de": "Eine kurze Zusammenfassung...",
"en": "A brief summary..."
},
"content": {
"de": "<h2>Einleitung</h2><p>Der Artikelinhalt...</p>",
"en": "<h2>Introduction</h2><p>The article content...</p>"
},
"featuredImage": {
"mediaId": "med_abc123"
},
"authorId": "user_def456",
"tags": ["news", "update"],
"category": "news",
"status": "draft"
}Pflichtfelder
| Feld | Typ | Beschreibung |
|---|---|---|
projectId | string | Ziel-Blog-Projekt |
title | object | Titel (min. eine Sprache) |
slug | string | URL-Slug (eindeutig pro Projekt) |
Optionale Felder
| Feld | Typ | Default | Beschreibung |
|---|---|---|---|
excerpt | object | – | Kurzbeschreibung |
content | object | – | Vollständiger Inhalt |
featuredImage | object | – | Titelbild (mediaId) |
authorId | string | API-User | Autor-ID |
tags | array | [] | Tags |
category | string | – | Kategorie |
status | string | draft | Status |
seo | object | – | SEO-Konfiguration |
Eintrag veröffentlichen
Sofortige Veröffentlichung
PUT /api/v1/blog/entries/{id}{
"status": "published"
}Geplante Veröffentlichung
{
"status": "scheduled",
"scheduledPublishAt": "2026-02-01T09:00:00Z"
}Der Cron-Job /api/v1/blog/cron/scheduled-publish veröffentlicht geplante Artikel automatisch.
View-Count erhöhen
POST /api/v1/blog/entries/{id}/viewDieser Endpunkt erhöht den viewCount um 1. Er sollte beim Laden eines Artikels aufgerufen werden.
Response
{
"success": true,
"data": {
"viewCount": 1235
}
}View-Count abrufen
GET /api/v1/blog/entries/{id}/viewsResponse
{
"success": true,
"data": {
"viewCount": 1235,
"lastViewed": "2026-01-23T10:30:00Z"
}
}Eintrag löschen
DELETE /api/v1/blog/entries/{id}Hinweis: Gelöschte Einträge werden unwiderruflich entfernt.
Lesezeit-Berechnung
Die readingTime wird automatisch basierend auf der Wortanzahl berechnet:
- Durchschnittliche Lesegeschwindigkeit: 200 Wörter/Minute
- Minimum: 1 Minute
- Bilder: +10 Sekunden pro Bild
Slug-Validierung
Slugs müssen folgende Regeln erfüllen:
- Nur Kleinbuchstaben, Zahlen und Bindestriche
- 3-100 Zeichen
- Darf nicht mit Bindestrich beginnen oder enden
- Muss innerhalb des Projekts eindeutig sein
Fehler
| Code | Beschreibung |
|---|---|
400 | Ungültige Daten oder Slug-Format |
401 | Nicht authentifiziert |
403 | Keine Berechtigung |
404 | Eintrag nicht gefunden |
409 | Slug bereits vergeben |
Nächste Schritte
- Blog-Tags – Tags verwalten
- Blog-Einstellungen – Projekteinstellungen