Causilo API

Send a table with the answers filled in and a table with the answers missing. Causilo returns one prediction for each row that is missing an answer. There is no training step and nothing to tune.

This page is the short version: one call, the data contract, and what it costs. The reference has everything else, and the cookbook has scripts you can run as they are. This page and the reference are rendered from the settings the service at https://api.nums.world enforces, so their numbers are the ones you will be held to. The cookbook pages show output recorded on the date each one names; check anything you are about to build against GET https://api.nums.world/limits.

1. Install and make one call

pip install causilo-client
import pandas as pd
from causilo_client import Causilo

cx = Causilo("https://api.nums.world", token="csl_...")

context = pd.DataFrame({
    "region":   ["EU", "EU", "US", "US", "APAC", "APAC"],
    "plan":     ["pro", "free", "pro", "free", "pro", "free"],
    "spend":    [120.0, 0.0, 340.0, 12.0, 90.0, 4.0],
    "renewed":  ["yes", "no", "yes", "no", "yes", "no"],
})
query = pd.DataFrame({
    "region": ["EU", "APAC"],
    "plan":   ["pro", "free"],
    "spend":  [200.0, 1.0],
})

print(cx.predict(context, query, target="renewed", model="causilo-clf"))

The same call with its output, on a real dataset, is the quickstart. Every parameter it accepts is in the reference.

2. What the two tables are

The context carries the target column; the query does not. Feature columns appear in both, with the same names in the same order. The model reads them by position, so a query whose columns are in a different order is refused with a 422 naming both lists rather than answered.

Two models are served: causilo-clf for classification and causilo-reg for regression. Causilo vs XGBoost measures what the absence of tuning costs you in accuracy against a tree you would have tuned.

3. Cells and limits

Nothing is invoiced. An account comes with an allowance of cells, and when it runs out the service stops answering until it resets โ€” there is no bill and no overage. The numbers below are that allowance.

Cells per month25,000,000
Cells per day6,250,000
Requests per minute60
Requests per hour1,500

A cell is one value in a table you send โ€” context and query rows together, target column excluded. A stored context still counts its rows on every call that names it.

The hourly limit is the one a steady caller meets first: sixty a minute sustained would be three thousand six hundred an hour.

Two rules are worth knowing before you build a loop. A request that fails does not count. A request you stop waiting for counts in full, because hanging up does not reach the machine running the prediction and a call that has started cannot be cancelled.

GET https://api.nums.world/usage reports what you have spent, and every successful response carries the same figures. The reference has the exact rule, the 20 error codes and the limits the service is enforcing right now.

4. Where to go next

Run the quickstart against a real dataset โ€” it prints what the server did with the call, not only what it answered. Then read the terms, which say what happens to the table you send and how long any of it is kept.


Questions to api@nums.world. The machine-readable contract is at /openapi.yaml — it says "ask and we will send it" no longer, because it is served.