Tarot API

Tarot card API for developers

14 JSON endpoints, 4 decks and the classic spreads, with every reading in English and Hindi. Build on unlimited free test keys.

Everything a tarot app needs, in one module

Readings and a full card encyclopedia live in the Tarot module (14 endpoints). Every endpoint has its own reference page with request fields and a cURL example.

EndpointWhat it returns
POST /v1/tarot/singleOne card answering a question, with guidance text
POST /v1/tarot/three-cardPast / present / future spread plus an overall message
POST /v1/tarot/celtic-crossThe 10-card Celtic Cross, each card with its position meaning
POST /v1/tarot/yes-noA yes / no / maybe answer with a confidence level and the card behind it
POST /v1/tarot/dailyCard of the day: the same card all day, plus a daily message and affirmation
POST /v1/tarot/fullDaily card + three-card spread + yes/no in one call
POST /v1/tarot/drawAny spread size by name (single, three_card, five_card, seven_card, celtic_cross…)
POST /v1/tarot/astro-tarotAstro-tarot: computes the birth chart (Lahiri ayanamsa) and maps each of the 9 grahas and the ascendant to its Major Arcana card
POST /v1/tarot/interpretationThe meaning of one card, by name or ID
GET /v1/tarot/decks · /deck/{deck}/cardsDeck metadata and every card in a deck
GET /v1/tarot/encyclopedia · /cards · /card/{id}An encyclopedia: browse and filter by suit, element, planet, zodiac sign, colour or symbol; one card's general, reversed and associations entry

Four decks, each with its own card names

Pass "deck" on any reading. The default is rider_waite.

IDDeckCardsSuits
rider_waite (default)Rider-Waite-Smith78Wands, Cups, Swords, Pentacles
thothThoth: Crowley's names such as The Magus, Adjustment, Lust, Art, The Aeon78Wands, Cups, Swords, Disks
osho_zenOsho Zen: adds The Master as a 79th card; cards are never drawn reversed (deck convention)79Fire, Water, Clouds, Rainbows
marseilleTarot de Marseille, with French names such as Le Bateleur and La Papesse78Bâtons, Coupes, Épées, Deniers

A real request and response

HTTP
curl -X POST https://api.grahaapi.com/v1/tarot/single \
  -H "Authorization: Bearer sk-test-your-key" \
  -H "Content-Type: application/json" \
  -d '{"question": "What does my future hold?", "deck": "rider_waite"}'
HTTP
{"success": true,
 "data": {
  "reading": {
   "reading_id": "745f16a47d9241999378c587d261971a",
   "timestamp": "2026-10-17T09:58:59+00:00",
   "seed_used": null, ...},
  "spread": "single",
  "deck": "rider_waite",
  "question": "What does my future hold?",
  "card": {
   "id": 32,
   "name": "Page of Wands", "name_hi": "दंड का पेज",
   "suit": "wands", "value": "Page",
   "element": "Fire", "element_hi": "अग्नि",
   "keywords": ["career", "page", "fire"], "keywords_hi": ["करियर", "पेज", "अग्नि"],
   "position": "Answer", "position_hi": "उत्तर",
   "reversed": true,
   "interpretation_en": "Reversed, enthusiasm fizzles, news disappoints, ...",
   "interpretation_hi": "उल्टा — उत्साह ठंडा, समाचार निराशाजनक, ...", ...},
  "guidance_en": "Message of Page of Wands for your question: ...",
  "guidance_hi": "इस प्रश्न के लिए 'दंड का पेज' कार्ड का संदेश: ..."},
 "meta": {"mode": "test", ...}}

This is what a sk-test- key returned on 2026-10-17 (shortened where you see ...). Test mode runs the real endpoint code on a fixed sample request, so the structure is exactly what production sends. It ignores your own question and seed, and its card is a random draw, so yours will likely differ.

Seeded, reproducible draws

  • No seed: cards and upright/reversed orientations come from a cryptographically secure random draw.
  • With "seed": 42 (any integer): the same seed and question on the same day return the same cards in the same orientations. Use it for shareable readings, tests and UI previews.
  • Card of the day (/daily) is the same all day. Send a per-user seed to give each user their own card.
  • Journal-ready: every reading returns reading.reading_id, a timestamp and the seed used, so you can store readings and show history.

English and Hindi in the same response

There is no language switch and no extra charge: each card carries name + name_hi, interpretation_en + interpretation_hi, position + position_hi and its keyword chips as keywords + keywords_hi (two lists in the same order), and verdicts come as answer + answer_hi (Yes / हाँ). Render whichever your user picked, or both.

Free to build on, simple to pay for

  • Unlimited test mode: any sk-test- key works on all 14 tarot endpoints, free, forever.
  • Free plan: 1,000 real calls a month, no credit card.
  • INR pricing: paid plans from ₹499/month. 1 call = 1 call, so a 10-card Celtic Cross costs the same single call as a one-card draw. At the monthly limit calls pause until the 1st or an upgrade; there are no overage bills. See pricing.

What the API does not include

Card images. The API returns structured data (card ID, name, suit, element, keywords and interpretation text), not artwork. Use card art you have the rights to and look it up by the id or name in each response.

FAQ

Frequently asked questions

More questions? Contact us or read the API docs.

Is there a free tarot API?

Yes. sk-test- keys are free and unlimited on all 14 tarot endpoints, with the same response structure as production. The free plan adds 1,000 real calls a month with no credit card.

Does the tarot API return card images?

No. It returns card data and interpretation text (ID, name, suit, element, keywords, upright or reversed meaning, in English and Hindi). Use artwork you have the rights to, keyed by the card id or name in the response.

Which tarot decks are supported?

Four: rider_waite (Rider-Waite-Smith, the default, 78 cards), thoth (78 cards with Crowley's names), osho_zen (79 cards including The Master; never reversed) and marseille (78 cards with French names). Pass "deck" on any reading.

Can I get the same reading again?

Yes. Send an integer "seed": the same seed and question on the same day return the same cards and orientations. Without a seed the draw is random. Every reading also returns a reading_id, timestamp and the seed used for your own history.

Does the tarot API support Hindi?

Yes, at no extra cost. Card names, positions, interpretations, keywords and yes/no answers all come with Hindi twins (name_hi, position_hi, interpretation_hi, keywords_hi, answer_hi) in the same response.

How many calls does a Celtic Cross reading use?

One. Every endpoint costs 1 call whatever the spread size, so the 10-card Celtic Cross and the combined /full reading each count as a single call.

Time to bring the cosmos into your app.

Start free. No credit card. API key in under 1 minute.