Groundfloor Docs

Organizations API

List, read and update organizations, and read their quota and audit history.

Read and manage the organizations you belong to. Base path: /v1/organizations. All requests need a bearer token; see Authentication.

Organizations used to be called accounts. /v1/accounts/... paths still work and take the same IDs. The audit route below exists only under /v1/accounts.

List organizations

GET /v1/organizations?limit=100

Returns the organizations you can read.

curl -s -H "Authorization: Bearer $TOKEN" "https://platform.groundfloor.cloud/v1/organizations"

Get an organization

GET /v1/organizations/{organization_id}

Permission: read on the organization.

Update an organization

PATCH /v1/organizations/{organization_id}

Rename the organization or change its billing contact (up to 320 characters).

Permission: a request that changes only billing_contact needs view_billing (Owner, Admin or Billing admin). Any other field needs administer (Owner or Admin).

Request deletion

POST /v1/organizations/{organization_id}/deletion
DELETE /v1/organizations/{organization_id}/deletion

POST schedules the organization for deletion after a grace period (202 Accepted). The body is { "confirm_name": "…" }, which must match the organization's name exactly. DELETE cancels a scheduled deletion. A cancel works until the deletion starts, even after the scheduled date; once the deletion has started it returns 409.

Permission: the Owner role on the organization. An Admin gets 403.

Quota

GET /v1/organizations/{organization_id}/quota

Your usage against your plan's limits. Read-only. See Quotas and limits.

Permission: read on the organization.

Audit history

GET /v1/accounts/{organization_id}/audit?limit=50

Changes made in the organization, newest first. This route is only available under /v1/accounts; pass the organization ID.

Permission: read on the organization.

Look up by identity-provider organization

GET /v1/organizations/by-org/{external_org_id}

Returns the organization linked to an identity-provider organization ID. Returns 404 if you can't see one.

Create an organization

POST /v1/organizations

Organizations are set up for you by Groundfloor: Groundfloor is invite-only. This route works for a signed-in user only where self-service creation is turned on, which it is not by default; elsewhere it returns 403 and you should contact the Groundfloor team. GET /v1/me/capabilities returns can_create_organization, which tells you whether you can use it.

FieldRequiredDescription
nameYes1 to 255 characters
tenancy_archetypeYesisv, enterprise, or si_agency
billing_contactNoBilling contact
external_org_idNoIgnored for self-service requests. A sign-in group is created for the organization automatically when the identity provider is configured

Returns 201 with the organization, and you become its Owner. Plan tier and billing tier are set by Groundfloor: a self-service request can't choose them, and any values you send for them are ignored. You can also send plan_tier and billing_tier, which only Groundfloor operators can set.

Members and invitations

GET  /v1/accounts/{account_id}/members
POST /v1/accounts/{account_id}/invitations

These two routes exist only under /v1/accounts; pass the organization ID.

GET …/members returns up to 200 members, each with membership_id, user_id, role, created_at, email and display_name. Permission: read on the organization.

POST …/invitations takes { "email": "…", "role": "member" }, sends the person an invitation email to join the organization's sign-in group, and returns 202 with invitation_id, email, role and status. The role field is only recorded in the audit log; the route doesn't assign it. To give someone a role, use the Memberships API. Returns 409 if the organization has no linked identity-provider organization, or if that sign-in group is also linked to another organization (contact Groundfloor support with your organization's ID; it isn't caused by the email address), and 502 if the invitation email can't be sent. Permission: manage_members on the organization.