# Chinese sign reading of the day (public, no key)

`GET https://api.astroway.info/v1/public/chinese/zodiac/daily-reading`

GET /public/chinese/zodiac/daily read into prose in the requested language: the same fields plus `reading` with `overview`, `love`, `career` and `advice`, and `disclaimer`, `model`, `language`. The reading uses only the facts in the answer (pillars, branch relations, Ben Ming Nian, energy and its factors): no lucky numbers, colours or directions. Generated once per animal, date and language and cached for the day, so every site gets the same text. 503 `AI_UNAVAILABLE` if no model answers. Costs 1 unit of the public bucket.

Group: Public. Auth: none, this endpoint answers without a key.

## Parameters

| Name | In | Required | Type | Description |
|---|---|---|---|---|
| `animal` | query | yes | "rat" \| "ox" \| "tiger" \| "rabbit" \| "dragon" \| "snake" \| "horse" \| "goat" \| … | One of the twelve, English, any case. |
| `date` | query | no | string | Calendar date `YYYY-MM-DD` (UTC). Defaults to today. |
| `lang` | query | no | string | Language for this call, overriding `Accept-Language`. The canonical per-call form: a page that renders in one language passes it here rather than reconfiguring its client. Unknown or inactive codes fall back to `uk`. |
| `Accept-Language` | header | no | string | BCP-47 language (e.g. `uk`, `en`, `de`). Set it once on your HTTP client as its default; for a single call, `?lang=` overrides it. Unknown or inactive codes fall back to `uk`. |
| `fields` | query | no | string | Comma-separated dotted paths, relative to `data`, to keep in the response. A path is applied to every element of an array, so `planets.name` means the name of each planet. Paths that match nothing come back in `_fields_unmatched`; a list where nothing matches at all is a 400, because an empty object would be a confident wrong answer. |
| `precision` | query | no | integer | Round every non-integer number in the response to this many decimal places. Integers are left alone, because an id is not a measurement. Ecliptic longitudes ship with fourteen decimals by default; 2 is about a tenth of an arcminute. |

## Responses

| Status | Meaning |
|---|---|
| 200 | OK |
| 400 | Invalid sign or date |

### Success fields, under `data`

| Field | Type | Required | Description |
|---|---|---|---|
| `animal` | string | no |  |
| `animalName` | string | no |  |
| `date` | string | no |  |
| `dayPillar` | object | no |  |
| `dayPillar.stem` | string | no |  |
| `dayPillar.branch` | string | no |  |
| `dayPillar.animal` | string | no |  |
| `dayPillar.element` | string | no |  |
| `dayPillar.yin` | boolean | no |  |
| `year` | object | no |  |
| `year.relation` | string | no |  |
| `year.chinese` | object | no |  |
| `day` | object | no |  |
| `day.relation` | string | no |  |
| `day.chinese` | string | no |  |
| `benMingNian` | boolean | no |  |
| `energy` | object | no |  |
| `energy.score` | number | no |  |
| `energy.factors` | object[] | no |  |
| `reading` | object | no |  |
| `reading.overview` | string | no |  |
| `reading.love` | string | no |  |
| `reading.career` | string | no |  |
| `reading.advice` | string | no |  |
| `disclaimer` | string | no |  |
| `model` | string | no |  |
| `language` | string | no |  |

## Example

```bash
curl 'https://api.astroway.info/v1/public/chinese/zodiac/daily-reading?animal=horse&date=2026-10-07&lang=en'
```

---

Rendered from https://api.astroway.info/v1/openapi.json. HTML page: https://api.astroway.info/docs/api/operations/publicchinesezodiacdaily-reading/
