# RWS: Custom Spread

`POST https://api.astroway.info/v1/tarot/rider-waite/draw/custom`

Draw 1-15 cards into positions you name (`positions`) or just a `count`. Same seeded shuffle as the fixed spreads; card text localized like the other RWS draws.

Group: Tarot: Rider-Waite-Smith. Auth: `X-Api-Key` header. Operation ID: `tarot_rider-waite_draw_custom`.

## Parameters

| Name | In | Required | Type | Description |
|---|---|---|---|---|
| `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. |
| `Idempotency-Key` | header | no | string | Unique per logical operation, kept across retries. For 24 hours from the first request, a repeat with the same key, method, path, body and query string returns the stored response with `Idempotent-Replayed: true` and costs 0 credits. The same key with a different body or query string is a 409 `IDEMPOTENCY_KEY_REUSED`; a repeat while the first is still running is a 409 `IDEMPOTENCY_IN_PROGRESS`. Only 2xx responses are kept. See /idempotency/. |

## Request body

| Field | Type | Required | Description |
|---|---|---|---|
| `art` | string | no | Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck. |
| `seed` | integer | no |  |
| `question` | string | no |  |
| `allowReversed` | boolean | no |  |
| `positions` | string[] | no | Your own position names, one card each, in order (1 to 15). |
| `count` | integer | no | Number of cards when positions are not named (1 to 15). |

```json
{
  "seed": 7,
  "positions": [
    "Me",
    "You",
    "Us"
  ]
}
```

## Responses

| Status | Meaning |
|---|---|
| 200 | Successful calculation |
| 400 | Validation error |
| 401 | Missing or invalid API key |

### Success fields, under `data`

| Field | Type | Required | Description |
|---|---|---|---|
| `spread` | object | no |  |
| `spread.slug` | string | no |  |
| `spread.name` | string | no |  |
| `spread.cardCount` | number | no |  |
| `seed` | number | no |  |
| `drawn` | object[] | no |  |
| `question` | object | no |  |
| `localized` | object | no |  |
| `localized.cards` | object | no |  |
| `back` | object | no |  |
| `back.url` | string | no |  |
| `back.url2x` | string | no |  |
| `back.urlSmall` | string | no |  |
| `back.width` | number | no |  |
| `back.height` | number | no |  |
| `back.art` | string | no |  |

## Example

```bash
curl -X POST https://api.astroway.info/v1/tarot/rider-waite/draw/custom \
  -H "X-Api-Key: aw_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "seed": 7, "positions": [ "Me", "You", "Us" ] }'
```

---

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