Skip to main content

Namespace

A namespace is the bucket your limits live in. Use your app or service name — contiguity-api, console, webhooks. Two services should not share a namespace unless they intend to share a quota.

Product

Optional. Appended to the namespace as namespace.product. product is slugified: lowercased, and anything that isn’t a-z or 0-9 becomes _.
Use it to split one app into separate quotas (SMS vs email, free vs paid, inbound vs outbound).

Identifier

The thing you’re limiting. A user id, an IP, an API key, a phone number — whatever is unique per subject.
The same identifier in two namespaces is two independent counters.

Limit and duration

limit is how many requests are allowed. duration is the window, in seconds on the API. The SDK also accepts "30s", "5m", "1h", and "1d".
Limits must be at least 1 and at most 1,000,000. Duration must be at least 1 second and at most one year.

Algorithms

Default is fixed-window. See Algorithms if you need bursts, smoother windows, or traffic shaping.

Fail-open

If Limitem is unreachable — or the SDK times out — the request is allowed. That’s intentional. A limiter that takes Contiguity down is worse than a limiter that misses a few extra requests.
The API includes degraded: true on the success payload. The SDK sets failover: true.
Yes, in the SDK: fail_closed: true. Timeouts and 5xx then come back as allowed: false with failover: true.