# Tương hợp

Điểm cuối `POST /v1/synastry` so sánh hai biểu đồ natal: tính toán các khía cạnh chéo giữa các hành tinh của cả hai người và trả về điểm số tương thích. Chi phí: **50 tín dụng** (Hạng 3).

## Các tham số yêu cầu

Hai đối tượng lồng nhau `chart1` và `chart2`, mỗi đối tượng có cùng các tham số như `/v1/chart`:

| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| `chart1` | object | Có | Dữ liệu của người thứ nhất |
| `chart2` | object | Có | Dữ liệu của người thứ hai |

Mỗi đối tượng: `date`, `time`, `timezoneOffset`, `latitude`, `longitude`, `houseSystem`, `name`, `city`.

## Ví dụ yêu cầu

<Tabs syncKey="lang">
  <TabItem label="cURL">
    ```bash frame="terminal"
    curl -X POST https://api.astroway.info/v1/synastry \
      -H "X-Api-Key: aw_live_your_key_here" \
      -H "Content-Type: application/json" \
      -d '{
        "chart1": {
          "date": "1990-07-14",
          "time": "14:30:00",
          "timezoneOffset": 3,
          "latitude": 50.4501,
          "longitude": 30.5234,
          "name": "Person A"
        },
        "chart2": {
          "date": "1992-03-22",
          "time": "09:15:00",
          "timezoneOffset": 2,
          "latitude": 48.8566,
          "longitude": 2.3522,
          "name": "Person B"
        }
      }'
    ```
  </TabItem>
  <TabItem label="Node.js">
    ```ts
    const body = {
      chart1: { date: '1990-07-14', time: '14:30:00', timezoneOffset: 3, latitude: 50.4501, longitude: 30.5234, name: 'Person A' },
      chart2: { date: '1992-03-22', time: '09:15:00', timezoneOffset: 2, latitude: 48.8566, longitude: 2.3522, name: 'Person B' },
    };
    const res = await fetch('https://api.astroway.info/v1/synastry', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'X-Api-Key': process.env.ASTROWAY_API_KEY!,
      },
      body: JSON.stringify(body),
    });
    const result = await res.json();
    console.log(result.compatibility);
    console.log(result.crossAspects.length);
    ```
  </TabItem>
  <TabItem label="Python">
    ```python

    body = {
        'chart1': {'date': '1990-07-14', 'time': '14:30:00', 'timezoneOffset': 3, 'latitude': 50.4501, 'longitude': 30.5234, 'name': 'Person A'},
        'chart2': {'date': '1992-03-22', 'time': '09:15:00', 'timezoneOffset': 2, 'latitude': 48.8566, 'longitude': 2.3522, 'name': 'Person B'},
    }
    r = requests.post(
        'https://api.astroway.info/v1/synastry',
        headers={'X-Api-Key': os.environ['ASTROWAY_API_KEY'], 'Content-Type': 'application/json'},
        json=body,
    )
    result = r.json()
    print(result['compatibility'])
    ```
  </TabItem>
  <TabItem label="PHP">
    ```php
    <?php
    use GuzzleHttp\Client;

    $client = new Client(['base_uri' => 'https://api.astroway.info/v1/']);
    $r = $client->post('synastry', [
        'headers' => ['X-Api-Key' => getenv('ASTROWAY_API_KEY')],
        'json' => [
            'chart1' => [
                'date' => '1990-07-14',
                'time' => '14:30:00',
                'timezoneOffset' => 3,
                'latitude' => 50.4501,
                'longitude' => 30.5234,
                'name' => 'Person A',
            ],
            'chart2' => [
                'date' => '1992-03-22',
                'time' => '09:15:00',
                'timezoneOffset' => 2,
                'latitude' => 48.8566,
                'longitude' => 2.3522,
                'name' => 'Person B',
            ],
        ],
    ]);

    $result = json_decode($r->getBody(), true);
    print_r($result['compatibility']);
    ```
  </TabItem>
</Tabs>

## Ví dụ phản hồi

```json
{
  "chart1": {
    "input": { "date": "1990-07-14", "name": "Person A" },
    "planets": [ ... ],
    "houses": { ... },
    "aspects": [ ... ]
  },
  "chart2": {
    "input": { "date": "1992-03-22", "name": "Person B" },
    "planets": [ ... ],
    "houses": { ... },
    "aspects": [ ... ]
  },
  "crossAspects": [
    {
      "planet1": "Sun",
      "planet2": "Venus",
      "chart1Planet": "Sun",
      "chart2Planet": "Venus",
      "type": "trine",
      "orb": 2.14,
      "applying": false
    },
    {
      "planet1": "Moon",
      "planet2": "Mars",
      "chart1Planet": "Moon",
      "chart2Planet": "Mars",
      "type": "square",
      "orb": 0.87,
      "applying": true
    }
  ],
  "compatibility": {
    "score": 72,
    "label": "harmonious",
    "harmony": 18.5,
    "tension": 7.2
  }
}
```

<Aside type="note">
`chart1` và `chart2` là các biểu đồ natal đầy đủ (cùng các trường như `/v1/chart`). `crossAspects` là các khía cạnh chéo giữa các hành tinh của hai biểu đồ. `compatibility.score` có giá trị từ 0 đến 100.
</Aside>

## Trường compatibility

| Trường | Kiểu | Mô tả |
|---|---|---|
| `score` | number | Điểm tổng thể từ 0–100 |
| `label` | string | `harmonious`, `balanced`, `mixed`, `challenging` |
| `harmony` | number | Tổng trọng số của các khía cạnh hài hòa (trine, sextile) |
| `tension` | number | Tổng trọng số của các khía cạnh căng thẳng (square, opposition) |

## Các điểm cuối liên quan

| Điểm cuối | Tín dụng | Tính năng bổ sung |
|---|---|---|
| `/v1/composite` | 50 | Biểu đồ hợp nhất (điểm trung bình) |
| `/v1/davison` | 50 | Biểu đồ Davison (ngày trung bình) |
| `/v1/coalescent` | 50 | Biểu đồ hợp nhất (coalescent) |
| `/v1/group-synastry` | 100 | Ma trận tương thích cho 2–10 người |
| `/v1/human-design/compatibility` | 100 | Tương thích Human Design |

## Tiếp theo

- [Biểu đồ natal](/examples/natal/) — yêu cầu cơ bản
- [Chuyển động hành tinh](/examples/transits/) — lớp phủ chuyển động hành tinh
- [Human Design](/examples/human-design/) — biểu đồ Human Design đầy đủ
- [Tài liệu tham khảo API](/docs/api/) — tất cả các điểm cuối {siteMeta.endpoints}
