Grant an entitlement override
const url = 'https://api.sloose.com/entitlements/admin/orgs/org_9f3c/overrides';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"key":"example","value":1,"reason":"example","grantedBy":"example","expiresAt":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.sloose.com/entitlements/admin/orgs/org_9f3c/overrides \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "key": "example", "value": 1, "reason": "example", "grantedBy": "example", "expiresAt": "example" }'Backoffice route: a staff session, or ADMIN_TOKEN; never a customer’s session. Raises a limit or switches on a feature for one org without changing its plan. reason is required because an override nobody can explain later is a liability; grantedBy is the staff member unless the request says otherwise. Written down as org.override.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The org id.
Example
org_9f3cThe org id.
Request Bodyrequired
Section titled “Request Bodyrequired”object
A plan limit key or a feature key.
Why. Required.
Who authorised it. Defaults to the staff member making the request, or “admin token”.
ISO date. Omitted means it does not expire.
Examplegenerated
{ "key": "example", "value": 1, "reason": "example", "grantedBy": "example", "expiresAt": "example"}Responses
Section titled “Responses”Granted, with the org’s entitlements as they now resolve.
object
Everything the widget needs to know about what this org may do.
object
The org whose subscription governs this one.
The org whose ledger holds the AI credits this one spends.
object
object
object
CRM users allowed to use the widget; null = unlimited.
Production connectors the org may have; null = unlimited. CSV uploads do not count.
Import runs that write at least one row, per period; null = unlimited (fair use). Dry runs never count.
The most rows one import set may declare. Checked before anything is written.
Server-side runs only. Browser runs are never refused on it.
USD per 1,000 rows beyond rows_per_month, server-side runs only; null = not offered.
Null = unlimited.
object
object
object
AI credits. Included credits reset each period; purchased ones do not.
object
Included + purchased − reserved
Applies right now regardless of the action.
Example
{ "entitlements": { "kind": "production", "plan": { "key": "free" }, "status": "free", "warnings": [ "LIMIT_ROWS" ] }}The key is unknown, the value is the wrong type for it, or a required field is missing.
object
Examplegenerated
{ "error": "example"}A bearer that is neither the token nor a live session (code: AUTH_REQUIRED).
The error envelope every non-2xx answer uses.
object
Human-readable explanation.
Machine-readable reason. Absent on a few legacy 400s.
Examplegenerated
{ "error": "example", "code": "example"}A customer’s session, an API token, or no bearer at all — not staff, and not the ADMIN_TOKEN (code: ADMIN_REQUIRED).
The error envelope every non-2xx answer uses.
object
Human-readable explanation.
Machine-readable reason. Absent on a few legacy 400s.
Examplegenerated
{ "error": "example", "code": "example"}