One org, as staff see it
const url = 'https://api.sloose.com/staff/orgs/org_9f3c';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.sloose.com/staff/orgs/org_9f3c \ --header 'Authorization: Bearer <token>'Backoffice route: a staff session, or ADMIN_TOKEN. The org, its entitlements resolved fresh, everyone in it, its connectors, its invitations and its newest runs — what a support conversation needs, read-only. Looking is written down, so an org can later see who looked.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The org
Example
org_9f3cThe org
Responses
Section titled “Responses”The org.
object
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.
object
Where the role came from: the CRM profile at sign-in, or set by hand here. A manual role is not reset by signing in again.
How the org’s CRM knows this member — the Zoho user id. Null for someone who joined another way.
When access was revoked. Null while they can still use the org.
The person is banned — refused in every org, not just this one.
object
Source | destination | both
The system’s own id — the Zoho org id.
The Zoho data centre.
Whether it holds a usable credential, so the server can read the system with nobody present.
Ok | revoked | error, from the credential’s last use.
object
The newest ten.
One import run. Retired nightly past the plan’s history window.
object
The destination this run wrote to. Null means the org’s default CRM: a run from before connectors were named, or one authorised by an API token or an older session, which name no connector.
Example
{ "org": { "kind": "production" }, "entitlements": { "kind": "production", "plan": { "key": "free" }, "status": "free", "warnings": [ "LIMIT_ROWS" ] }, "members": [ { "role": "operator" } ], "connectors": [ { "kind": "zoho_crm", "environment": "production", "status": "active" } ], "invitations": [ { "status": "pending" } ], "runs": [ { "mode": "widget", "status": "authorised" } ]}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"}No such org, or it is not visible to this session.
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"}