Hasta hoy whitelabel: true en nuestros endpoints de report requería una cuenta de WordPress con claves configuradas en whitelabel_configs. Esto es histórico: anteriormente el white label era una función Pro del plugin de WP, y la API simplemente leía esa misma tabla de la base de datos.
Para los usuarios del SDK sin WP esto significaba: la configuración de marca era imposible sin un salto HTTP adicional (tener un servicio de configuración separado, sincronizarlo con el nuestro y luego enviar whitelabel: true).
Ahora el campo acepta un objeto inline con los 15 campos de branding. Un request = contexto completo de marca = PDF personalizada.
Ejemplo: informe PDF natal con branding personalizado
Sección titulada «Ejemplo: informe PDF natal con branding personalizado»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" } }'El PDF se renderiza con el logo en el encabezado, un título personalizado en la portada, acentos de theme-color correspondientes en el SVG del gráfico y un bloque de contactos en el pie de página.
Todos los 15 campos del objeto
Sección titulada «Todos los 15 campos del objeto»Todos opcionales - el campo omitido toma el valor de la configuración de la DB (si la clave de API está vinculada a un usuario de WP) o de los valores predeterminados del sistema (para clientes del SDK sin WP).
| Campo | Tipo | Descripción |
|---|---|---|
companyName | string | Nombre de la marca en el encabezado del PDF |
companyUrl | URL | Enlace clickeable al sitio web en el pie de página |
companyEmail | Enlace de contacto en el pie de página (mailto:) | |
companyMobile | string | Teléfono en el pie de página |
companyBio | string | Un párrafo describiendo la compañía en la página de portada |
logoUrl | URL (.png/.jpg/.svg/.webp) | Logo, solo https, proporción recomendada 200×60 |
frontImage | URL | Imagen hero en la página de portada |
textPrimaryColor | #RGB/#RRGGBB | Texto principal |
textSecondaryColor | #RGB/#RRGGBB | Subtítulos, metadatos |
backgroundColor | #RGB/#RRGGBB | Fondo de las páginas |
themeColor | #RGB/#RRGGBB | Acentos, encabezados, líneas de aspecto en los gráficos |
headingColor | #RGB/#RRGGBB | Encabezados H1/H2 |
footerText | string | Texto de copyright personalizado en el pie de página |
fontPairing | enum | serif-sans / sans-serif / serif-only / sans-only / system |
reportName | string | Reemplaza el nombre predeterminado del informe en la portada |
12 endpoints de la familia /v1/reports/* aceptan este campo de la misma manera: natal, transit-yearly, synastry, business, career, love, money, child, lal-kitab, human-design, tarot, vedic-kundli.
Compatibilidad hacia atrás
Sección titulada «Compatibilidad hacia atrás»El modo booleano sigue vigente y no ha cambiado:
whitelabel: true: lee la configuración de la DB para el usuario de WP vinculado (como antes)whitelabel: falseo el campo ausente: branding estándar de AstroWaywhitelabel: {…}: objeto inline, nuevo comportamiento
El esquema OpenAPI para el campo se convirtió en boolean | BrandingObject (tipo unión). Ninguna solicitud existente se romperá.
Prioridad de resolución
Sección titulada «Prioridad de resolución»Cuando la clave de API está vinculada a un usuario de WP y el cliente envía un objeto inline, el inline tiene prioridad sobre la DB. Específicamente:
- Valores predeterminados del sistema (branding de AstroWay)
- Configuración de la DB desde
whitelabel_configs(si el usuario de WP tiene uno) - Objeto inline del cuerpo de la solicitud
La fusión es superficial, clave por clave. Es decir, inline.themeColor = "#ff5500" sobrescribirá el valor de la DB, pero si inline.logoUrl está ausente, se mantendrá el logo de la DB. Esto es útil para escenarios SaaS donde el branding básico reside en la DB y el ajuste fino por tenant llega inline.
El mapeo interno: themeColor se convierte en primaryColor después de llamar a applyBrandingPreferences, fontPairing se mapea a la pila CSS font-family en la plantilla Handlebars (por ejemplo, serif-sans = font-family: 'Playfair Display', serif para encabezados + 'Inter', sans-serif para el cuerpo).
OpenAPI 3.1 + tipado de SDK
Sección titulada «OpenAPI 3.1 + tipado de SDK»BrandingObject ahora es un componente separado en /v1/openapi.json - esto significa que la próxima versión del SDK (TS / Python / PHP) recibirá una clase tipada:
// 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 },});Los roadmaps de los paquetes SDK están en los repositorios de staging correspondientes (astroway-typescript-staging/ROADMAP.md, etc.). Cron publica lanzamientos menores cada 5-8 días; el BrandingObject tipado estará en la próxima versión.
Qué elimina
Sección titulada «Qué elimina»Antes, para un consumidor SaaS que integra la generación de PDF de AstroWay en su propio producto, el flujo era:
- Molestarse manteniendo una tabla
tenantscon el campobranding_json - Antes de cada solicitud de report: obtener la configuración de su usuario
- No entender cómo enviarlo a la API sin el plugin de WP (antes: imposible, había que pedírnosnos que creáramos una entrada en
whitelabel_configspara el usuario SaaS) - O bien hacer postprocesamiento de PDF con su propio renderizado: eso es infra adicional
Ahora el flujo es:
- Guardar
branding_jsonen su lado - Enviar inline en
whitelabelpara cada solicitud
Menos saltos HTTP, cero sincronización de DB entre servicios, control total sobre el branding por solicitud.
Disponibilidad
Sección titulada «Disponibilidad»El modo inline está disponible en todos los planes que incluyen reportes PDF, desde Indie ($19/міс) hasta Business. El nivel gratuito no incluye PDF (intencionalmente: en el plan gratuito hay JSON gratuito, sin renderizado). El costo en créditos de la solicitud no cambia: la configuración inline no agrega costo de crédito adicional sobre el renderizado.
La documentación de todos los 12 endpoints se ha actualizado con ejemplos del modo inline. Mira /docs/api/ → Reports.
El mismo Swiss Ephemeris que en Solar Fire - en 4 líneas de código.
Clave gratuita sin tarjeta. 5 000 llamadas al mes antes del primer pago.