Batch

Bulk numerology charts in one request

Backfilling charts for an existing user base, or scoring a spreadsheet of names? Send up to 100 people per request and get 100 full charts back, in order, with one set of options for all of them.

One request, up to 100 charts

curl -X POST https://simplenumerologyapi.com/v1/charts/batch \
  -H 'X-API-Key: nk_…' \
  -H 'content-type: application/json' \
  -d '{"charts":[
        {"first_name":"María","last_name":"García López","birthdate":"1990-03-12"},
        {"first_name":"Luis","last_name":"Ortega","birthdate":"1988-07-04"}
      ]}'
{
  "object": "list",
  "system": "pythagorean",
  "count": 2,
  "data": [
    {"index": 0, "chart": {"person": {"first_name": "María", "…": "…"}, "life_path_number": 7, "…": "…"}},
    {"index": 1, "chart": {"person": {"first_name": "Luis", "…": "…"}, "life_path_number": 1, "…": "…"}}
  ]
}

Each chart is the full 47-field chart, the same as POST /v1/charts/pythagorean returns. index matches the position in your request, so you can join results back to your rows.

A CSV in 15 lines of Python

import csv
import os
import requests

API = "https://simplenumerologyapi.com/v1/charts/batch"
HEADERS = {"X-API-Key": os.environ["NUMEROLOGY_API_KEY"]}

with open("people.csv", newline="") as source:
    people = list(csv.DictReader(source))  # first_name, last_name, birthdate

with open("charts.csv", "w", newline="") as target:
    writer = csv.writer(target)
    writer.writerow(["first_name", "last_name", "life_path", "destiny", "soul_urge"])
    for start in range(0, len(people), 100):
        response = requests.post(API, headers=HEADERS, json={"charts": people[start : start + 100]}, timeout=30)
        response.raise_for_status()
        for item in response.json()["data"]:
            chart = item["chart"]
            writer.writerow(
                [
                    chart["person"]["first_name"],
                    chart["person"]["last_name"],
                    chart["life_path_number"],
                    chart["destiny_number"],
                    chart["soul_urge_number"],
                ]
            )

Options apply to the whole batch

Send one options object for every chart in the request, for example {"y_rule": "vowel", "name_reduction": "per_name"}. Every chart echoes the conventions it used, so a backfill made with one set of rules can never be mixed up with another.

How batches are billed

A batch counts one request per chart, so 100 charts in one call cost the same as 100 single calls. What you save is time: one round trip instead of 100, and no rate-limit pauses. The X-Quota-Remaining header after each batch tells you how much of the month is left. Backfilling 10,000 users fits inside the Starter plan, and 500,000 inside Pro.

Frequently asked questions

How many charts can one batch request contain?

Up to 100. For more, split the list into chunks of 100 and send them one after another.

Does a batch request count as one request?

No. It counts one request per chart, so the quota reflects the number of charts computed. A batch is faster, not cheaper.

Is the batch endpoint available on the free plan?

Yes. Every endpoint is available on every plan, and the free plan’s 100 requests a month are enough for one full batch.

Are the results in the same order as the request?

Yes. Each result carries the index of the person it belongs to, in the order they were sent.

Start with 100 free charts a month

No card, no trial clock, no expiry date.

Get a free key

Related