# Tarot

Trois jeux : Rider-Waite-Smith (78 cartes), Tarot de Marseille (78) et Lenormand (36). Chaque carte dans chaque réponse du tarot possède une image, et `POST /v1/interpret/tarot` transforme le tirage en interprétation : chaque position dans le contexte, le résumé de tout le tirage et un conseil.

## Choisissez le style des cartes

`GET /v1/tarot/decks` renvoie chaque jeu, ses tirages et les ensembles de style qui peuvent être passés comme `art` à n'importe quelle route du tarot (dans le corps POST ou en tant que `?art=` en GET). Tous les ensembles sont du domaine public et sont servis depuis notre CDN.

| Jeu | `art` | Cartes |
|---|---|---|
| Rider-Waite-Smith | `rws-1909` (par défaut), `rws-restored`, `rws-vector` | 78 |
| Tarot de Marseille | `arnoult-1748` | 78 |
| Lenormand | `dondorf` | 35 sur 36, sans la Lune |

Chaque carte reçoit un `image` avec `urlSmall` (300 px de largeur, pour les cartes d'environ 150 px à l'écran), `url` (600 px), `url2x` (1200 px), `width`, `height` et `art`. Le tirage renvoie également `back`, le dos de la carte, afin que la page puisse d'abord montrer les cartes face cachée. Un `art` provenant d'un autre jeu renvoie une erreur `400 INVALID_ART` avec la liste des valeurs autorisées. Une carte pour laquelle le jeu ne possède pas d'image (la Lune dans le Lenormand) est indiquée dans `missing` de cet ensemble et arrive sans `image`; affichez donc pour elle une carte textuelle.

<Tabs>
  <TabItem label="cURL">
    ```bash frame="terminal"
    curl -X POST https://api.astroway.info/v1/tarot/rider-waite/draw/three-card \
      -H "X-Api-Key: aw_live_your_key_here" \
      -H "Content-Type: application/json" \
      -d '{ "seed": 12345, "art": "rws-restored" }'
    ```
  </TabItem>
</Tabs>

```json
{
  "drawn": [
    {
      "position": { "index": 0, "name": "Past", "meaning": "Forces from the past shaping the situation." },
      "card": {
        "slug": "8-of-pentacles",
        "name": "Eight of Pentacles",
        "image": {
          "url": "https://cdn.astroway.info/tarot/rws-restored/8-of-pentacles.webp",
          "url2x": "https://cdn.astroway.info/tarot/rws-restored/8-of-pentacles@2x.webp",
          "urlSmall": "https://cdn.astroway.info/tarot/rws-restored/8-of-pentacles-300.webp",
          "width": 600,
          "height": 1028,
          "art": "rws-restored"
        }
      },
      "reversed": false
    }
  ],
  "back": { "url": "https://cdn.astroway.info/tarot/rws-1909/back.webp", "url2x": "https://cdn.astroway.info/tarot/rws-1909/back@2x.webp", "urlSmall": "https://cdn.astroway.info/tarot/rws-1909/back-300.webp", "width": 600, "height": 1039, "art": "rws-1909" }
}
```

Le tirage `POST /v1/tarot/rider-waite/draw/three-card` coûte **10 crédits**.

## Textes des cartes sans modèle

`GET /v1/public/tarot/texts?cards=the-fool,9-of-swords&lang=uk` fonctionne sans clé et renvoie pour chaque carte une `description` composée de trois paragraphes (image, signification droite, signification renversée) ainsi que des textes sur `love`, `career`, `finance`, `health` et `spirit` pour `upright` et `reversed`, ainsi qu'un nom localisé `name` et jusqu'à cinq `keywords` pour chaque côté. Sans le paramètre `cards`, toutes les 78 cartes sont renvoyées. Les textes ne changent pas, donc téléchargez les cartes affichées par la page et mettez-les en cache.

```bash
curl 'https://api.astroway.info/v1/public/tarot/texts?cards=the-fool,9-of-swords&lang=uk'
```

## Interprétation du tirage complet

`POST /v1/interpret/tarot` accepte le jeu, le tirage, les cartes et une question facultative, puis écrit l'interprétation dans la langue spécifiée par `language` (21 langues). Les cartes peuvent être transmises sous forme de chaînes, d'objets `{ "slug", "reversed" }` ou d'un tableau `drawn` provenant de toute réponse de tirage sans modification.

<Tabs>
  <TabItem label="Node.js">
    ```js
    const headers = { 'Content-Type': 'application/json', 'X-Api-Key': process.env.ASTROWAY_API_KEY };
    const api = (path, body) =>
      fetch(`https://api.astroway.info/v1${path}`, { method: 'POST', headers, body: JSON.stringify(body) }).then((r) => r.json());
    
    const { data: spread } = await api('/tarot/rider-waite/draw/three-card', { art: 'rws-1909' });
    const { data: reading } = await api('/interpret/tarot', {
      spread: 'three-card',
      question: 'What should I focus on at work?',
      cards: spread.drawn,
      language: 'en',
    });
    
    for (const p of reading.positions) {
      console.log(p.position, p.card.name, p.reversed ? '(reversed)' : '', p.card.image.url);
      console.log(' ', p.reading);
    }
    console.log('Summary:', reading.synthesis);
    ```
  </TabItem>
</Tabs>

Dans la réponse, `positions[]` (position, carte avec `image`, `reversed`, `reading`), `synthesis`, `advice` et `disclaimer`. Les cartes Rider-Waite-Smith possèdent également `nameLocalized` et `positionLocalized` dans la langue de l'interprétation. L'interprétation coûte **100 crédits** (niveau 4) et est disponible sur le forfait Free ; avec votre propre clé de modèle, c'est moins cher, voir [Votre clé de modèle](/agent-setup/).

<Aside type="note">
L'interprétation est un texte généré basé sur la signification traditionnelle de chaque carte dans sa position. L'API associe les cartes, leur orientation et leurs positions à votre requête et élimine les interprétations qui omettent une carte, mais considérez le texte comme une invitation à la réflexion, et non comme une prédiction.
</Aside>
