# Kabbalah API

> Kabbalah API for gematria, the 72 names, the Tree of Life and the Hebrew birthday, from one key. Score a Hebrew word or a Latin name across ten rabbinic ciphers with the per letter breakdown, every candidate Hebrew spelling shown and the rule that chose one, plus a cited equal value lexicon. The 72 names are derived from the verses rather than copied from a table, the birth name is dated by the exact position of the Sun or by the civil wheel as you choose, and the sephirot, the 22 paths and the 22 letters come back under typed school variants cross linked to the tarot deck. One key covers every RoxyAPI domain, with Remote MCP and typed SDKs.

A gematria number you can show the spelling for.

- Product page: https://roxyapi.com/products/kabbalah-api
- OpenAPI spec: https://roxyapi.com/api/v2/kabbalah/openapi.json
- Remote MCP server: https://roxyapi.com/mcp/kabbalah
- Authentication: `X-API-Key` header on every request
- Pricing: https://roxyapi.com/pricing (all domains included in every plan)

## Stats

- uptime: 99.95%+
- endpoints: 12

## Features

- Typed transliteration that shows its work: a Latin name has no single Hebrew spelling, so every candidate spelling comes back with its own values and the rule that produced it, and the chosen one is named. A letter the published map does not cover is rejected by name rather than silently dropped
- Eleven rabbinic ciphers plus two substitution transformations, and three Latin alphabet ciphers labelled by lineage from Agrippa 1533 to Mathers 1887, so a Renaissance Christian cipher is never presented as Jewish practice
- A curated equal value lexicon where every entry carries at least two independent citations, and a per letter breakdown on every number so a reader can see why it is what it is
- The 72 names derived from three verses of Exodus read in the boustrophedon order rather than read off a table, with any row where a named published list differs flagged on that row
- The birth name dated two ways and the response says which: by the exact five degree arc the Sun stood in, or by the fixed civil wheel with the year start and the leap day policy as request parameters
- The Hebrew date and the Hebrew birthday computed from the published calendar algorithm, with the sunset boundary typed as a request field because it depends on where you were
- The ten sephirot, the 22 paths and the 22 letters under four attribution readings, each path cross linked to the tarot trump on it in the Tarot API on the same key
- A daily that is actually dated: the Omer count, its sephirot pairing and the printed Hebrew label, with the next opening date returned outside the window instead of an invented reading

## Includes

The Kabbalah API bundles these sub-APIs under one key:

- Gematria API
- Kabbalah Numerology API
- 72 Names of God API
- Tree of Life API
- Hebrew Birthday API

## Use Cases

- Multi domain spiritual apps: a Kabbalah tab beside numerology and tarot, sharing one key and one billing account
- Name meaning and numerology products: the gematria of a name with every spelling shown and the equal value words cited
- Tarot apps: the 22 paths with the letter and the trump on each, from the same deck the Tarot API serves
- Jewish culture and education apps: the Hebrew birthday, the Omer day and the Sefer Yetzirah letter table, computed rather than looked up
- AI agents over Remote MCP: a tool that asks for the Hebrew or the transliteration convention and returns the spellings it scored
- Reference and editorial platforms: sephirot, letter and cipher lookups with the tradition and the century stated on every row

## FAQ

### How do I get the gematria of a name via API?

Post the name and the API returns every Hebrew spelling the transliteration map produces, each with its values under the rabbinic ciphers and a per letter breakdown, plus the spelling it chose and the rule that chose it. Send the Hebrew yourself instead and it scores exactly that spelling. Vowel points and cantillation marks are removed before scoring, so a pointed and an unpointed spelling of one word give the same number.

### Why do two gematria calculators disagree on my name?

Almost always because they wrote it in Hebrew differently and said nothing about it. There is no standard for turning a Latin name into Hebrew: the published Hebrew standards all go the other way. This API takes the transliteration scheme as a typed parameter, returns every candidate spelling rather than one, and echoes the convention on the response, so two answers can be compared instead of argued about.

### What is my birth angel and how is it worked out?

The Renaissance tradition gives a birth three names rather than one: two read from the day of birth by two different cycles, and one from the twenty minute interval of the hour. The name of the day can be dated by the exact arc the Sun stood in or by a fixed civil calendar of five day periods, and the two drift apart by up to about three days by early August. Both are offered, the request chooses, and the response says which one produced the answer.

### Which arrangement of the Tree of Life does the API use?

The 1652 arrangement, in which Malkuth carries three paths, which is the one the Hermetic orders used and the only one with a published table that letters every path. A one path Malkuth arrangement is in circulation, but the diagram it is traced to had seventeen paths and no letters at all, so there is no sourced table to serve. The parameter is typed and echoed so this cannot change under a caller without notice.

### Is this Jewish Kabbalah or Hermetic Qabalah?

Both, and every row says which. The letter values, the ciphers, the substitution methods and the Omer count are rabbinic. The tarot trumps on the paths, the sephirot spheres and the transliteration map are Renaissance and Victorian Hermetic. Each cipher and each table carries a provenance class and the century of its tradition, so a product can present one, the other, or both without misattributing either.

### Does this compute the Hebrew calendar?

It computes a Hebrew birthday, not a calendar. The Hebrew date of a birth, the anniversary that follows it and the sunset boundary are fields inside the birth profile, worked out from the published calendar algorithm with no runtime dependency on anything. There are no holidays, no candle times and no Torah readings here, because a free and well maintained converter already covers that ground.

## Endpoints

- `POST /api/v2/kabbalah/gematria` Calculate gematria - Hebrew gematria calculator API with every spelling shown
- `GET /api/v2/kabbalah/ciphers` List gematria ciphers - gematria methods API with provenance on every row
- `POST /api/v2/kabbalah/name-profile` Generate a name profile - Kabbalah name numerology API with the spelling shown
- `POST /api/v2/kabbalah/birth-profile` Generate a birth profile - Hebrew birthday and birth angel API
- `GET /api/v2/kabbalah/names` List the 72 names - Shem HaMephorash API derived from the verses
- `GET /api/v2/kabbalah/names/{number}` Get one of the 72 names - 72 names of God API by index
- `GET /api/v2/kabbalah/tree` Get the Tree of Life - sephirot and 22 paths API with typed school variants
- `GET /api/v2/kabbalah/sephirot/{id}` Get one sephirah - sefirot meaning API with the paths that touch it
- `GET /api/v2/kabbalah/letters` List the Hebrew letters - Hebrew alphabet API with the Sefer Yetzirah attributions
- `GET /api/v2/kabbalah/letters/{id}` Get one Hebrew letter - Hebrew letter meaning API
- `POST /api/v2/kabbalah/compatibility` Compare two names - gematria name compatibility API with every component published
- `GET /api/v2/kabbalah/daily` Get the sephirah of the day - Omer count API with the sephirot pairing

### Kabbalah (`/kabbalah/`)
A string in, a number and the spelling it came from out. `POST /kabbalah/gematria` takes either `text`, a Latin name that must be written in Hebrew first, or `textHebrew`, a spelling you supply; sending both or neither returns 400. There is no standard for writing a Latin name in Hebrew, so the response returns EVERY candidate spelling in `hebrewForms` with its own values, names the one it used in `chosen`, and states the rule that chose it. Five Latin letters, `c`, `e`, `f`, `w` and `x`, have no Hebrew in the published map, and a name containing one returns 400 naming those letters rather than dropping them. Only the birth profile needs birth data, and it takes no latitude and no longitude at all: `date`, `time` and `timezone` and nothing else. Nine school splits are typed request fields with named defaults, echoed back under `conventions` on every response that has one: `transliteration`, `misparGadol`, `atbashOutput`, `letterAttribution`, `treeVariant`, `sephirotSystem`, `angelDating`, `yearStart` and `leapDayPolicy`, plus the `afterSunset` boolean. Every cipher, letter table and path attribution carries a `tradition` and a `century`, so a Renaissance Christian cipher is never returned as rabbinic practice.

- `POST /kabbalah/gematria`: Every Hebrew spelling of the input with its cipher values and per letter breakdown, the AtBash and Albam substitutions, and the curated equal value `matches` with at least two sources each. `ciphers` filters the top level `values`; each `hebrewForms` entry keeps the full set. `latinCiphers: true` adds three Latin alphabet ciphers with a `lineage` sentence naming the authors, valid only with a Latin `text`.
- `GET /kabbalah/ciphers`: The provenance catalogue, 16 rows across `ciphers`, `latinCiphers` and `transformations`, each with a `definition`, `tradition`, `century`, `computed` flag and `sources`. `mispar-mispari` is the one row with `computed: false` and it returns `value: null` wherever it appears.
- `POST /kabbalah/name-profile`: A name across four named readings as an OBJECT, `values.standard`, `large`, `small` and `preceding`, plus `letters` and the `sephirah` the reduced value points at. Use this for a name card and the gematria route when a reader wants every cipher.
- `POST /kabbalah/birth-profile`: `hebrewDate` with the Hebrew string and the `afterSunset` echo, `hebrewBirthday` (null with a note when that Hebrew day is missing from the target year), `angels`, always three entries with roles `body`, `character` and `spirit`, and the birth `sephirah`. `time` defaults to noon and the response says so.
- `GET /kabbalah/names`: The 72 names, paginated with `total`, `limit` and `offset`. Pass `longitude` instead and it returns the single name governing that five degree arc of the ecliptic.
- `GET /kabbalah/names/{number}`: One name by index 1 to 72, because the Latin spellings differ between published tables while the index never does. `letters` normalizes word final forms and `lettersAsWritten` keeps them, and `publishedDisagreement` appears on the one row where a second published list differs.
- `GET /kabbalah/tree`: Eleven `sephirot` rows, the 22 `paths`, the four `worlds` and the ten step `lightningFlash`. Daat is the eleventh row and carries `number: null` and no path, so filter on `number` when drawing the ten. Each world publishes BOTH readings as `sephirot` and `sephirotAlternate`.
- `GET /kabbalah/sephirot/{id}`: One sphere with `pillar`, `pillarName`, `world`, `attribution` and every path that touches it. Ids are the ten plus `daat`.
- `GET /kabbalah/letters`: All 22 letters with `total`, `classCounts` (3 mother, 7 double, 12 simple) and the `letterAttribution` in force. No pagination. Each letter carries `attribution.kind` of `element`, `planet` or `sign`, the tarot `trump` and its `path` number.
- `GET /kabbalah/letters/{id}`: One letter in full, adding `final` and `finalValue` for the five that take a word final form, and `classReading` for its class.
- `POST /kabbalah/compatibility`: Two names, `sharedValues`, a `score` and a `band`, and four weighted `components` each with `points`, `maximum` and `matched`. The score is a RoxyAPI composite, so render the components rather than the number alone. Send `firstNameHebrew` and `secondNameHebrew` to score exact spellings.
- `GET /kabbalah/daily`: The Omer day, its `weekSephirah` and `daySephirah` pairing and the printed `hebrewLabel`. The count runs forty nine days a year, so branch on `inOmer` first: outside the window the response carries `nextStart` and no reading.

Two response conventions worth knowing before you parse: a cipher value can be `null` (`mispar-mispari` is catalogued and not computed) and a cipher can be multi valued, so `otiyot-be-milui` carries `alternateValues` beside `value`. Hebrew strings are data and never translate, while `meaning`, `note`, `reading`, `rule`, `classReading`, `window` and `definition` do.

## Example Response

```
POST /api/v2/kabbalah/gematria
```

```json
{
  "input": {
    "text": "Ruth"
  },
  "hebrewForms": [
    {
      "hebrew": "רות",
      "romanization": "RVTh",
      "rule": "Longest match first: every two letter group the table prints is read as one Hebrew letter before the single letters are tried.",
      "values": [
        {
          "id": "mispar-hechrachi",
          "value": 606,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-gadol",
          "value": 606,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "otiyot-be-milui",
          "value": 928,
          "alternateValues": [
            929,
            938
          ],
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-katan",
          "value": 12,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-kidmi",
          "value": 2311,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-prati",
          "value": 200036,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-ha-merubah-ha-klali",
          "value": 367236,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-meshulash",
          "value": 72000216,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-mispari",
          "value": null,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-musafi",
          "value": 609,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "kolel",
          "value": 607,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        }
      ],
      "letters": [
        {
          "glyph": "ר",
          "letterId": "resh",
          "name": "Resh",
          "isFinal": false,
          "value": 200
        },
        {
          "glyph": "ו",
          "letterId": "vav",
          "name": "Vau",
          "isFinal": false,
          "value": 6
        },
        {
          "glyph": "ת",
          "letterId": "tav",
          "name": "Tau",
          "isFinal": false,
          "value": 400
        }
      ]
    },
    {
      "hebrew": "רוטה",
      "romanization": "RVTH",
      "rule": "An alternative parse: at least one two letter group is read as two separate Hebrew letters instead of one.",
      "values": [
        {
          "id": "mispar-hechrachi",
          "value": 220,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-gadol",
          "value": 220,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "otiyot-be-milui",
          "value": 947,
          "alternateValues": [
            948,
            951,
            952,
            956,
            957,
            961,
            966
          ],
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-katan",
          "value": 22,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-kidmi",
          "value": 876,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-prati",
          "value": 40142,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-ha-merubah-ha-klali",
          "value": 48400,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-meshulash",
          "value": 8001070,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-mispari",
          "value": null,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "mispar-musafi",
          "value": 224,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        },
        {
          "id": "kolel",
          "value": 221,
          "tradition": "rabbinic",
          "source": "https://en.wikipedia.org/wiki/Gematria"
        }
      ],
      "letters": [
        {
          "glyph": "ר",
          "letterId": "resh",
          "name": "Resh",
          "isFinal": false,
          "value": 200
        },
        {
          "glyph": "ו",
          "letterId": "vav",
          "name": "Vau",
          "isFinal": false,
          "value": 6
        },
        {
          "glyph": "ט",
          "letterId": "tet",
          "name": "Teth",
          "isFinal": false,
          "value": 9
        },
        {
          "glyph": "ה",
          "letterId": "he",
          "name": "He",
          "isFinal": false,
          "value": 5
        }
      ]
    }
  ],
  "chosen": {
    "hebrew": "רות",
    "rule": "Longest match first: every two letter group the table prints is read as one Hebrew letter before the single letters are tried."
  },
  "values": [
    {
      "id": "mispar-hechrachi",
      "value": 606,
      "tradition": "rabbinic",
      "source": "https://en.wikipedia.org/wiki/Gematria"
    },
    {
      "id": "mispar-gadol",
      "value": 606,
      "tradition": "rabbinic",
      "source": "https://en.wikipedia.org/wiki/Gematria"
    },
    {
      "id": "otiyot-be-milui",
      "value": 928,
      "alternateValues": [
        929,
        938
      ],
      "tradition": "rabbinic",
      "source": "https://en.wikipedia.org/wiki/Gematria"
    },
    {
      "id": "mispar-katan",
      "value": 12,
      "tradition": "rabbinic",
      "source": "https://en.wikipedia.org/wiki/Gematria"
    },
    {
      "id": "mispar-kidmi",
      "value": 2311,
      "tradition": "rabbinic",
      "source": "https://en.wikipedia.org/wiki/Gematria"
    },
    {
      "id": "mispar-prati",
      "value": 200036,
      "tradition": "rabbinic",
      "source": "https://en.wikipedia.org/wiki/Gematria"
    },
    {
      "id": "mispar-ha-merubah-ha-klali",
      "value": 367236,
      "tradition": "rabbinic",
      "source": "https://en.wikipedia.org/wiki/Gematria"
    },
    {
      "id": "mispar-meshulash",
      "value": 72000216,
      "tradition": "rabbinic",
      "source": "https://en.wikipedia.org/wiki/Gematria"
    },
    {
      "id": "mispar-mispari",
      "value": null,
      "tradition": "rabbinic",
      "source": "https://en.wikipedia.org/wiki/Gematria"
    },
    {
      "id": "mispar-musafi",
      "value": 609,
      "tradition": "rabbinic",
      "source": "https://en.wikipedia.org/wiki/Gematria"
    },
    {
      "id": "kolel",
      "value": 607,
      "tradition": "rabbinic",
      "source": "https://en.wikipedia.org/wiki/Gematria"
    }
  ],
  "transformations": [
    {
      "id": "atbash",
      "output": "גפא",
      "outputRomanization": "GPA",
      "value": 84,
      "tradition": "rabbinic",
      "source": "https://en.wikipedia.org/wiki/Gematria"
    },
    {
      "id": "albam",
      "output": "טפך",
      "outputRomanization": "TPK",
      "value": 109,
      "tradition": "rabbinic",
      "source": "https://en.wikipedia.org/wiki/Gematria"
    }
  ],
  "matches": [],
  "conventions": {
    "transliteration": "letter-map-mathers",
    "misparGadol": "finals-500-900",
    "atbashOutput": "both"
  }
}
```

## SDK Quick Start

```typescript
// npm install @roxyapi/sdk
import { createRoxy } from '@roxyapi/sdk';
const roxy = createRoxy(process.env.ROXY_API_KEY!);
const { data, error } = await roxy.kabbalah.calculateGematria({ body: { text: 'Ruth' } });
```

```python
# pip install roxy-sdk
import os
from roxy_sdk import create_roxy
roxy = create_roxy(api_key=os.environ["ROXY_API_KEY"])
result = roxy.kabbalah.calculate_gematria(text="Ruth")
```

```php
// composer require roxyapi/sdk (PHP 8.2+, built on Saloon)
use function RoxyAPI\Sdk\createRoxy;
$roxy = createRoxy(getenv('ROXY_API_KEY'));
$result = $roxy->kabbalah->calculateGematria(text: 'Ruth');
```

```csharp
// dotnet add package RoxyApi.Sdk (.NET 8 and netstandard2.0)
using RoxyApi;
using Microsoft.Kiota.Abstractions;
var roxy = new RoxyClient(Environment.GetEnvironmentVariable("ROXY_API_KEY")!);
var data = await roxy.Kabbalah.Gematria.PostAsync(new() { Text = "Ruth" });
```

TS, Python, and PHP method names come from OpenAPI `operationId` (camelCase in TS and PHP, snake_case in Python). TS returns `{ data, error, response }` — check `error` first. Python raises `RoxyAPIError`; PHP throws `RoxyApiException` (catch and switch on `$e->errorCode`). The C# (.NET) client is path-fluent — `roxy.Domain.Resource.GetAsync()` or `.PostAsync(new() { ... })`, PascalCase mirroring the URL — and throws `RoxyError` (switch on `e.Code`).

## MCP Tool Naming

Each REST endpoint has a matching MCP tool on `https://roxyapi.com/mcp/kabbalah`. Tool name convention is `{http_method_lowercase}_{path_with_slashes_as_underscores_kebab_replaced_with_underscores_braces_stripped}`:

```
POST /kabbalah/gematria                       -> post_kabbalah_gematria
GET  /kabbalah/ciphers                        -> get_kabbalah_ciphers
POST /kabbalah/name-profile                   -> post_kabbalah_name_profile
```

`tools/list` is free and public (no auth). `tools/call` requires `X-API-Key` (same billing as REST — 1 request per call).

## Multi-language Support

Append `?lang=` to translated endpoints. Supported on this domain: `en, de, es, fr, hi, pt, ru, tr`. English is the default. The `lang` param is ignored on endpoints that have no translatable text.

## Error Contract

Success returns clean JSON, no wrapper. Errors return `{ "error": string, "code": string }`. Switch on `code` (stable):

- `validation_error` (400, returns `issues[]` with all field errors at once)
- `api_key_required` (401), `invalid_api_key` (401)
- `subscription_inactive` (403), `subscription_not_found` (404)
- `not_found` (404; PATH-routing 404s carry a fuzzy `suggestion` field)
- `rate_limit_exceeded` (429)
- `internal_error` (500)

Do not retry on 4xx. Do retry on 429 and 5xx with exponential backoff.

## Related Surfaces

- **Guide:** [Kabbalah integration guide](https://roxyapi.com/docs/guides/kabbalah.md)
- [Gematria Calculator API: Every Hebrew Spelling, Shown](https://roxyapi.com/blogs/gematria-calculator-api-hebrew-spellings-72-names.md)

## Full Reference

For complete request and response schemas, fetch the OpenAPI spec at https://roxyapi.com/api/v2/kabbalah/openapi.json. Master agent manifest at https://roxyapi.com/llms.txt. Execution playbook at https://roxyapi.com/AGENTS.md.
