RoxyAPI Tarot API

Tarot reading API with the complete 78-card Rider-Waite-Smith deck and card meanings for love, career, health, and spiritual growth. Celtic Cross, three-card, love, career, yes/no oracle, daily card, and custom spreads, each with upright and reversed interpretations. Seeded reproducibility for personalized daily readings, and card images included. Built for tarot apps, AI tarot chatbots, fortune-telling platforms, and spiritual wellness products. One key covers every RoxyAPI domain, with Remote MCP and typed SDKs.

Operations 10

GET /tarot/cards List all 78 tarot cards #
GET /tarot/cards/{id} Get detailed tarot card information #
POST /tarot/draw Draw random tarot cards with reproducible results #
POST /tarot/daily Get daily tarot card reading #
POST /tarot/yes-no Get yes/no answer to your question #
POST /tarot/spreads/three-card Three-Card Spread: Past, Present, Future #
POST /tarot/spreads/celtic-cross Celtic Cross Spread (10 cards) #
POST /tarot/spreads/love Love Spread (5 cards) #
POST /tarot/spreads/career Career Spread (7 cards) #
POST /tarot/spreads/custom Custom Spread Builder #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/roxyapi-tarot-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

roxyapi-tarot-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Roxy Tarot API
  version: 2.0.0
  description: '# RoxyAPI: AI-Native Insight Infrastructure


    > **Base URL:** `https://roxyapi.com/api/v2`

    > All endpoint paths below are relative to this base URL.'
  contact:
    name: RoxyAPI Support
    url: https://roxyapi.com/contact
  license:
    name: Proprietary
    url: https://roxyapi.com/policy/terms
servers:
- url: /api/v2
  description: Production API v2
security:
- apiKey: []
tags:
- name: Tarot
  description: Tarot reading API with the complete 78-card Rider-Waite-Smith deck and card meanings for love, career, health, and spiritual growth.
paths:
  /tarot/cards:
    get:
      operationId: listCards
      tags:
      - Tarot
      summary: List all 78 tarot cards
      description: 'Retrieve the complete Rider-Waite-Smith tarot deck of 78 cards: 22 Major Arcana (numbered 0-21, representing life lessons, spiritual themes, and karmic influences like The Fool, Death, The Tower) plus 56 Minor Arcana (4 suits × 14 cards each for daily situations and practical matters). Filter by arcana type (major for spiritual guidance, minor for everyday concerns), suit (cups for emotions and relationships, wands for creativity and passion, swords for intellect and conflict, pentacles for material wealth and finances), or card number (Ace=1 for new beginnings, 2-10 for progression, Page=11 for messages, Knight=12 for action, Queen=13 for mastery, King=14 for authority). Returns lightweight basic card data - use GET /cards/{id} for full upright and reversed interpretations with keywords. Perfect for building tarot reference libraries, card databases, learning applications, or browsing the complete traditional deck used by professional tarot readers worldwide.'
      security:
      - apiKey: []
      parameters:
      - schema:
          type: string
          enum:
          - en
          - tr
          - de
          - es
          - hi
          - pt
          - fr
          - ru
          - zh-Hans
          - zh-Hant
          default: en
          example: en
          description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'
        required: false
        description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'
        name: lang
        in: query
      - schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 20
          example: 20
          description: 'Maximum items to return per page. Range: 1-100, default 20.'
        required: false
        description: 'Maximum items to return per page. Range: 1-100, default 20.'
        name: limit
        in: query
      - schema:
          type:
          - integer
          - 'null'
          minimum: 0
          default: 0
          example: 0
          description: Number of items to skip for pagination. Default 0.
        required: false
        description: Number of items to skip for pagination. Default 0.
        name: offset
        in: query
      - schema:
          type: string
          enum:
          - major
          - minor
          example: major
          description: Filter by arcana type. Major arcana (0-21) represents life lessons and spiritual themes. Minor arcana (Ace-King in 4 suits) represents daily situations and practical matters.
        required: false
        description: Filter by arcana type. Major arcana (0-21) represents life lessons and spiritual themes. Minor arcana (Ace-King in 4 suits) represents daily situations and practical matters.
        name: arcana
        in: query
      - schema:
          type: string
          enum:
          - cups
          - wands
          - swords
          - pentacles
          example: cups
          description: Filter minor arcana by suit. Cups=emotions/relationships, Wands=creativity/passion, Swords=intellect/conflict, Pentacles=material/finances. Only applies to minor arcana cards.
        required: false
        description: Filter minor arcana by suit. Cups=emotions/relationships, Wands=creativity/passion, Swords=intellect/conflict, Pentacles=material/finances. Only applies to minor arcana cards.
        name: suit
        in: query
      - schema:
          type:
          - number
          - 'null'
          minimum: 0
          maximum: 21
          example: 1
          description: 'Filter by card number. Major Arcana: 0 (The Fool) through 21 (The World). Minor Arcana: 1 (Ace) through 14 (King). Combine with arcana or suit filters for precise results.'
        required: false
        description: 'Filter by card number. Major Arcana: 0 (The Fool) through 21 (The World). Minor Arcana: 1 (Ace) through 14 (King). Combine with arcana or suit filters for precise results.'
        name: number
        in: query
      responses:
        '200':
          description: List of tarot cards with basic information. Use GET /cards/{id} for full details.
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: number
                    example: 78
                    description: Total number of tarot cards matching the applied filters. 78 for the full deck, 22 for Major Arcana, 56 for Minor Arcana, 14 per suit.
                  limit:
                    type: number
                    example: 20
                    description: Maximum items returned per page.
                  offset:
                    type: number
                    example: 0
                    description: Number of items skipped from the start of the result set.
                  cards:
                    type: array
                    items:
                      $ref: '#/components/schemas/BasicCard'
                    description: Array of tarot cards with basic metadata. Use GET /cards/{id} for full upright and reversed interpretations.
                required:
                - total
                - limit
                - offset
                - cards
        '400':
          description: Validation error. `issues[]` lists every failed field.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: First issue summary.
                  code:
                    type: string
                    enum:
                    - validation_error
                  issues:
                    type: array
                    description: Every validation failure. Use this to rebuild a valid request.
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          description: Dot-separated field path, or "(root)" for top-level.
                        message:
                          type: string
                        code:
                          type: string
                          description: Zod issue code (invalid_type, too_small, too_big, invalid_string, ...).
                        expected:
                          type: string
                          description: Expected type for invalid_type.
                        minimum:
                          description: Minimum bound for too_small issues.
                          oneOf:
                          - type: number
                          - type: string
                        maximum:
                          description: Maximum bound for too_big issues.
                          oneOf:
                          - type: number
                          - type: string
                        inclusive:
                          type: boolean
                        format:
                          type: string
                          description: Format name for string issues (regex, email, url, uuid).
                        pattern:
                          type: string
                          description: Regex pattern when format is regex.
                      required:
                      - path
                      - message
                required:
                - error
                - code
                - issues
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Human-readable error message. May change wording.
                  code:
                    type: string
                    description: Machine-readable error code. Stable identifier.
                required:
                - error
                - code
        '405':
          description: Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.
          headers:
            Allow:
              description: Comma-separated list of allowed methods (RFC 9110).
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                    enum:
                    - method_not_allowed
                  allow:
                    type: array
                    items:
                      type: string
                    description: Allowed HTTP methods for this path. Mirrors the Allow response header.
                  docs:
                    type: string
                    description: Link to the product page for this domain.
                required:
                - error
                - code
                - allow
        '429':
          description: Monthly rate limit exceeded
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Human-readable error message. May change wording.
                  code:
                    type: string
                    description: Machine-readable error code. Stable identifier.
                required:
                - error
                - code
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Human-readable error message. May change wording.
                  code:
                    type: string
                    description: Machine-readable error code. Stable identifier.
                required:
                - error
                - code
  /tarot/cards/{id}:
    get:
      operationId: getCard
      tags:
      - Tarot
      summary: Get detailed tarot card information
      description: 'Retrieve comprehensive details for a specific tarot card from the traditional Rider-Waite-Smith deck including complete upright meanings (card drawn normally) and reversed meanings (inverted/upside down interpretations for nuanced guidance). Each card provides keywords for quick reference, full interpretations (400+ words each for upright and reversed orientations), and guidance across life domains: love and relationships, career and professional growth, finances and material success, health and wellbeing, spirituality and personal development. Major Arcana cards (0-21) reveal deep spiritual lessons and life-changing themes. Minor Arcana cards (Ace through King in Cups, Wands, Swords, Pentacles) address practical daily situations and specific challenges. Use card ID in kebab-case format: Major Arcana like "fool", "magician", "death", "tower", or Minor Arcana like "ace-of-cups", "seven-of-wands", "queen-of-swords", "king-of-pentacles". Major Arcana IDs carry no leading article, though one is accepted, so "the-star" and "star" both return The Star. Essential for detailed tarot study, reading interpretations, divination apps, fortune-telling platforms, spiritual guidance tools, and professional tarot learning applications.'
      security:
      - apiKey: []
      parameters:
      - schema:
          type: string
          example: fool
          description: 'Card identifier. Major arcana: "fool", "magician", "death". Minor arcana: "ace-of-cups", "seven-of-wands", "queen-of-swords", "king-of-pentacles". Casing and separators are flexible, so "Fool" and "ACE_OF_CUPS" both resolve, and a leading definite article is optional, so "the-star" resolves to "star". The canonical form, and the one every response echoes, is kebab-case with no article.'
        required: true
        description: 'Card identifier. Major arcana: "fool", "magician", "death". Minor arcana: "ace-of-cups", "seven-of-wands", "queen-of-swords", "king-of-pentacles". Casing and separators are flexible, so "Fool" and "ACE_OF_CUPS" both resolve, and a leading definite article is optional, so "the-star" resolves to "star". The canonical form, and the one every response echoes, is kebab-case with no article.'
        name: id
        in: path
      - schema:
          type: string
          enum:
          - en
          - tr
          - de
          - es
          - hi
          - pt
          - fr
          - ru
          - zh-Hans
          - zh-Hant
          default: en
          example: en
          description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'
        required: false
        description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'
        name: lang
        in: query
      responses:
        '200':
          description: Card details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Card'
        '400':
          description: Validation error. `issues[]` lists every failed field.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: First issue summary.
                  code:
                    type: string
                    enum:
                    - validation_error
                  issues:
                    type: array
                    description: Every validation failure. Use this to rebuild a valid request.
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          description: Dot-separated field path, or "(root)" for top-level.
                        message:
                          type: string
                        code:
                          type: string
                          description: Zod issue code (invalid_type, too_small, too_big, invalid_string, ...).
                        expected:
                          type: string
                          description: Expected type for invalid_type.
                        minimum:
                          description: Minimum bound for too_small issues.
                          oneOf:
                          - type: number
                          - type: string
                        maximum:
                          description: Maximum bound for too_big issues.
                          oneOf:
                          - type: number
                          - type: string
                        inclusive:
                          type: boolean
                        format:
                          type: string
                          description: Format name for string issues (regex, email, url, uuid).
                        pattern:
                          type: string
                          description: Regex pattern when format is regex.
                      required:
                      - path
                      - message
                required:
                - error
                - code
                - issues
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Human-readable error message. May change wording.
                  code:
                    type: string
                    description: Machine-readable error code. Stable identifier.
                required:
                - error
                - code
        '404':
          description: Card not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Resource not found
                    description: Human-readable error message. The wording may change, so do not parse it programmatically. Switch on the stable code instead.
                  code:
                    type: string
                    example: not_found
                    description: Machine-readable error code. Stable identifier for programmatic error handling.
                required:
                - error
                - code
        '405':
          description: Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.
          headers:
            Allow:
              description: Comma-separated list of allowed methods (RFC 9110).
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                    enum:
                    - method_not_allowed
                  allow:
                    type: array
                    items:
                      type: string
                    description: Allowed HTTP methods for this path. Mirrors the Allow response header.
                  docs:
                    type: string
                    description: Link to the product page for this domain.
                required:
                - error
                - code
                - allow
        '429':
          description: Monthly rate limit exceeded
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Human-readable error message. May change wording.
                  code:
                    type: string
                    description: Machine-readable error code. Stable identifier.
                required:
                - error
                - code
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Human-readable error message. May change wording.
                  code:
                    type: string
                    description: Machine-readable error code. Stable identifier.
                required:
                - error
                - code
  /tarot/draw:
    post:
      operationId: drawCards
      tags:
      - Tarot
      summary: Draw random tarot cards with reproducible results
      description: Draw 1-78 tarot cards from the complete Rider-Waite-Smith deck with seeded reproducibility for consistent personalized readings. Provide an optional seed string (like "user123-2025-12-27" or "readingId") to ensure the same seed always returns identical cards in the exact same order - essential for daily tarot features, personalized user experiences, shareable readings, or reproducible testing. Omit seed for true random draws each time. Control card reversals (upright vs reversed/inverted orientations - reversed cards provide alternative meanings when drawn upside down) and duplicates (traditional deck draws each of 78 cards once, or oracle-style allows repeating same card). Each drawn card includes position number, reversal state (boolean), keywords for quick interpretation, full meaning text (400+ words), authentic Rider-Waite imagery, and card metadata. Perfect for custom spread builders, random card generators, automated tarot reading platforms, daily card features, meditation apps, journaling prompts, divination tools, and any application requiring reproducible or random tarot draws from the industry-standard 78-card deck (22 Major Arcana spiritual lessons + 56 Minor Arcana practical guidance across 4 suits).
      security:
      - apiKey: []
      parameters:
      - schema:
          type: string
          enum:
          - en
          - tr
          - de
          - es
          - hi
          - pt
          - fr
          - ru
          - zh-Hans
          - zh-Hant
          default: en
          example: en
          description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'
        required: false
        description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'
        name: lang
        in: query
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                count:
                  type: number
                  minimum: 1
                  maximum: 78
                  example: 3
                  description: 'Number of cards to draw (1-78). Common values: 1 for daily card, 3 for past-present-future, 5 for relationship spread, 10 for Celtic Cross. Drawing 78 returns the entire shuffled deck.'
                seed:
                  type: string
                  example: user123-2025-12-27
                  description: Optional seed for reproducible results. Same seed = same cards in same order. Use format like "userId-date" for daily consistency, or "readingId" for shareable readings. Omit for true randomness.
                allowReversals:
                  type: boolean
                  default: true
                  example: true
                  description: 'Whether cards can appear reversed (upside down). Reversed cards have different meanings. Set false for upright-only readings. Default: true (50% chance of reversal per card).'
                allowDuplicates:
                  type: boolean
                  default: false
                  example: false
                  description: 'Whether same card can be drawn multiple times. Set false for traditional deck behavior (each card drawn only once). Set true for statistical analysis or oracle-style readings. Default: false.'
              required:
              - count
      responses:
        '200':
          description: Drawn cards
          content:
            application/json:
              schema:
                type: object
                properties:
                  seed:
                    type: string
                    example: user123-2025-12-27
                    description: Seed used for this reading, if one was provided. Same seed reproduces identical draw results for consistent tarot readings.
                  cards:
                    type: array
                    items:
                      $ref: '#/components/schemas/DrawnCard'
                    description: Array of drawn tarot cards in draw order, each with orientation, keywords, and full meaning for divination.
                required:
                - cards
        '400':
          description: Validation error. `issues[]` lists every failed field.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: First issue summary.
                  code:
                    type: string
                    enum:
                    - validation_error
                  issues:
                    type: array
                    description: Every validation failure. Use this to rebuild a valid request.
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          description: Dot-separated field path, or "(root)" for top-level.
                        message:
                          type: string
                        code:
                          type: string
                          description: Zod issue code (invalid_type, too_small, too_big, invalid_string, ...).
                        expected:
                          type: string
                          description: Expected type for invalid_type.
                        minimum:
                          description: Minimum bound for too_small issues.
                          oneOf:
                          - type: number
                          - type: string
                        maximum:
                          description: Maximum bound for too_big issues.
                          oneOf:
                          - type: number
                          - type: string
                        inclusive:
                          type: boolean
                        format:
                          type: string
                          description: Format name for string issues (regex, email, url, uuid).
                        pattern:
                          type: string
                          description: Regex pattern when format is regex.
                      required:
                      - path
                      - message
                required:
                - error
                - code
                - issues
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Human-readable error message. May change wording.
                  code:
                    type: string
                    description: Machine-readable error code. Stable identifier.
                required:
                - error
                - code
        '405':
          description: Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.
          headers:
            Allow:
              description: Comma-separated list of allowed methods (RFC 9110).
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                    enum:
                    - method_not_allowed
                  allow:
                    type: array
                    items:
                      type: string
                    description: Allowed HTTP methods for this path. Mirrors the Allow response header.
                  docs:
                    type: string
                    description: Link to the product page for this domain.
                required:
                - error
                - code
                - allow
        '429':
          description: Monthly rate limit exceeded
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Human-readable error message. May change wording.
                  code:
                    type: string
                    description: Machine-readable error code. Stable identifier.
                required:
                - error
                - code
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Human-readable error message. May change wording.
                  code:
                    type: string
                    description: Machine-readable error code. Stable identifier.
                required:
                - error
                - code
  /tarot/daily:
    post:
      operationId: getDailyCard
      tags:
      - Tarot
      summary: Get daily tarot card reading
      description: Receive a single tarot card for daily guidance and reflection. This endpoint uses seeded randomness to ensure the same seed gets the same card on the same day - perfect for "Card of the Day" features. Provide a seed (userId, email hash, session token) for reproducible consistency, or omit for anonymous daily draws. Returns card with keywords, full meaning, and a daily message summary. Great for tarot apps, wellness platforms, morning ritual apps, and journaling tools.
      security:
      - apiKey: []
      parameters:
      - schema:
          type: string
          enum:
          - en
          - tr
          - de
          - es
          - hi
          - pt
          - fr
          - ru
          - zh-Hans
          - zh-Hant
          default: en
          example: en
          description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'
        required: false
        description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'
        name: lang
        in: query
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                seed:
                  type: string
                  example: user123
                  description: Optional seed for reproducible readings. Same seed + same date = same card every time. Pass any unique identifier (userId, email hash, session token). Omit for anonymous daily readings.
                date:
                  type: string
                  format: date
                  example: '2026-03-06'
                  description: Date for the reading in YYYY-MM-DD format. Defaults to today (UTC). Useful for viewing past daily readings or pre-generating future ones.
      responses:
        '200':
          description: Daily card reading
          content:
            application/json:
              schema:
                type: object
                properties:
                  date:
                    type: string
                    example: '2026-03-06'
                    description: Date of the daily tarot reading in YYYY-MM-DD format (UTC). Determines which card is drawn for seeded readings.
                  seed:
                    type

# --- truncated at 32 KB (118 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/roxyapi/refs/heads/main/openapi/roxyapi-tarot-api-openapi.yml