Skip to content
GET /v1/meta

Spec

Try it live

10 free calls per day — no sign-up, no API key. Goes through the oanor gateway.

Custom headers (optional)
api.oanor.com/abtest-api

It works. Grab an API key and use it in your project.

Get an API key

Code snippets

curl "https://api.oanor.com/abtest-api/v1/meta" \
  -H "x-oanor-key: oanor_test_..."
await fetch("https://api.oanor.com/abtest-api/v1/meta", {
  headers: { "x-oanor-key": "oanor_test_..." }
});
$ch = curl_init("https://api.oanor.com/abtest-api/v1/meta");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);
import requests
requests.get(
    "https://api.oanor.com/abtest-api/v1/meta",
    headers={"x-oanor-key": "oanor_test_..."}
)

Example response

A real response from this endpoint, captured by the latest health check.

{
    "data": {
        "name": "A/B Bucketing API",
        "notes": "Hashing is FNV-1a (32-bit) with an avalanche mix, so buckets are uniform and stable across languages and machines. Bucketing and variant assignment use independent hash domains. This assigns experiments; to test whether a result is statistically significant use a statistics API. Nothing is stored.",
        "version": "v1",
        "endpoints": [
            {
                "path": "/v1/bucket",
                "params": {
                    "key": "the unit to bucket — user id, session, etc. (required)",
                    "buckets": "number of buckets (default 100)",
                    "experiment": "experiment/salt name so experiments are independent",
                    "percentage": "if set, also return enabled = inside this % rollout"
                },
                "returns": "the stable bucket (and rollout decision)"
            },
            {
                "path": "/v1/variant",
                "params": {
                    "key": "the unit (required)",
                    "variants": "JSON array of {name,weight}, \"a:50,b:50\", or \"a,b,c\" (equal weights)",
                    "experiment": "experiment/salt name"
                },
                "returns": "the assigned variant and the weight shares"
            },
            {
                "path": "/v1/meta",
                "params": [],
                "returns": "this document"
            }
        ],
        "description": "Deterministic A/B testing and feature-flag assignment — no database, no state. The bucket endpoint hashes a key (a user id, session or device) into a stable bucket (0…N-1) that never changes for the same key, and decides whether the key is inside a percentage rollout; raising the percentage only ever adds users, so a gradual ramp-up is sticky. The variant endpoint assigns one of several weighted variants (control/treatment, or any multivariate split) consistently for the same key. Mix in an experiment name so independent experiments bucket independently. The same inputs always give the same answer everywhere, so client and server agree without coordination. Pure local, no key."
    },
    "meta": {
        "timestamp": "2026-06-03T09:25:02.114Z",
        "request_id": "4d0d62b0-9f9e-40ef-b864-05d66529f6e6"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}