Skip to content
You're offline. Some features may be unavailable.
QPortal is live. Deploy QR-powered AI instantly.

API Reference

Organizations

Organizations let you manage multiple brands, locations, or clients under a single 3QPR account. Team members can be invited with role-based access. Enterprise plans support unlimited organizations with SSO and custom domains.

GET/v1/organizations

List organizations

Returns all organizations the authenticated API key has access to.

curl https://api.3qpr.com/v1/organizations \
  -H "Authorization: Bearer YOUR_API_KEY"
Response 200json
{
  "organizations": [
    {
      "id": "org_01HABC",
      "name": "Grand Meridian Hotels",
      "slug": "grand-meridian",
      "plan": "enterprise",
      "qpr_codes_count": 48,
      "members_count": 6,
      "created_at": "2026-01-10T09:00:00Z"
    }
  ],
  "total": 1
}
POST/v1/organizations

Create an organization

Request body

FieldTypeRequiredDescription
namestringYesDisplay name for the organization
slugstringNoURL-safe identifier — auto-generated if omitted
metadataobjectNoArbitrary key-value pairs
curl -X POST https://api.3qpr.com/v1/organizations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Grand Meridian Hotels", "slug": "grand-meridian"}'
Response 201json
{
  "id": "org_01HABC",
  "name": "Grand Meridian Hotels",
  "slug": "grand-meridian",
  "plan": "free",
  "qpr_codes_count": 0,
  "members_count": 1,
  "created_at": "2026-03-20T12:00:00Z"
}

Members

GET/v1/organizations/:id/members

List members

curl https://api.3qpr.com/v1/organizations/org_01HABC/members \
  -H "Authorization: Bearer YOUR_API_KEY"
Response 200json
{
  "members": [
    {
      "id": "mem_01HXYZ",
      "email": "alice@grandmeridian.com",
      "role": "admin",
      "joined_at": "2026-01-10T09:00:00Z"
    },
    {
      "id": "mem_01HABC",
      "email": "bob@grandmeridian.com",
      "role": "editor",
      "joined_at": "2026-02-14T11:30:00Z"
    }
  ]
}
POST/v1/organizations/:id/members

Invite a member

Sends an email invitation. Roles: owner, admin, editor, viewer.

curl -X POST https://api.3qpr.com/v1/organizations/org_01HABC/members \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "charlie@grandmeridian.com", "role": "editor"}'
Response 200json
{
  "invitation_id": "inv_01HXYZ",
  "email": "charlie@grandmeridian.com",
  "role": "editor",
  "expires_at": "2026-03-27T12:00:00Z"
}

Organization object

FieldTypeDescription
idstringUnique organization ID
namestringDisplay name
slugstringURL-safe identifier used in the Studio and API
planstringCurrent billing plan: free | starter | professional | enterprise
qpr_codes_countnumberTotal QPR Codes in this organization
members_countnumberNumber of active members
created_atstringISO-8601 creation timestamp