Für Entwickler

Deine Inhalte. Jedes Frontend. Jede Sprache.

REST-API, JavaScript SDK, PHP SDK, Web Components — drei Wege, Publino-Inhalte in jede Plattform zu integrieren.

schnellstart.js
// 1. SDK installieren
npm install @publino/sdk

// 2. Client initialisieren
import { PublinoClient } from '@publino/sdk'
const client = new PublinoClient({
  apiKey: 'pub_live_…', siteId: 'mein-blog'
})

// 3. Artikel abrufen
const { articles } = await client.articles.list({
  locale: 'de', status: 'published'
})
✓ { articles: [ … ] }
Authentifizierung

Zwei Schlüsseltypen. Sicher & flexibel.

Publino unterscheidet zwischen server- und browserseitigem Zugriff. Beide verwenden Bearer Authentication — aber mit unterschiedlichen Berechtigungen.

SECRET KEY pub_live_…

Serverseitig. Voller Lesezugriff. Niemals im Browser oder Client-Code verwenden.

Nur serverseitig · Node, PHP, Backend
PUBLISHABLE KEY pub_pub_…

Browserseitig. Nur veröffentlichte Inhalte. Mit Origin-Allowlist gesichert.

Browser-safe · embed.js · Next.js Client
Bearer Authentication
// HTTP Request mit Bearer Auth
GET /v1/sites/{siteId}/articles
Authorization: Bearer pub_live_xxxxxxxxxxxx

// Rate Limiting & Caching Headers
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 994
ETag: "abc123def"

// 304 Not Modified bei unverändertem Inhalt
If-None-Match: "abc123def"304
REST API

Saubere Endpunkte. Stabile IDs.

Alle Inhalte sind über stabile Public-IDs abrufbar. Slugs ändern sich nie rückwirkend — URLs bleiben dauerhaft gültig. Basis-URL: https://api.publino.de/v1

Methode
Endpunkt
Beschreibung
GET
/v1/sites/{siteId}/articles
Alle veröffentlichten Artikel einer Site, optional gefiltert nach Sprache, Kategorie oder Tag
GET
/v1/sites/{siteId}/articles/{slug}-{publicId}
Einzelnen Artikel per Slug-PublicId abrufen. Antwort enthält readingMinutes.
GET
/v1/sites/{siteId}/categories
Alle Kategorien der Site — mit Slug, Beschreibung und Artikel-Zähler
GET
/v1/sites/{siteId}/tags
Alle Tags der Site mit Artikel-Zähler
GET
/v1/sites/{siteId}/meta
Site-Metadaten: Name, Sprachen, Publisher-Infos, Schema.org-Basis
Query-Parameter für /articles
locale=de
Sprache filtern. ISO 639-1 Code.
category=news
Nach Kategorie-Slug filtern.
tag=ki
Nach Tag-Slug filtern.
limit=20
Max. Artikel pro Seite. Standard: 20.
offset=20
Offset für Pagination.
format=html|md
Body als HTML oder Markdown.
SDKs

Für jeden Stack das passende Tool

Vollständig typisiert, ohne Abhängigkeiten von Drittanbietern.

next.js — app/blog/page.tsx
import { PublinoClient } from '@publino/sdk'
const client = new PublinoClient({
  apiKey: process.env.PUBLINO_API_KEY,
  siteId: 'mein-blog'
})

export default async function Page() {
  const { articles } = await
    client.articles.list({ locale: 'de' })
  return <ArticleList items={articles} />
}
JavaScript / TypeScript SDK
npm

Für Next.js, Nuxt, Remix, Astro oder pures Node.js. Vollständig typisiert, tree-shakeable, zero dependencies.

npm install @publino/sdk
wordpress — functions.php
require_once 'vendor/autoload.php';
use Publino\PublinoClient;

$client = new PublinoClient([
  'apiKey' => getenv('PUBLINO_API_KEY'),
  'siteId' => 'mein-blog'
]);

$articles = $client
  ->articles()->list(['locale' => 'de']);
PHP SDK
composer

Zero dependencies. Für WordPress, TYPO3, Laravel oder Custom-PHP. PSR-18-kompatibel — bringt keinen HTTP-Client mit, nutzt Ihren.

composer require publino/sdk-php
embed.js

Kein Backend. Ein Tag. Fertig.

Das embed.js Web Component lädt Publino-Inhalte direkt im Browser — gesichert über den Publishable Key und Origin-Allowlist. Ideal für statische Sites, Shopify, Webflow oder jeden HTML-Kontext.

  • Nur veröffentlichte Artikel sichtbar (Publishable Key)
  • Zugriff auf gelistete Origins beschränkbar
  • Kein Build-Tool, kein Node.js, kein Backend nötig
  • Styling via CSS Custom Properties oder Slot-basiertem Template
index.html
<!-- 1. Script einbinden -->
<script src="https://cdn.publino.de/embed.js"></script>

<!-- 2. Artikel-Liste einbetten -->
<publino-article-list
  site-id="mein-blog"
  locale="de"
  limit=5>
</publino-article-list>

<!-- 3. Einzelartikel -->
<publino-article
  site-id="mein-blog"
  slug="ki-in-der-redaktion"
  locale="de">
</publino-article>
Webhook Payload — article.published
POST https://ihr-system.de/webhook
Content-Type: application/json

{
  "event": "article.published",
  "timestamp": 1737021600,
  "siteId": "mein-blog",
  "articleId": "art_dX72kLm",
  "locale": "de",
  "slug": "ki-in-der-redaktion",
  "title": "KI in der Redaktion"
}

// Erwartete Antwort: 200 OK
HTTP/1.1 200 OK
Outbound Webhooks

Ihr System reagiert in Echtzeit

Konfigurieren Sie beliebig viele Endpunkte — Publino sendet einen HTTP-POST, sobald sich der Content-Status ändert. Kein Polling, keine Verzögerung.

article.published Artikel wird veröffentlicht
article.updated Veröffentlichter Artikel geändert
article.unpublished Artikel depubliziert / archiviert
Retry-Logik: Bei Timeout oder Fehler-Statuscode (non-2xx) wird bis zu 3× nachversucht — mit exponential Backoff.
OpenAPI

Vollständige Spec. Try it live.

Die komplette Publino API ist als OpenAPI 3.1 Spec verfügbar. Öffnen Sie die interaktive Doku und testen Sie Endpunkte direkt im Browser — mit Ihrem eigenen API-Key.

  • OpenAPI 3.1 — maschinenlesbar, tools-kompatibel
  • Try-it-out direkt im Browser mit Bearer Auth
  • Code-Snippets in curl, JS, Python, PHP auto-generiert
  • Download als JSON für Postman, Insomnia, Bruno
Publino Delivery API · v1 OAS 3.1
GET /v1/sites/{siteId}/articles List articles
GET /v1/sites/{siteId}/articles/{slug} Get article
PARAMETERS
siteId *required string
slug *required string
locale string · ISO 639-1
format "html" | "md"
GET /v1/sites/{siteId}/categories List categories
GET /v1/sites/{siteId}/tags List tags