Skip to content

Overrides API

Base: /org/subscribers/{subscriber_id}/overrides

subscriber_id is the id you chose for the subscriber. Feature paths use the catalog key.

Create or replace override

Upsert by feature key for the subscriber. Body kind must match the catalog feature.

PUT /org/subscribers/{subscriber_id}/overrides/{feature_key}

Flag

{
  "kind": "flag",
  "allowed": true,
  "expires_at": "2026-02-01T00:00:00Z"
}

Limit

{
  "kind": "limit",
  "limit": 50
}

Unlimited:

{
  "kind": "limit",
  "limit": null
}

Config

{
  "kind": "config",
  "value": "dedicated"
}
Field Required Rules
kind yes flag | limit | config; must match feature
allowed if flag boolean
limit if limit integer ≥ 0, or null (unlimited)
value if config matches the feature's value_type; not null. To go back to the plan's value, delete the override
expires_at no RFC 3339, fractional seconds optional, Z or a numeric offset (±HH:MM). Example: 2026-12-31T00:00:00Z. Stored as UTC Date#toISOString() (2026-12-31T00:00:00.000Z). A value that is not a real timestamp → 422, one detail on expires_at. null or omit = no expiry

feature_key must exist in the org catalog. Values are absolute (not deltas on the plan).

200 — override (created or updated)

404 — subscriber or feature not found

422 — kind mismatch, config value of the wrong type, invalid body, or an unknown field. Catalog write bodies (this one included) reject properties that are not in the table.

List overrides

GET /org/subscribers/{subscriber_id}/overrides

Optional query: include_expired=true (default false).

200

{
  "overrides": [
    {
      "id": "01H…",
      "subscriber_id": "cust_123",
      "feature": "sso",
      "kind": "flag",
      "allowed": true,
      "expires_at": "2026-02-01T00:00:00.000Z",
      "created_at": "2026-01-15T12:00:00.000Z",
      "updated_at": "2026-01-15T12:00:00.000Z"
    },
    {
      "id": "01H…",
      "subscriber_id": "cust_123",
      "feature": "seats",
      "kind": "limit",
      "limit": 50,
      "expires_at": null,
      "created_at": "2026-01-15T12:00:00.000Z",
      "updated_at": "2026-01-15T12:00:00.000Z"
    },
    {
      "id": "01H…",
      "subscriber_id": "cust_123",
      "feature": "support_tier",
      "kind": "config",
      "value": "dedicated",
      "expires_at": null,
      "created_at": "2026-01-15T12:00:00.000Z",
      "updated_at": "2026-01-15T12:00:00.000Z"
    }
  ]
}

Get override

GET /org/subscribers/{subscriber_id}/overrides/{feature_key}

200 — override (returned even after expires_at; check ignores it then) · 404 — none

Delete override

DELETE /org/subscribers/{subscriber_id}/overrides/{feature_key}

204 — removed; the plan grant applies again for that feature. See Resolution order.

404 — subscriber not found, or no override for that feature