星盘API文档 - 占星图表API接口文档

欢迎使用AI星盘专业占星图表API!我们提供完整的星盘API服务,包括本命盘API、行运盘API、合盘API、推运盘API等。支持单盘、双盘和三盘的各种组合分析。 所有占星API都返回结构化的JSON数据和可选的SVG图表,确保您能够轻松集成到任何应用程序中。

请求网址,chart.12sign.top

快速开始

所有API端点都使用HTTP POST方法,接受JSON格式的请求数据,并返回结构化的响应。

基本请求格式

POST /api/chart Content-Type: application/json { "chart_type": "natal", "data": { "year": 1990, "month": 5, "day": 15, "hour": 14, "minute": 30, "second": 0, "latitude": 39.9042, "longitude": 116.4074, "timezone": 8 }, "house_system": "placidus", "include_svg": true }

响应格式

{ "success": true, "data": { "planets": [...], "houses": [...], "aspects": [...] }, "svg_content": "..." }

本命盘API文档

接口说明

本接口用于生成本命盘,需要提供出生日期时间、地点信息,计算并绘制本命星盘图。本命盘显示个人出生时刻的星体位置和宫位分布,是占星学分析的基础。

基本信息

  • 接口URL: /onechart
  • 请求方式: POST
  • Content-Type: application/json

请求参数

参数名 类型 必选 说明
chart_type string 固定值:"natal"
data.datetime string 出生日期时间,格式:YYYY-MM-DD HH:MM:SS 或 YYYY-MM-DD HH:MM
data.lat number 出生地纬度
data.lon number 出生地经度
data.tz string 出生地时区,格式:数字字符串,如"8.0"表示UTC+8
house_system string 宫位系统,默认为占星安宫(P)
use_chinese_font boolean 是否使用中文字体,默认false
include_svg True 是否返回SVG

请求示例

{
        "chart_type": "natal",
        "data": {
        "datetime": "1990-01-01 12:00:00",
        "lat": 39.9042,
        "lon": 116.4074,
        "tz": "8.0"
        },
        "house_system": "P",
        "use_chinese_font": true
        }

返回参数

参数名 类型 说明
success boolean 请求是否成功
data object 星盘数据,包含行星位置、宫位等信息
svg string 星盘SVG图形数据

返回示例

{
        "data": {
        "chart_type": "natal",
        "birth_date": "1990-01-01 12:00:00",
        "planets": {
            "sun": {"degree": 280.5, "sign": "Capricorn", "house": 10},
            "moon": {"degree": 125.3, "sign": "Leo", "house": 5},
            "mercury": {"degree": 295.8, "sign": "Capricorn", "house": 10},
            "venus": {"degree": 310.2, "sign": "Aquarius", "house": 11},
            "mars": {"degree": 185.6, "sign": "Libra", "house": 7},
            "jupiter": {"degree": 89.4, "sign": "Cancer", "house": 4},
            "saturn": {"degree": 275.9, "sign": "Capricorn", "house": 10},
            "uranus": {"degree": 305.1, "sign": "Aquarius", "house": 11},
            "neptune": {"degree": 285.3, "sign": "Capricorn", "house": 10},
            "pluto": {"degree": 295.7, "sign": "Capricorn", "house": 10}
        },
        "houses": {
            "1": {"degree": 45.2, "sign": "Taurus"},
            "2": {"degree": 75.8, "sign": "Gemini"},
            "3": {"degree": 105.4, "sign": "Cancer"},
            "4": {"degree": 135.0, "sign": "Leo"},
            "5": {"degree": 165.6, "sign": "Virgo"},
            "6": {"degree": 195.2, "sign": "Libra"},
            "7": {"degree": 225.8, "sign": "Scorpio"},
            "8": {"degree": 255.4, "sign": "Sagittarius"},
            "9": {"degree": 285.0, "sign": "Capricorn"},
            "10": {"degree": 315.6, "sign": "Aquarius"},
            "11": {"degree": 345.2, "sign": "Pisces"},
            "12": {"degree": 15.8, "sign": "Aries"}
        }
        },
        "svg": "..."
        }

Python测试代码示例

import requests
import json
import os

# 测试本命盘API
def test_natal_chart(base_url="http://chart.12sign.top"):
    url = f"{base_url}/onechart"
    
    payload = {
        "chart_type": "natal",
        "data": {
            "datetime": "1990-01-01 12:00:00",
            "lon": 116.4,
            "lat": 39.9,
            "tz": "8.0"
        },
        "house_system": "P",
        "use_chinese_font": True,
        "include_svg": True
    }
    
    try:
        print("正在测试本命盘API...")
        response = requests.post(url, json=payload, headers={'Content-Type': 'application/json'})
        print(f"响应状态码: {response.status_code}")
        
        if response.status_code == 200:
            data = response.json()
            print("本命盘API测试成功!")
            print(f"返回数据包含: {list(data.keys())}")
            print("完整的返回数据:")
            print(data)
            
            # 保存SVG文件
            if 'svg' in data and data['svg']:
                os.makedirs('test_outputs', exist_ok=True)
                with open('test_outputs/natal_chart_test.svg', 'w', encoding='utf-8') as f:
                    f.write(data['svg'])
                print("SVG文件已保存: test_outputs/natal_chart_test.svg")
            
            # 打印行星位置信息
            if 'data' in data and 'planets' in data['data']:
                print("\n行星位置信息:")
                for planet, info in data['data']['planets'].items():
                    print(f"{planet}: {info}")
            
            return data
        else:
            print(f"API请求失败: {response.status_code}")
            print(f"错误信息: {response.text}")
            return None
            
    except Exception as e:
        print(f"请求出错: {e}")
        return None

# 测试不同出生信息的本命盘
def test_multiple_natal_charts():
    test_cases = [
        {
            "name": "北京出生",
            "data": {
                "datetime": "1990-01-01 12:00:00",
                "lon": 116.4,
                "lat": 39.9,
                "tz": "8.0"
            }
        },
        {
            "name": "上海出生",
            "data": {
                "datetime": "1985-06-15 14:30:00",
                "lon": 121.5,
                "lat": 31.2,
                "tz": "8.0"
            }
        },
        {
            "name": "纽约出生",
            "data": {
                "datetime": "1992-12-25 08:15:00",
                "lon": -74.0,
                "lat": 40.7,
                "tz": "-5.0"
            }
        }
    ]
    
    for case in test_cases:
        print(f"\n=== 测试{case['name']}本命盘 ===")
        payload = {
            "chart_type": "natal",
            "data": case["data"],
            "house_system": "P",
            "use_chinese_font": True
        }
        
        try:
            response = requests.post("http://chart.12sign.top/onechart", json=payload)
            if response.status_code == 200:
                print(f"{case['name']}本命盘生成成功")
            else:
                print(f"{case['name']}本命盘生成失败: {response.status_code}")
        except Exception as e:
            print(f"{case['name']}本命盘测试出错: {e}")

if __name__ == "__main__":
    # 基本测试
    test_natal_chart()
    
    # 多案例测试
    test_multiple_natal_charts()

注意事项

  • 本命盘是个人出生时刻的星体位置图,是占星学分析的基础
  • 需要提供准确的出生日期时间、地点和时区信息
  • 时间格式必须严格遵循YYYY-MM-DD HH:mm:ss的格式
  • 经纬度使用小数格式,东经北纬为正,西经南纬为负
  • 时区格式为数字,如8.0或-5.0
  • 本命盘包含太阳、月亮、水星、金星、火星、木星、土星、天王星、海王星、冥王星的位置
  • 宫位系统默认为普拉西德(P),也可选择其他系统
  • API已通过完整测试,确保参数格式正确
  • 返回的SVG字段在生成失败时可能为null,但data字段仍会包含计算数据
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐