AstroWay/api v2.204.2 · de
alle Systeme in Ordnung

White-label PDF ohne WordPress: inline branding über ein Feld

Das Feld whitelabel in den Schemas aller 12 Endpunkte /v1/reports/* akzeptiert jetzt nicht nur boolean (siehe DB-Konfig), sondern auch ein inline‑Objekt mit 15 Feldern. Das entfernt die Bindung an den WordPress‑Benutzer – jeder SaaS‑Konsument der API kann PDF on‑the‑fly branden, ohne eine separate Admin‑Seite.

Bis heute erforderte whitelabel: true in unseren Report-Endpunkten ein WordPress‑Konto mit konfigurierten Schlüsseln in whitelabel_configs. Das ist historisch – früher war das White‑Label eine Pro‑Funktion des WP‑Plugins, und die API las einfach dieselbe DB‑Tabelle.

Für SDK‑Nutzer ohne WP bedeutete das: brand‑config war ohne einen zusätzlichen HTTP‑Sprung nicht möglich (einen separaten Config‑Service betreiben, mit unserem synchronisieren und dann whitelabel: true senden).

Jetzt akzeptiert das Feld ein inline‑Objekt mit allen 15 Branding‑Feldern. Eine Anfrage = voller Marken‑Kontext = personalisiertes PDF.

Beispiel: PDF‑Natal‑Report mit benutzerdefiniertem Branding

Abschnitt betitelt „Beispiel: PDF‑Natal‑Report mit benutzerdefiniertem Branding“
Terminal-Fenster
curl -X POST https://api.astroway.info/v1/reports/natal \
-H "X-Api-Key: aw_live_..." \
-H "Content-Type: application/json" \
-d '{
"chart": {
"date": "1990-05-15",
"time": "14:30:00",
"timezoneOffset": 3,
"latitude": 50.45,
"longitude": 30.52,
"name": "Maria"
},
"whitelabel": {
"companyName": "Acme Astrology",
"companyUrl": "https://acme-astro.example.com",
"companyEmail": "hello@acme-astro.example.com",
"logoUrl": "https://cdn.example.com/logo.png",
"themeColor": "#ff5500",
"headingColor": "#1a1a2e",
"reportName": "My Personal Cosmic Map",
"footerText": "© 2026 Acme Astrology",
"fontPairing": "serif-sans"
}
}'

Das PDF wird mit einem Logo im Header, einem benutzerdefinierten Titel auf dem Cover, passenden theme‑color Akzenten im Chart‑SVG und einem Kontakt‑Block im Footer gerendert.

Alle optional – ein fehlendes Feld übernimmt den Wert aus der DB‑Konfiguration (wenn der API‑Schlüssel an einen WP‑Nutzer gebunden ist) oder aus den systemeigenen Defaults (für SDK‑Kunden ohne WP).

FeldTypZweck
companyNamestringMarkenname im PDF‑Header
companyUrlURLKlickbarer Link zur Website im Footer
companyEmailemailKontakt‑Link im Footer (mailto:)
companyMobilestringTelefon im Footer
companyBiostringEin Absatz mit der Unternehmensbeschreibung auf der Cover‑Seite
logoUrlURL (.png/.jpg/.svg/.webp)Logo, nur https, empfohlenes Verhältnis 200×60
frontImageURLHero‑Bild auf der Cover‑Seite
textPrimaryColor#RGB/#RRGGBBPrimär‑Textfarbe
textSecondaryColor#RGB/#RRGGBBSekundär‑Text, Metadaten
backgroundColor#RGB/#RRGGBBSeiten‑Hintergrund
themeColor#RGB/#RRGGBBAkzente, Überschriften, Aspekt‑Linien in Charts
headingColor#RGB/#RRGGBBH1/H2‑Überschriften
footerTextstringBenutzerdefinierter Copyright‑Text im Footer
fontPairingenumserif-sans / sans-serif / serif-only / sans-only / system
reportNamestringErsetzt den Standard‑Report‑Namen auf dem Cover

12 Endpunkte der Familie /v1/reports/* akzeptieren dieses Feld einheitlich: natal, transit-yearly, synastry, business, career, love, money, child, lal-kitab, human-design, tarot, vedic-kundli.

Der Boolean‑Modus ist weiterhin aktiv und hat sich nicht geändert:

  • whitelabel: true: liest die DB‑Konfiguration für den gebundenen WP‑Nutzer (wie zuvor)
  • whitelabel: false oder das Feld fehlt: Standard‑AstroWay‑Branding
  • whitelabel: {…}: Inline‑Objekt, neues Verhalten

Das OpenAPI‑Schema für das Feld ist jetzt boolean | BrandingObject (Union‑Typ). Keine bestehende Anfrage wird brechen.

Wenn der API‑Schlüssel an einen WP‑Nutzer gebunden ist und der Client ein Inline‑Objekt sendet – das Inline‑Objekt hat Vorrang vor der DB. Konkret:

  1. System‑Defaults (AstroWay‑Branding)
  2. DB‑Konfiguration aus whitelabel_configs (falls der WP‑Nutzer eine hat)
  3. Inline‑Objekt aus dem Request‑Body

Merge – shallow, Schlüssel‑für‑Schlüssel. Das heißt, inline.themeColor = "#ff5500" überschreibt den DB‑Wert, aber ein fehlendes inline.logoUrl lässt das DB‑Logo erhalten. Das ist praktisch für SaaS‑Szenarien, bei denen das Basis‑Branding in der DB liegt und per‑Tenant‑Feintuning inline kommt.

Interne Zuordnung: themeColor wird nach Aufruf von applyBrandingPreferences zu primaryColor, fontPairing wird auf den CSS‑font-family‑Stack im Handlebars‑Template gemappt (z. B. serif-sans = font-family: 'Playfair Display', serif für Überschriften + 'Inter', sans-serif für den Body).

BrandingObject ist jetzt ein separates Component in /v1/openapi.json – das bedeutet, dass das nächste SDK‑Release (TS / Python / PHP) eine typisierte Klasse erhalten wird:

// TS SDK - після наступного codegen-релізу
import { Astroway } from "@astroway/sdk";
const client = new Astroway({ apiKey: process.env.ASTROWAY_KEY });
const pdf = await client.reports.natal.create({
chart: { date: "1990-05-15", time: "14:30", /* ... */ },
whitelabel: {
companyName: "Acme Astrology",
themeColor: "#ff5500",
reportName: "My Personal Cosmic Map",
fontPairing: "serif-sans", // typed enum, autocomplete у IDE
},
});

Roadmaps der SDK‑Pakete – in den jeweiligen Staging‑Repos (astroway-typescript-staging/ROADMAP.md usw.). Der Cron veröffentlicht alle 5‑8 Tage Minor‑Releases; das typisierte BrandingObject kommt bald.

Früher war der Weg für einen SaaS‑Konsumenten, der die AstroWay‑PDF‑Generierung in sein Produkt integriert, folgender:

  1. Eine eigene Tabelle tenants mit dem Feld branding_json pflegen
  2. Vor jedem Report‑Request die Konfiguration des eigenen Users abrufen
  3. Nicht wissen, wie man das an die API ohne WP‑Plugin übergibt (früher: gar nicht, man musste uns bitten, einen Eintrag in whitelabel_configs für den SaaS‑User anzulegen)
  4. Oder das PDF‑Post‑Processing mit eigenem Renderer durchführen: das ist zusätzliche Infrastruktur

Jetzt der Weg:

  1. branding_json intern speichern
  2. Inline in whitelabel für jede Anfrage übergeben

Weniger HTTP‑Sprünge, null DB‑Synchronisation zwischen den Services, volle Kontrolle über das Branding per Request.

Der Inline‑Modus ist auf allen Tarifen verfügbar, die PDF‑Reports bieten – von Indie ($19/Monat) bis Business. Der Free‑Tier liefert kein PDF (absichtlich – im Free‑Tier gibt es nur kostenloses JSON, kein Rendering). Die Kreditkosten pro Anfrage ändern sich nicht – die Inline‑Konfiguration fügt keinen zusätzlichen credit‑cost zum Rendering hinzu.

Die Dokumentation für alle 12 Endpunkte wurde mit Beispielen für den Inline‑Modus aktualisiert. Siehe /docs/api/ → Reports.

MakSeong · AstroWay

Ich entwickle das AstroWay API: packe Swiss Ephemeris in reines REST und schreibe über langweilige Details, die eigentlich wichtig sind.

// darauf aufbauen

Derselbe Swiss Ephemeris wie in Solar Fire - in 4 Zeilen Code.

Kostenloser Schlüssel ohne Kreditkarte. 5.000 Aufrufe pro Monat vor der ersten Zahlung.

Mehr aus dem Blog alle Beiträge →

Ephemeris 2026-07-19

Wie wir die Genauigkeit unter Kontrolle halten: CI gegen swetest und NASA

Die Genauigkeit in der Astro-API verfällt leicht nach einem Refaktorings der Ephemeriden. Wir analysieren den Schutz: ein Swiss-Ephemeris-Kern für App und API, hunderte gefrorene Snapshots auf Referenzkarten und die Dreiecksverbindung jedes PR gegen swetest CGI, Kerykeion, Prokerala und das NASA-Schattenkatalog.

Engineering 2026-07-15

Drei offizielle SDK: TypeScript, Python, PHP anstelle des rauen curl

Der räudige HTTP funktioniert, aber der typisierte Client spart Stunden: Autocomplete für Routen, Typen für Anfragen und Antworten, eingebauter retry für 408/409/429/5xx und eine Stahlschicht-Struktur für Fehler. Wir zerlegen die drei offiziellen SDK - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist) - und aus welchem OpenAPI-Kontrakt sie generiert wurden.

Industry 2026-06-05

Free Astrology API: Which One Has the Best Free Tier in 2026?

A side-by-side of free tiers across the major astrology APIs - credits, request caps, card requirements - and how much you can actually build for free.