Back to Docs

SVG/PNG Chart Generator

SVG/PNG Chart Generator

POST/api/v1/natal/chart/

Generate beautiful, customizable natal chart visualizations in SVG or high-resolution PNG format. Full control over colors, sizes, celestial bodies, and visual styling.

Unknown birth time is supported with time_known: false; houses and angles are omitted in that mode.

Related SVG Endpoints

Use the single-wheel natal endpoint for one person. For relationship charts, the SVG family also includes midpoint composite and synastry variants.

Example Output

Standard Natal Example
Example natal chart generated by the API
French Style Example
French-style natal chart generated by the API using the default SVG theme

Real API-generated SVG using the default theme with chart_config.french_style: true.

Traditional and Modern Decan Rings

Set chart_config.show_decans to true to add 36 ten-degree faces immediately inside the zodiac signs. The renderer reserves a compact radial band for the planetary ruler glyphs and moves the inner chart content inward so the ring does not overlap planets, houses, or aspects.

Traditional Chaldean

Use traditional_chaldean, or the backward-compatible chaldean alias. The repeating Chaldean order uses Saturn, Jupiter, Mars, Sun, Venus, Mercury, and Moon; the first face at 0° Aries is ruled by Mars.

Modern Triplicity

Use modern_triplicity for elemental-triplicity rulers with modern rulerships. This system includes Uranus, Neptune, and Pluto.

Standard natal SVG chart with the traditional Chaldean decan ruler ring

Traditional · Standard Layout

The default compact 0.04-radius band uses small, dark ruler glyphs and independent circle/separator styling.

{
  "format": "svg",
  "chart_config": {
    "show_decans": true,
    "decan_system": "traditional_chaldean",
    "decan_ring_thickness_fraction": 0.04,
    "decan_symbol_scale": 0.14,
    "decan_symbol_color": "#2C3237",
    "decan_ring_line_width": 0.8,
    "decan_ring_line_color": "#111827",
    "decan_separator_width": 0.8,
    "decan_separator_color": "#6B7280"
  }
}
French-style natal SVG chart with the modern triplicity decan ruler ring

Modern · French Layout

French mode uses the same 36 sectors while preserving its outside-house and outside-planet geometry.

{
  "format": "svg",
  "chart_config": {
    "show_decans": true,
    "decan_system": "modern_triplicity",
    "french_style": true,
    "houses_inside_planets": false,
    "decan_symbol_scale": 0.14,
    "decan_background_opacity": 0.08
  }
}
The SVG wraps the feature in <g id="decans">. Each sector exposes data-decan-sign, data-decan-number, and data-decan-ruler for downstream highlighting or tooltips. Decans are disabled by default, so existing chart output is unchanged.

Horoscope Shape Overlay

Set chart_config.show_horoscope_shape to true to detect the chart distribution shape from the 10 planets only. When a shape is detected, the central aspect mesh is hidden and replaced by a readable filled geometry.

Natal chart SVG with horoscope shape bucket overlay rendered in the center disk

Real API Output

This SVG was generated by POST /api/v1/natal/chart/ with a detected Bucket shape. The response includes data-key="horoscope_shape.bucket" and optional JSON metadata in freeastroapi-horoscope-shape.

Use these chart_config fields

show_horoscope_shapehoroscope_shape_stylehoroscope_shape_colorhoroscope_shape_labelembed_horoscope_shape_metadata

Supported shapes and detector rules

Bundle
All 10 planets fit inside a 120° occupied arc.
Bucket
One handle planet, or one tight two-planet handle cluster, sits outside the main group. The remaining planets must fit within 181°, with no minimum cluster span; the handle cluster must span no more than 15°, the handle must be at least 30° from the main group, and the full chart must extend beyond a single 180° arc.
Bowl
All 10 planets occupy a continuous arc greater than 120° and no more than 210°, with a large empty gap of at least 150°. If one planet or a tight two-planet cluster stands apart as a handle, Bucket takes priority.
See-Saw
Two separated clusters, with the largest empty gap at least 90° and the second-largest empty gap at least 50°.
Locomotive
Planets occupy more than 210° and no more than 260°, leaving one leading empty gap from 100° up to, but not including, 150°.
Splash
Broad distribution with no large empty gap: the largest and second-largest interplanetary gaps are both under 60°.

Shape detection uses only Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, and Pluto. Angles, nodes, asteroids, Lilith, Chiron, and lots do not affect the detected shape.

Aspect Pattern Overlay

Use chart_config.show_pattern_overlays to render detected aspect structures directly on top of the chart. Pattern overlays keep the normal aspect circle visible and add highlighted underlays, strokes, labels, and stable SVG attributes for UI interaction.

Natal chart SVG with a single filtered Grand Cross aspect pattern overlay

Real API Output

This SVG shows a filtered Grand Cross overlay only, matching a setup with pattern_overlay_types set to grand_cross and pattern_overlay_max_items set to 1. Rendered elements include attributes such as data-pattern-type, data-bodies, and data-key="pattern.*" so your UI can highlight, filter, or explain that selected structure.

Use these chart_config fields

show_pattern_overlayspattern_overlay_typespattern_overlay_stylepattern_overlay_labelspattern_overlay_max_itemsembed_pattern_metadata

Supported rendered structures include grand_trine, t_square, yod, kite, grand_cross, minor_grand_trine, wedge, mystic_rectangle, cradle, castle, grand_sextile, and stellium.

Theme Preview Gallery

Three production-style chart themes rendered from API presets. Images are optimized WebP previews to demonstrate quality and performance.

Classic Clarity astrology chart theme preview

Classic Clarity

Balanced consultation profile with restrained line hierarchy.

Navy Gold astrology chart theme preview

Navy Gold

Dark premium palette with high-contrast symbolic readability.

Slate Mineral astrology chart theme preview

Slate Mineral

Neutral cool-gray palette for technical chart reading.

Editorial Theme Presets (Color-Only)

These presets use existing request parameters only. They do not require any internal renderer changes.

Ivory Ink

Light editorial palette with warm paper tones and restrained ink contrast.

{
  "name": "Theme: Ivory Ink",
  "year": 1990,
  "month": 5,
  "day": 15,
  "hour": 14,
  "minute": 30,
  "city": "London",
  "lat": 51.5,
  "lng": -0.12,
  "tz_str": "UTC",
  "format": "png",
  "theme_type": "light",
  "chart_config": {
    "chart_background": "#F6F1E8",
    "custom_planet_color": "#1E1B18",
    "custom_sign_color": "#6A5B48",
    "custom_house_color": "#3E362C",
    "custom_sign_bg_color": "#EFE4D3",
    "custom_house_bg_color": "#FAF6EE",
    "sign_line_color": "#3A3128",
    "house_line_color": "#8C7C68",
    "aspect_conjunction_color": "#2F2A24",
    "aspect_opposition_color": "#A1362A",
    "aspect_trine_color": "#1F4E79",
    "aspect_square_color": "#8F2B23",
    "aspect_sextile_color": "#355E8D",
    "aspect_quincunx_color": "#4D6A3A"
  }
}

Navy Gold

Dark premium palette with navy base and muted gold symbols/lines.

{
  "name": "Theme: Navy Gold",
  "year": 1990,
  "month": 5,
  "day": 15,
  "hour": 14,
  "minute": 30,
  "city": "London",
  "lat": 51.5,
  "lng": -0.12,
  "tz_str": "UTC",
  "format": "png",
  "theme_type": "dark",
  "chart_config": {
    "chart_background": "#0D1B2A",
    "custom_planet_color": "#E7D3A5",
    "custom_sign_color": "#C9B27C",
    "custom_house_color": "#A7B8C9",
    "custom_sign_bg_color": "#14263B",
    "custom_house_bg_color": "#102034",
    "sign_line_color": "#D8C08A",
    "house_line_color": "#60758D",
    "aspect_conjunction_color": "#D6DCE5",
    "aspect_opposition_color": "#E06C5B",
    "aspect_trine_color": "#6EA8FF",
    "aspect_square_color": "#C85C53",
    "aspect_sextile_color": "#7EB7FF",
    "aspect_quincunx_color": "#7EBB8D"
  }
}

Slate Mineral

Neutral cool-gray palette with mineral blue-green aspect accents.

{
  "name": "Theme: Slate Mineral",
  "year": 1990,
  "month": 5,
  "day": 15,
  "hour": 14,
  "minute": 30,
  "city": "London",
  "lat": 51.5,
  "lng": -0.12,
  "tz_str": "UTC",
  "format": "png",
  "theme_type": "light",
  "chart_config": {
    "chart_background": "#E9EDF1",
    "custom_planet_color": "#22313F",
    "custom_sign_color": "#3F5D73",
    "custom_house_color": "#4D5B66",
    "custom_sign_bg_color": "#DCE4EA",
    "custom_house_bg_color": "#EEF2F6",
    "sign_line_color": "#2F3D49",
    "house_line_color": "#7D8C98",
    "aspect_conjunction_color": "#3A4955",
    "aspect_opposition_color": "#B04A3B",
    "aspect_trine_color": "#2B6F9C",
    "aspect_square_color": "#9A3E33",
    "aspect_sextile_color": "#3D7FAF",
    "aspect_quincunx_color": "#4A7A63"
  }
}

Classic Clarity

Professional consultation baseline with restrained line hierarchy and cleaner aspect mesh.

{
  "name": "Theme: Classic Clarity",
  "year": 1990,
  "month": 5,
  "day": 15,
  "hour": 14,
  "minute": 30,
  "city": "London",
  "lat": 51.5,
  "lng": -0.12,
  "tz_str": "UTC",
  "format": "png",
  "theme_type": "light",
  "chart_config": {
    "sign_line_width": 1.6,
    "house_line_width": 0.9,
    "asc_line_width": 2.4,
    "dsc_line_width": 2.4,
    "mc_line_width": 2.4,
    "ic_line_width": 2.4,
    "sign_ring_inner_width": 1.2,
    "sign_ring_outer_width": 1.6,
    "house_ring_inner_width": 0.8,
    "house_ring_outer_width": 0.9,
    "sign_tick_width": 0.45,
    "aspect_conjunction_width": 2.2,
    "aspect_opposition_width": 2.2,
    "aspect_trine_width": 1.8,
    "aspect_square_width": 2.0,
    "aspect_sextile_width": 1.5,
    "aspect_quincunx_width": 1.3
  }
}

Dense Analysis

Advanced technical profile with stronger axis/ring/aspect weights for high-detail reading.

{
  "name": "Theme: Dense Analysis",
  "year": 1990,
  "month": 5,
  "day": 15,
  "hour": 14,
  "minute": 30,
  "city": "London",
  "lat": 51.5,
  "lng": -0.12,
  "tz_str": "UTC",
  "format": "png",
  "theme_type": "light",
  "chart_config": {
    "sign_line_width": 2.6,
    "house_line_width": 1.35,
    "asc_line_width": 3.6,
    "dsc_line_width": 3.6,
    "mc_line_width": 3.6,
    "ic_line_width": 3.6,
    "sign_ring_inner_width": 1.9,
    "sign_ring_outer_width": 2.6,
    "house_ring_inner_width": 1.2,
    "house_ring_outer_width": 1.3,
    "sign_tick_width": 0.62,
    "aspect_conjunction_width": 3.2,
    "aspect_opposition_width": 3.2,
    "aspect_trine_width": 2.6,
    "aspect_square_width": 2.9,
    "aspect_sextile_width": 2.3,
    "aspect_quincunx_width": 2.0
  }
}

Full URL

https://api.freeastroapi.com/api/v1/natal/chart/

Base Parameters

Parameter
name
Type
string
Required
Yes
Default
-
Description
Subject name (displayed in metadata)
Parameter
year
Type
integer
Required
Yes
Default
-
Description
Birth year (e.g., 1990)
Parameter
month
Type
integer
Required
Yes
Default
-
Description
Birth month (1-12)
Parameter
day
Type
integer
Required
Yes
Default
-
Description
Birth day (1-31)
Parameter
hour
Type
integer
Required
Yes
Default
-
Description
Birth hour (0-23, 24-hour format)
Parameter
minute
Type
integer
Required
Yes
Default
-
Description
Birth minute (0-59)
Parameter
time_known
Type
boolean
Required
No
Default
true
Description
Set false when birth time is unknown. In that mode, houses and angles are omitted from the chart.
Parameter
city
Type
string
Required
No
Default
-
Description
City name. Optional when lat/lng are provided; used for coordinate lookup when they are omitted.
Parameter
lat
Type
float
Required
No
Default
auto
Description
Latitude (-90 to 90). Required together with lng if city is omitted.
Parameter
lng
Type
float
Required
No
Default
auto
Description
Longitude (-180 to 180). Required together with lat if city is omitted.
Parameter
tz_str
Type
string
Required
No
Default
AUTO
Description
Timezone (e.g., 'Europe/Paris' or 'AUTO')
Parameter
house_system
Type
string
Required
No
Default
placidus
Description
placidus, whole_sign, equal, koch, etc.
Parameter
zodiac_type
Type
string
Required
No
Default
tropical
Description
tropical or sidereal
Parameter
sidereal_ayanamsa
Type
string
Required
No
Default
lahiri
Description
lahiri, raman, kp, etc. (sidereal only)
Parameter
orb_settings
Type
object
Required
No
Default
7/6/6/6/5/0
Description
Partial per-aspect detection orbs in degrees. The same overrides determine which SVG aspect lines are drawn. Chart defaults are conjunction 7, opposition/trine/square 6, sextile 5, and quincunx 0 (or 3 with include_minor_aspects=true). Supports calculation-only minor aspects too; names are case-insensitive, values range from 0 to 30, and 0 disables that aspect type.

Chart Output Parameters

Parameter
format
Type
string
Required
No
Default
svg
Description
Output format: 'svg' or 'png'
Parameter
size
Type
integer
Required
No
Default
700
Description
Chart width/height in pixels
Parameter
theme_type
Type
string
Required
No
Default
light
Description
Theme: 'light', 'dark', or 'mono'
Parameter
png_quality_scale
Type
float
Required
No
Default
2.0
Description
PNG resolution multiplier (1.0-5.0)
Parameter
show_metadata
Type
boolean
Required
No
Default
true
Description
Show metadata block (name, date, location)
Parameter
display_settings
Type
object
Required
No
Default
{}
Description
Per-body visibility toggles for planets, angles, and optional points.
Parameter
chart_config
Type
object
Required
No
Default
{}
Description
Advanced visual styling and layout overrides. See the Chart Configuration section below for supported fields.

Fixed Stars

Fixed stars requested on chart SVGs render in the same body wheel as planets and points, using a three-letter label such as Reg or Ald. Aspect lines are opt-in through chart_config.show_fixed_star_aspects and default to tight conjunctions only.

Parameter
fixed_stars
Type
array<string>
Required
No
Default
[]
Description
Fixed-star selector rendered in the body wheel. Accepts pack ids such as royal_4 and behenian_20, exact fixed-star names such as Spica or Regulus, or all for the full default set.
Parameter
chart_config.fixed_star_color
Type
string
Required
No
Default
theme points color
Description
Color for fixed-star labels, connectors, and opt-in fixed-star aspect lines.
Parameter
chart_config.show_fixed_star_aspects
Type
boolean
Required
No
Default
false
Description
Opt in to fixed-star aspect lines.
Parameter
chart_config.fixed_star_aspect_types
Type
array<string>
Required
No
Default
['conjunction']
Description
Aspect types to draw for fixed stars. Supports conjunction, opposition, trine, square, sextile, quincunx.
Parameter
chart_config.fixed_star_aspect_orb
Type
float
Required
No
Default
1.0
Description
Orb in degrees for fixed-star aspects.

The 20 Classical/Behenian Stars

The full list of important fixed stars for traditional astrology workflows.

"fixed_stars": ["behenian_20"]

The 4 Royal Stars

Regulus, Aldebaran, Antares, and Fomalhaut.

"fixed_stars": ["royal_4"]
{
  "name": "Natal Chart with Royal Fixed Stars",
  "year": 1990,
  "month": 5,
  "day": 15,
  "hour": 14,
  "minute": 30,
  "city": "London",
  "lat": 51.5,
  "lng": -0.12,
  "tz_str": "UTC",
  "format": "svg",
  "theme_type": "light",
  "fixed_stars": ["royal_4"],
  "chart_config": {
    "degree_label_format": "minutes",
    "show_planet_connectors": true,
    "show_fixed_star_aspects": true,
    "fixed_star_aspect_types": ["conjunction"],
    "fixed_star_aspect_orb": 1.0,
    "fixed_star_color": "#A16207"
  }
}

Display Settings (display_settings object)

Control which celestial bodies appear on the chart:

Parameter
sun
Type
boolean
Required
No
Default
true
Description
Show Sun
Parameter
moon
Type
boolean
Required
No
Default
true
Description
Show Moon
Parameter
mercury
Type
boolean
Required
No
Default
true
Description
Show Mercury
Parameter
venus
Type
boolean
Required
No
Default
true
Description
Show Venus
Parameter
mars
Type
boolean
Required
No
Default
true
Description
Show Mars
Parameter
jupiter
Type
boolean
Required
No
Default
true
Description
Show Jupiter
Parameter
saturn
Type
boolean
Required
No
Default
true
Description
Show Saturn
Parameter
uranus
Type
boolean
Required
No
Default
true
Description
Show Uranus
Parameter
neptune
Type
boolean
Required
No
Default
true
Description
Show Neptune
Parameter
pluto
Type
boolean
Required
No
Default
true
Description
Show Pluto
Parameter
north_node
Type
boolean
Required
No
Default
true
Description
Show North Node
Parameter
south_node
Type
boolean
Required
No
Default
false
Description
Show South Node
Parameter
chiron
Type
boolean
Required
No
Default
false
Description
Show Chiron
Parameter
chiron_invisible_door
Type
boolean
Required
No
Default
false
Description
Show Chiron's Invisible Door (PI), the directed zodiacal midpoint from Uranus to Saturn.
Parameter
chiron_visible_door
Type
boolean
Required
No
Default
false
Description
Show Chiron's Visible Door (PV), the point opposite PI.
Parameter
lilith
Type
boolean
Required
No
Default
false
Description
Show Mean Black Moon Lilith (preferred; alias: mean_lilith)
Parameter
true_lilith
Type
boolean
Required
No
Default
false
Description
Show True (oscillating) Black Moon Lilith
Parameter
eris
Type
boolean
Required
No
Default
false
Description
Show Eris
Parameter
eros
Type
boolean
Required
No
Default
false
Description
Show Eros
Parameter
ceres
Type
boolean
Required
No
Default
false
Description
Show Ceres
Parameter
pallas
Type
boolean
Required
No
Default
false
Description
Show Pallas
Parameter
juno
Type
boolean
Required
No
Default
false
Description
Show Juno
Parameter
vesta
Type
boolean
Required
No
Default
false
Description
Show Vesta
Parameter
asc
Type
boolean
Required
No
Default
true
Description
Show Ascendant
Parameter
ic
Type
boolean
Required
No
Default
false
Description
Show IC
Parameter
dsc
Type
boolean
Required
No
Default
false
Description
Show Descendant
Parameter
mc
Type
boolean
Required
No
Default
true
Description
Show MC
Parameter
part_of_fortune
Type
boolean
Required
No
Default
false
Description
Show Part of Fortune (Arabic Lot)

Chart Configuration (chart_config object)

Fine-tune the visual appearance of the chart:

Parameter
sign_ring_thickness_fraction
Type
float
Required
No
Default
0.16
Description
Sign ring thickness (0.0-1.0)
Parameter
house_ring_thickness_fraction
Type
float
Required
No
Default
0.05
Description
House ring thickness (0.0-1.0)
Parameter
center_disk_fraction
Type
float
Required
No
Default
0.45
Description
Center disk radius (0.0-1.0)
Parameter
show_decans
Type
boolean
Required
No
Default
false
Description
Render an opt-in inner ring of 36 ten-degree decans. Supported in both standard and French chart layouts.
Parameter
decan_system
Type
string
Required
No
Default
chaldean
Description
Ruler system: "chaldean" or its explicit alias "traditional_chaldean" for the seven classical planets, or "modern_triplicity" to include Uranus, Neptune, and Pluto.
Parameter
decan_ring_thickness_fraction
Type
float
Required
No
Default
0.04
Description
Radial thickness of the decan band as a fraction of chart radius. Allowed range: greater than 0 through 0.2.
Parameter
decan_symbol_scale
Type
float
Required
No
Default
0.14
Description
Scale of each planetary ruler glyph. Allowed range: greater than 0 through 1.5.
Parameter
decan_symbol_stroke_width
Type
float
Required
No
Default
1.2
Description
Stroke width of the planetary ruler glyphs. Allowed range: 0-10.
Parameter
decan_symbol_color
Type
string
Required
No
Default
null
Description
Optional ruler glyph color. When omitted, the renderer uses a dark theme-aware foreground (near-charcoal #2c3237 on the default light background).
Parameter
decan_line_width
Type
float
Required
No
Default
0.8
Description
Backward-compatible shared fallback width for the decan ring circles and radial separators. Allowed range: 0-10.
Parameter
decan_line_color
Type
string
Required
No
Default
null
Description
Backward-compatible shared fallback color for the decan ring circles and radial separators.
Parameter
decan_ring_line_width
Type
float
Required
No
Default
null
Description
Independent stroke width for the inner and outer decan ring circles. Uses decan_line_width when omitted; set to 0 to hide both circles.
Parameter
decan_ring_line_color
Type
string
Required
No
Default
null
Description
Independent color for the inner and outer decan ring circles. Uses decan_line_color when omitted.
Parameter
decan_separator_width
Type
float
Required
No
Default
null
Description
Independent stroke width for the 36 radial ten-degree separators. Uses decan_line_width when omitted; set to 0 to hide separators.
Parameter
decan_separator_color
Type
string
Required
No
Default
null
Description
Independent color for the radial decan separators. Uses decan_line_color when omitted.
Parameter
decan_background_color
Type
string
Required
No
Default
null
Description
Optional uniform decan-band fill. When omitted, adjacent faces receive a subtle alternating theme tint.
Parameter
decan_background_opacity
Type
float
Required
No
Default
0.08
Description
Strength of the alternating decan background tint when no uniform fill is supplied. Allowed range: 0-1.
Parameter
planet_symbol_scale
Type
float
Required
No
Default
0.35
Description
Planet symbol size multiplier
Parameter
planet_spacing_scale
Type
float
Required
No
Default
auto
Description
Multiplier applied to planet glyph angular spacing. If omitted, spacing increases automatically when planet_symbol_scale is above default.
Parameter
planet_color_mode
Type
"body" | "sign"
Required
No
Default
body
Description
Color source for non-angle planet and point glyphs. "body" uses each body's default palette; "sign" matches the element color of the occupied sign. Explicit custom planet colors take precedence.
Parameter
sign_symbol_scale
Type
float
Required
No
Default
0.6
Description
Sign symbol size multiplier
Parameter
house_number_scale
Type
float
Required
No
Default
0.35
Description
House number size multiplier
Parameter
chart_background
Type
string
Required
No
Default
null
Description
Background color override (hex)
Parameter
aspect_circle_background
Type
string
Required
No
Default
null
Description
Fill color for the central aspect circle/disk. Defaults to chart_background or the active theme background.
Parameter
custom_planet_color
Type
string
Required
No
Default
null
Description
Override all planet colors (hex)
Parameter
custom_sign_color
Type
string
Required
No
Default
null
Description
Override all sign symbol colors (hex)
Parameter
custom_house_color
Type
string
Required
No
Default
null
Description
Override all house number colors (hex)
Parameter
degree_label_color
Type
string
Required
No
Default
null
Description
Override planet degree/minute label text color (hex or CSS color)
Parameter
angle_label_color
Type
string
Required
No
Default
null
Description
Fallback color for all ASC/DSC/MC/IC glyph labels.
Parameter
asc_label_color
Type
string
Required
No
Default
null
Description
ASC glyph label color. Also available for dsc_label_color, mc_label_color, and ic_label_color.
Parameter
angle_label_scale
Type
float
Required
No
Default
null
Description
Fallback scale multiplier for all ASC/DSC/MC/IC glyph labels.
Parameter
asc_label_scale
Type
float
Required
No
Default
null
Description
ASC glyph label scale multiplier. Also available for dsc_label_scale, mc_label_scale, and ic_label_scale.
Parameter
angle_label_radius_offset
Type
float
Required
No
Default
0
Description
Move all angle labels along their fixed axes in SVG pixels; negative moves inward and positive outward.
Parameter
asc_label_radius_offset
Type
float
Required
No
Default
null
Description
Per-angle axis offset. Also available for dsc_label_radius_offset, mc_label_radius_offset, and ic_label_radius_offset.
Parameter
angle_label_style
Type
string
Required
No
Default
international
Description
Angle label convention: "international" = ASC/DSC/IC/MC, "french" = AS/DS/FC/MC, or "astrocom" = AS/DS/IC/MC.
Parameter
angle_marker_style
Type
string
Required
No
Default
glyph
Description
Angle marker rendering: "glyph" keeps the selected angle abbreviations; "french_arrow" draws French-style ASC/MC axis arrows outside the sign ring.
Parameter
angle_line_span
Type
string
Required
No
Default
wheel
Description
Angle axis line span: "wheel" keeps ASC/DSC and MC/IC lines in the default wheel area; "full" extends those axes across the chart and stops at the sign ring edge. Use angle_marker_style "french_arrow" when you want outside-ring ASC/MC arrows.
Parameter
show_angle_labels_with_french_arrows
Type
boolean
Required
No
Default
true
Description
When angle_marker_style is "french_arrow", render enabled ASC/DSC/MC/IC glyph labels. Set false to hide them.
Parameter
avoid_angle_label_collisions
Type
boolean
Required
No
Default
true
Description
Keep movable planets and points clear of visible angle labels. Set false to exclude angle labels from collision placement.
Parameter
show_synastry_inner_planet_guides
Type
boolean
Required
No
Default
false
Description
For synastry inner-wheel planets, draw dashed radial guides from their divider-ring longitude ticks to the inner sign-ring circle.
Parameter
planet_connector_clearance
Type
float
Required
No
Default
auto
Description
Distance in SVG pixels from a planet/point glyph center where its connector line stops. Increase this when large glyphs need more breathing room.
Parameter
custom_sign_bg_color
Type
string
Required
No
Default
null
Description
Single hex color applied to all 12 sign ring backgrounds. When set, sign backgrounds are automatically enabled.
Parameter
custom_house_bg_color
Type
string
Required
No
Default
null
Description
Single hex color applied to all 12 house ring backgrounds. When set, house backgrounds are automatically enabled.
Parameter
house_highlights
Type
object
Required
No
Default
{}
Description
Map primary house numbers 1-12 to background colors, for example {"7":"#F59E0B"}. Only the listed house sectors are highlighted.
Parameter
house_highlight_opacity
Type
float
Required
No
Default
0.35
Description
Opacity for house_highlights colors before they are composited over the chart background. Allowed range: 0-1.
Parameter
house_highlight_include_planet_zone
Type
boolean
Required
No
Default
false
Description
When true, continue each selected house color through the corresponding primary planet lane.
Parameter
show_angle_aspects
Type
boolean
Required
No
Default
true
Description
Include aspect lines and aspect degree ticks involving ASC, DSC, MC, or IC. Set false to keep planet-to-planet aspects while leaving enabled angle axes and labels visible.
Parameter
aspect_excluded_bodies
Type
array<string>
Required
No
Default
[]
Description
Hide SVG aspect lines, midpoint symbols, and aspect degree ticks touching listed body ids while keeping the bodies visible. Example: ["part_of_fortune", "chiron"]. Names are case-insensitive, with common angle, node, Lilith, and Part of Fortune aliases accepted. This visual-only filter applies across both rings in bi-wheel charts and does not change calculated aspects or pattern detection.
Parameter
aspect_opacity_by_strength
Type
boolean
Required
No
Default
true
Description
When true, aspect line and midpoint-symbol opacity follows orb strength. Set false for two fixed tiers with no orb-based variation: 100% for conjunction, opposition, trine, square, and sextile; 70% for minor aspects such as quincunx. The global stroke_opacity multiplier still applies.
Parameter
show_aspect_symbols
Type
boolean
Required
No
Default
auto
Description
Show midpoint aspect glyphs and split aspect lines around them. Defaults to on in French style and off otherwise.
Parameter
show_pattern_overlays
Type
boolean
Required
No
Default
false
Description
Overlay detected chart structures and patterns on the SVG. Supported structures include grand_trine, t_square, yod, kite, grand_cross, minor_grand_trine, wedge, mystic_rectangle, cradle, castle, grand_sextile, and stellium.
Parameter
pattern_overlay_types
Type
array
Required
No
Default
null
Description
Optional allow-list of overlay types to render, for example ["grand_trine", "t_square", "stellium"]. When omitted, all detected supported overlays may render up to pattern_overlay_max_items.
Parameter
pattern_overlay_style
Type
string
Required
No
Default
subtle
Description
Overlay intensity: "subtle" or "strong".
Parameter
pattern_overlay_labels
Type
boolean
Required
No
Default
false
Description
Show compact labels for rendered configuration overlays.
Parameter
pattern_overlay_max_items
Type
integer
Required
No
Default
4
Description
Maximum number of configuration overlays to draw. Stellium sign/house highlights are separate and are not counted against this limit.
Parameter
embed_pattern_metadata
Type
boolean
Required
No
Default
false
Description
Embed detected overlay data in an SVG metadata element for downstream hover, legend, or selection UI.
Parameter
show_horoscope_shape
Type
boolean
Required
No
Default
false
Description
Detect the chart distribution shape using only the 10 planets and render it in the central aspect disk. When a shape is detected, regular central aspect lines/ticks are hidden for readability.
Parameter
horoscope_shape_style
Type
string
Required
No
Default
subtle
Description
Horoscope shape overlay intensity: "subtle" or "strong".
Parameter
horoscope_shape_color
Type
string
Required
No
Default
#D97706
Description
SVG color used for all horoscope shape overlays.
Parameter
horoscope_shape_label
Type
boolean
Required
No
Default
true
Description
Show a compact label for the detected shape, such as Bucket, Bowl, Locomotive, Bundle, Splash, or Seesaw.
Parameter
embed_horoscope_shape_metadata
Type
boolean
Required
No
Default
true
Description
Embed detected horoscope shape data in an SVG metadata element.
Parameter
show_retrograde_markers
Type
boolean
Required
No
Default
false
Description
Enable retrograde markers on planet degree labels.
Parameter
retrograde_marker_style
Type
string
Required
No
Default
R
Description
Retrograde marker style when enabled: "R" or "rx" (℞).
Parameter
degree_label_format
Type
string
Required
No
Default
null
Description
Planet degree label format: "degree" for whole degrees, "decimal" for decimal degrees, or "minutes" for stacked minute + sign glyph + whole degree labels. If omitted, degree_label_precision > 0 preserves the legacy minutes layout.
Parameter
degree_label_precision
Type
integer
Required
No
Default
0
Description
Decimal places for degree_label_format="decimal". Allowed range: 0-4. For backward compatibility, if degree_label_format is omitted, values greater than 0 enable the stacked minutes layout.
Parameter
degree_label_scale
Type
float
Required
No
Default
0.6
Description
Base planet degree label text scale.
Parameter
degree_label_degree_scale
Type
float
Required
No
Default
1.0
Description
Precise label whole-degree text scale relative to degree_label_scale.
Parameter
degree_label_minute_scale
Type
float
Required
No
Default
1.0
Description
Precise label minute text scale relative to degree_label_scale.
Parameter
degree_label_sign_scale
Type
float
Required
No
Default
1.25
Description
Precise label zodiac sign glyph scale relative to degree_label_scale.
Parameter
degree_label_row_gap
Type
float
Required
No
Default
1.55
Description
Precise label spacing between degree, sign, and minute rows, relative to degree_label_scale.
Parameter
houses_inside_planets
Type
boolean
Required
No
Default
true
Description
Place houses inside planet ring
Parameter
french_style
Type
boolean
Required
No
Default
false
Description
Natal-only French horoscope layout: aspect disk inside sign rim, houses outside signs, planets outside houses.
Parameter
french_planet_radius_offset
Type
float
Required
No
Default
0
Description
Natal French-mode only. Moves planet glyphs radially outward or inward without moving the house/sign rings.

Highlight Individual Houses

Map any primary house number from 1 through 12 to a background color. Unlisted houses keep their normal background, and multiple houses can use different colors. Set house_highlight_include_planet_zone to true to continue each highlight through its corresponding primary planet lane.

{
  "chart_config": {
    "house_highlights": {
      "7": "#F59E0B"
    },
    "house_highlight_opacity": 0.45,
    "house_highlight_include_planet_zone": true
  }
}

Degree Label Format Examples

Use degree_label_format: "minutes" to render each precise label as separate degree, sign glyph, and minute rows. The examples below are PNG outputs generated from the same endpoint in standard and French layouts.

Standard natal chart PNG using degree_label_format minutes

Standard Layout

Houses stay inside the planet lane; precise labels are stacked toward the chart center.

{
  "format": "png",
  "theme_type": "light",
  "chart_config": {
    "degree_label_format": "minutes",
    "degree_label_color": "#000000",
    "houses_inside_planets": true
  }
}
French-style natal chart PNG using degree_label_format minutes

French Layout

French mode keeps non-angle precise labels outside the planet glyphs while angle labels remain compact.

{
  "format": "png",
  "theme_type": "light",
  "chart_config": {
    "degree_label_format": "minutes",
    "degree_label_color": "#000000",
    "french_style": true,
    "houses_inside_planets": false
  }
}

Sample Code

curl -X POST "https://api.freeastroapi.com/api/v1/natal/chart/" \
 -H "Content-Type: application/json" \
 -H "x-api-key: YOUR_API_KEY" \
 -d '{
    "name": "John Doe",
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 14,
    "minute": 30,
    "time_known": false,
    "lat": 40.7128,
    "lng": -74.006,
    "tz_str": "AUTO",
    "house_system": "placidus",
    "zodiac_type": "tropical",
    "orb_settings": {
        "conjunction": 6,
        "opposition": 6,
        "trine": 5,
        "square": 5,
        "sextile": 3
    },
    "format": "svg",
    "size": 800,
    "theme_type": "light",
    "png_quality_scale": 2.0,
    "show_metadata": true,
    "display_settings": {
        "chiron": true,
        "lilith": true,
        "north_node": true
    },
    "chart_config": {
        "sign_ring_thickness_fraction": 0.16,
        "house_ring_thickness_fraction": 0.05,
        "planet_symbol_scale": 0.35,
        "planet_color_mode": "sign",
        "sign_symbol_scale": 0.6,
        "angle_marker_style": "glyph",
        "angle_line_span": "wheel",
        "french_style": false,
        "french_planet_radius_offset": 0,
        "show_aspect_symbols": true,
        "show_retrograde_markers": true,
        "retrograde_marker_style": "R",
        "degree_label_format": "minutes",
        "custom_planet_color": "#FF5733",
        "aspect_circle_background": "#F8F2FF",
        "show_color_background": false
    }
}' --output chart.svg

Advanced Styling

The chart_config object supports granular control over line widths, colors, and aspect styling. Additional parameters include:

  • sign_line_width, sign_line_color
  • house_line_width, house_line_color
  • asc_line_width, asc_line_color (and dsc, mc, ic)
  • asc_label_color, asc_label_scale (and dsc, mc, ic)
  • angle_marker_style set to french_arrow for French-style ASC/MC axis arrows; enabled angle labels stay visible unless show_angle_labels_with_french_arrows is false
  • angle_line_span set to full to extend ASC/DSC and MC/IC axes to the sign ring edge; use angle_marker_style french_arrow for outside-ring arrows
  • planet_connector_clearance to stop connector lines before oversized glyphs
  • aspect_circle_background to color the central aspect disk only
  • decan_symbol_*, decan_ring_line_*, and decan_separator_* for independent decan glyph, circular-border, and radial-separator styling
  • show_angle_aspects set to false to hide ASC/DSC/MC/IC aspect lines without hiding the angle axes or labels
  • aspect_excluded_bodies to hide aspect visuals involving selected planets or points while keeping their glyphs visible
  • aspect_opacity_by_strength set to false for fixed 100% major and 70% minor aspect opacity tiers
  • aspect_conjunction_width, aspect_conjunction_color
  • aspect_opposition_width, aspect_trine_width, etc.

FAQ

Do you support fixed stars?

Yes. The Chart SVG endpoint can render supported fixed stars in the same body wheel as planets and points. Use fixed_stars with pack IDs such as royal_4 or behenian_20, exact fixed-star names, or all for the full default set.

Which fixed-star packs are available?

Two ready packs are available: behenian_20 for the 20 Classical or Behenian stars, and royal_4 for Regulus, Aldebaran, Antares, and Fomalhaut.

Can I select individual fixed stars?

Yes. Pass exact supported names in the fixed_stars array, for example Spica or Regulus. The same fixed_stars array also accepts pack IDs such as royal_4 and behenian_20.

Can fixed stars show aspects?

Yes, but fixed-star aspects are optional. Enable chart_config.show_fixed_star_aspects, then choose fixed_star_aspect_types and fixed_star_aspect_orb when you need more than the default tight conjunction workflow.

Can I customize the fixed-star color?

Yes. Set chart_config.fixed_star_color to a CSS color or hex value. That color is used for fixed-star labels, connectors, and opt-in fixed-star aspect lines.

Do fixed stars show degree and sign labels?

Yes. Fixed stars use the same chart placement behavior as other rendered bodies and can show degree, sign, and minute labels when the chart degree-label configuration calls for it.

Do you have a tool to customize the charts?

Yes. The Chart Designer lets you configure chart colors, labels, line weights, themes, and other visual options before copying the request configuration into the API.

Can I customize chart colors, labels, aspects, and layout?

Yes. Use chart_config for colors, backgrounds, ring geometry, glyph scale, connector styling, aspect colors, line widths, degree labels, retrograde markers, traditional or modern decans, French-style layout, and pattern overlays.

Can I customize the orb used to detect each aspect line?

Yes. Pass top-level orb_settings with partial per-aspect overrides in degrees. The same requested values control aspect detection and SVG aspect lines. Supported chart aspects are conjunction, opposition, trine, square, sextile, and quincunx; set a value to 0 to disable that aspect type.

Which decan ruler systems can the chart render?

Enable chart_config.show_decans, then use decan_system. chaldean and traditional_chaldean render the traditional seven-planet Chaldean faces; modern_triplicity uses modern elemental-triplicity rulers and includes Uranus, Neptune, and Pluto. Decans work in both standard and French layouts.

Can I hide aspects involving ASC, DSC, MC, and IC?

Yes. Set chart_config.show_angle_aspects to false. Planet-to-planet aspects remain visible, while enabled angle axes and labels remain rendered.

Can I hide aspects involving a specific planet or point?

Yes. Add body ids such as part_of_fortune or chiron to chart_config.aspect_excluded_bodies. The bodies remain visible, but SVG aspect lines, midpoint symbols, and aspect degree ticks touching them are hidden. This visual-only filter does not change calculated aspects or pattern detection.

Can I disable orb-strength fading for aspects?

Yes. Set chart_config.aspect_opacity_by_strength to false. Conjunction, opposition, trine, square, and sextile then render at 100% opacity, while minor aspects such as quincunx render at 70%, with no orb-based variation inside either tier. The global stroke_opacity value still multiplies these fixed levels.

Can I export PNG as well as SVG?

Yes. Set format to svg for vector output or png for raster output. For PNG, png_quality_scale controls the output resolution multiplier.

Can I embed the SVG in my app?

Yes. The SVG response can be embedded directly in your frontend, stored as an asset, or converted in your own rendering pipeline. Use the API response according to your app's caching and security rules.

Can I highlight a specific house?

Yes. Set chart_config.house_highlights to an object that maps house numbers from 1 through 12 to background colors, for example {"7":"#F59E0B"}. Use house_highlight_opacity to control the highlight strength, and set house_highlight_include_planet_zone to true when the color should continue through the corresponding primary planet lane.

Is there an iOS app using the Chart SVG API?

Yes. AstroLingo is an iOS astrology learning app that uses FreeAstroAPI to generate natal charts and visual chart experiences. It shows how SVG or PNG chart responses can be integrated into a native mobile interface.

Can I hide or show planets, points, and houses?

Yes. Use display_settings to toggle planets, nodes, Lilith, Chiron, asteroids, angles, and other supported points. When time_known is false, houses and angles are omitted automatically.

Can I show retrogrades?

Yes. Set chart_config.show_retrograde_markers to true. You can also choose the marker style with chart_config.retrograde_marker_style, using R or rx. With degree_label_format set to minutes, the marker stays on the whole-degree row while the sign glyph and arcminutes keep their own rows.

Can I use this endpoint for charts with unknown birth time?

Yes. Set time_known to false. The chart still renders planetary positions, but houses and angles are omitted because they depend on the birth time.

Do you support aspect patterns or horoscope shape overlays?

Yes. chart_config.show_pattern_overlays renders detected aspect structures, and chart_config.show_horoscope_shape renders the chart distribution shape in the central disk.

Is fixed-star rendering slower?

Fixed stars are only calculated and rendered when requested. Use a pack token such as royal_4 or a short fixed_stars list for readable charts and the smallest extra render cost.

How do I authenticate requests?

Send your API key in the x-api-key request header with Content-Type set to application/json.

Where should I go for transit, synastry, or composite chart SVGs?

Use the dedicated SVG endpoints for those chart types. They are documented separately from the natal Chart SVG endpoint.

Related Endpoints