Blue Reacher
Subaccount admins19 / 46

Subaccount admins

The team members who sign in and work in the workspaces they are given.

The team members who sign in and work in the workspaces they are given.

Every route takes Authorization: Bearer <ACCESS_TOKEN> unless the auth line says otherwise. Ids are numbers. Errors use the shape on the errors page.

RouteScopeWhat it does
GET /v1/subaccount-adminssubaccount_admins.readThe account's subaccount admins, newest first.
GET /v1/subaccount-admins/{id}subaccount_admins.readOne subaccount admin.
POST /v1/subaccount-adminssubaccount_admins.writeAdd a team member and email them an invitation.
PATCH /v1/subaccount-admins/{id}subaccount_admins.writeRename, activate / deactivate, or change their workspaces, device limits and devices.
DELETE /v1/subaccount-admins/{id}subaccount_admins.writeRemove the person and all their access.

List subaccount admins

GET https://api.bluereacher.com/v1/subaccount-admins

Auth: Bearer access token. Scope: subaccount_admins.read.

The account's subaccount admins, newest first.

Only a token installed by the account owner can use the subaccount admin endpoints.

Parameters

NameInTypeRequiredDescription
statusqueryenumnoDefault both.
searchquerystringnoMatches name or email.
pagequerynumbernoDefault 1.
limitquerynumberno1–100, default 25. Anything else is a 400.

Request

curl -X GET "https://api.bluereacher.com/v1/subaccount-admins?page=1&limit=25" \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Responses

A 200 reply (OK):

{
  "success": true,
  "data": [
    {
      "id": 41,
      "name": "Sam Doe",
      "email": "sam@example.com",
      "status": "active",
      "workspaces": [
        {
          "id": 7,
          "name": "Lee Studio"
        }
      ],
      "devices": {
        "imessage": []
      },
      "device_limits": {
        "imessage": 0
      },
      "created_at": "2026-10-27T09:00:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "max_limit": 100,
    "total": 1,
    "total_pages": 1
  }
}
StatusWhenMessage
200OK
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): subaccount_admins.read. This integration was granted: …
403The token was installed by a subaccount admin, not the account ownerOnly a token installed by the account owner can manage subaccount admins.

Response fields

subaccount_admin: Each item in data. Fields:

FieldTypeDescription
idnumberExample: 41
namestringFull name.
emailstringThe email they sign in with.
statusstring"active" or "inactive". An inactive admin cannot sign in. Example: active
workspacesarray<object>The workspaces they can work in: id and name.
devicesobject
device_limitsobject
created_atstring (ISO 8601)When they were added.

Get subaccount admin

GET https://api.bluereacher.com/v1/subaccount-admins/{id}

Auth: Bearer access token. Scope: subaccount_admins.read.

One subaccount admin.

Parameters

NameInTypeRequiredDescription
idpathnumberyesSubaccount admin id.

Request

curl -X GET "https://api.bluereacher.com/v1/subaccount-admins/41" \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Responses

A 200 reply (OK):

{
  "success": true,
  "data": {
    "id": 41,
    "name": "Sam Doe",
    "email": "sam@example.com",
    "status": "active",
    "workspaces": [
      {
        "id": 7,
        "name": "Lee Studio"
      }
    ],
    "devices": {
      "imessage": []
    },
    "device_limits": {
      "imessage": 0
    },
    "created_at": "2026-10-27T09:00:00.000Z"
  }
}
StatusWhenMessage
200OK
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): subaccount_admins.read. This integration was granted: …
403The token was installed by a subaccount admin, not the account ownerOnly a token installed by the account owner can manage subaccount admins.
404Not a subaccount admin of the installerSubaccount admin not found or not accessible to this token

Response fields

subaccount_admin. Fields:

FieldTypeDescription
idnumberExample: 41
namestringFull name.
emailstringThe email they sign in with.
statusstring"active" or "inactive". An inactive admin cannot sign in. Example: active
workspacesarray<object>The workspaces they can work in: id and name.
devicesobject
device_limitsobject
created_atstring (ISO 8601)When they were added.

Invite subaccount admin

POST https://api.bluereacher.com/v1/subaccount-admins

Auth: Bearer access token. Scope: subaccount_admins.write.

Add a team member and email them an invitation.

No password is sent or set through the API. The person gets the same invitation email as from the dashboard, with a link to set their own password (valid 24 hours, works once). After that they can use Forgot password on the sign-in page.

Device limits come first. The limit and the ids can be sent in the same request.

Only devices on the installer's own account can be assigned (404 otherwise).

Plan, white label and 2FA settings are set on the dashboard.

Parameters

NameInTypeRequiredDescription
namebodystringyesFull name, up to 255 characters.
emailbodystringyesThey sign in with it. Must not be registered already.
workspace_idsbodyarray<number>noWorkspaces of the account they can work in. Default none.
statusbodyenumnoDefault active.
imessage_quantitybodynumbernoHow many iMessage devices they may hold. At most your plan's iMessage quantity. Default 0.
imessage_device_idsbodyarray<number>noiMessage devices — ids where channel is "imessage". No more than imessage_quantity. Default 0.

Request

curl -X POST "https://api.bluereacher.com/v1/subaccount-admins" \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Sam Doe",
  "email": "sam@example.com",
  "workspace_ids": [
    7
  ]
}'

Responses

A 201 reply (Invited):

{
  "success": true,
  "message": "Subaccount admin invited. They set their password from the invitation email (link valid 24 hours).",
  "data": {
    "id": 41,
    "name": "Sam Doe",
    "email": "sam@example.com",
    "status": "active",
    "workspaces": [
      {
        "id": 7,
        "name": "Lee Studio"
      }
    ],
    "devices": {
      "imessage": []
    },
    "device_limits": {
      "imessage": 0
    },
    "created_at": "2026-10-27T09:00:00.000Z"
  }
}
StatusWhenMessage
201Invited
400Missing or invalid fieldemail must be a valid email address
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): subaccount_admins.write. This integration was granted: …
403The token was installed by a subaccount admin, not the account ownerOnly a token installed by the account owner can manage subaccount admins.
404A workspace is not the account'sOne or more workspaces not found or not accessible to this token
404A device is not the account'sOne or more workspaces or devices not found or not accessible to this token
409The email is already registeredThat email is already registered

Response fields

subaccount_admin. Fields:

FieldTypeDescription
idnumberExample: 41
namestringFull name.
emailstringThe email they sign in with.
statusstring"active" or "inactive". An inactive admin cannot sign in. Example: active
workspacesarray<object>The workspaces they can work in: id and name.
devicesobject
device_limitsobject
created_atstring (ISO 8601)When they were added.

Update subaccount admin

PATCH https://api.bluereacher.com/v1/subaccount-admins/{id}

Auth: Bearer access token. Scope: subaccount_admins.write.

Rename, activate / deactivate, or change their workspaces, device limits and devices.

Send only what changes; everything else stays as it is.

For workspaces send either workspace_ids (the whole new set — [] removes all) or add_workspace_ids / remove_workspace_ids, not both.

Device limits come first. The limit and the ids can be sent in the same request.

Only devices on the installer's own account can be assigned (404 otherwise).

Both can go in one request (remove one, add another). A device already held is never swapped out: if adding would take the admin past the channel's limit, the request is refused with 400 and nothing changes — raise the limit or remove a device first. A channel you do not send is left as it is, and so is a limit you do not send. A limit cannot go below the devices the admin holds.

email, password, by_pass_2fa, wl_allowed and plan_id cannot be changed through the API (400).

Parameters

NameInTypeRequiredDescription
idpathnumberyesSubaccount admin id.
namebodystringnoFull name, up to 255 characters.
statusbodyenumnoInactive stops them signing in.
workspace_idsbodyarray<number>noThe whole new set of workspaces.
add_workspace_idsbodyarray<number>noWorkspaces to give them.
remove_workspace_idsbodyarray<number>noWorkspaces to take away.
imessage_quantitybodynumbernoHow many iMessage devices they may hold. At most your plan's iMessage quantity. Added to what they already hold.
imessage_device_idsbodyarray<number>noiMessage devices — ids where channel is "imessage". No more than imessage_quantity. Added to what they already hold.
remove_imessage_device_idsbodyarray<number>noiMessage devices to take away.

Request

curl -X PATCH "https://api.bluereacher.com/v1/subaccount-admins/41" \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "active",
  "add_workspace_ids": [
    9
  ]
}'

Responses

A 200 reply (OK):

{
  "success": true,
  "message": "Subaccount admin updated",
  "data": {
    "id": 41,
    "name": "Sam Doe",
    "email": "sam@example.com",
    "status": "active",
    "workspaces": [
      {
        "id": 7,
        "name": "Lee Studio"
      },
      {
        "id": 9,
        "name": "Harbour Dental"
      }
    ],
    "devices": {
      "imessage": []
    },
    "device_limits": {
      "imessage": 0
    },
    "created_at": "2026-10-27T09:00:00.000Z"
  }
}
StatusWhenMessage
200OK
400Nothing to update, or a field that cannot be changedemail cannot be changed through the API
400A limit below the devices held, or above your planimessage_quantity cannot be above your plan's iMessage limit (2).
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): subaccount_admins.write. This integration was granted: …
403The token was installed by a subaccount admin, not the account ownerOnly a token installed by the account owner can manage subaccount admins.
404Not a subaccount admin of the installerSubaccount admin not found or not accessible to this token
404A workspace or device that is not on the installer's accountOne or more workspaces or devices not found or not accessible to this token

Response fields

subaccount_admin. Fields:

FieldTypeDescription
idnumberExample: 41
namestringFull name.
emailstringThe email they sign in with.
statusstring"active" or "inactive". An inactive admin cannot sign in. Example: active
workspacesarray<object>The workspaces they can work in: id and name.
devicesobject
device_limitsobject
created_atstring (ISO 8601)When they were added.

Delete subaccount admin

DELETE https://api.bluereacher.com/v1/subaccount-admins/{id}

Auth: Bearer access token. Scope: subaccount_admins.write.

Remove the person and all their access.

Their account, workspace and device access are deleted. Cannot be undone; to stop them signing in for now, set status to inactive instead.

Parameters

NameInTypeRequiredDescription
idpathnumberyesSubaccount admin id.

Request

curl -X DELETE "https://api.bluereacher.com/v1/subaccount-admins/41" \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Responses

A 200 reply (OK):

{
  "success": true,
  "message": "Subaccount admin deleted"
}
StatusWhenMessage
200OK
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): subaccount_admins.write. This integration was granted: …
403The token was installed by a subaccount admin, not the account ownerOnly a token installed by the account owner can manage subaccount admins.
404Not a subaccount admin of the installerSubaccount admin not found or not accessible to this token

On this page