Florality
FeaturesPricingSecurityFAQAbout
Sign upSign in
Public REST APIv1

REST reference & guides

Public REST APIv1

REST reference & guides

Get started

  • Overview
  • Authentication
  • Scopes
  • Errors

API reference

  • Members
  • Groups
  • Entries
  • Front
  • Appearance
  • Custom fields
  • Trash
  • Search
  • Member statuses
    • GETList definitions
    • POSTCreate definition
    • GETMember resolved statuses
    • POSTAssign status
    • GETFriend-visible statuses
  • Systems
  • Messaging
  • Privacy buckets
  • Terminology
  • Friends
  • Subscriptions
  • Billing
  • Import
  • Social
  • Guestbook & poll
  • Group layout
  • Activity
  1. Documentation
  2. Member statuses
API keys
Florality

Organise your system. One front at a time.

Get startedSign in

Product

  • Features
  • Pricing
  • Public REST API
  • Security

Company

  • About
  • Our team
  • Changelog
  • Contact

Resources

  • FAQ
  • Trust & Safety
  • Privacy Policy
  • Terms of Service
  • Refunds and cancellation

Β© 2026 Florality. All rights reserved.

PrivacyΒ·TermsΒ·

Member statuses

Custom status tags (emoji, Lucide, or custom icon) you assign to members, the active front, or the whole account. Definitions live under /api/v1/member-statuses; resolved tags visible on a member profile are at /api/v1/members/{memberId}/statuses.

Read (GET) needs memberStatuses: read. Write (POST, PATCH, PUT, DELETE) needs memberStatuses: read_write. See Authentication and Scopes.

Each definition is linked to at least one privacy bucket so friends only see statuses you allow. Resolved lists respect the active system scope (side/sub system) where applicable.


Concepts

  • Definition: reusable status template (name, icon, colour, privacy buckets).
  • Assignment: attaches a definition to member, active_front, or account.
  • Resolved status: what the UI shows after merging assignments; at most one tag per definition on a member (member target wins over active front over account).

Definition object

FieldTypeNotes
idstring (UUID)Definition id
namestringMax 48 characters
descriptionstring | nullMax 280 characters
icon / iconTypestringiconType: emoji, lucide, or custom
colourstring | nullHex colour, e.g. #6B7280
positionnumberSort order in the definitions list
privacyBucketIdsstring[]At least one bucket on create
deletedAt / purgeAtnumber | nullSet when soft-deleted to trash

Resolved status object

FieldTypeNotes
assignmentIdstring (UUID)Use with unassign
definitionIdstring (UUID)Source definition
targetKindstringmember, active_front, or account
name, icon, iconType, colour, Copied from definition at resolve time

List definitions

GET/api/v1/member-statuses

Returns all active (non-trashed) definitions for the account, ordered by position.

Response

200: JSON array of definition objects.

JSON
[{
  "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "userId": "a0a0a0a0-a0a0-a0a0-a0a0-a0a0a0a0a0a0",
  "name": "Resting",
  "description": "Low energy",
  "icon": "πŸŒ™",
  "iconType": "emoji",
  "colour": "#6B7280",
  "position": 0,
  "deletedAt": null,
  "purgeAt": null,
  "createdAt": 1714233600000,
  "updatedAt": 1714237200000,
  "privacyBucketIds": ["b1c2d3e4-f5a6-7890-abcd-ef1234567890"]
}]
Shell
curl -sS \
  -H "Authorization: Bearer YOUR_TOKEN" \
  "https://api.floralitys.com/api/v1/member-statuses"
JavaScript
const res = await fetch("https://api.floralitys.com/api/v1/member-statuses", {
  headers: { Authorization: "Bearer YOUR_TOKEN" },
});
if (!res.ok) throw new Error(await res.text());
const definitions = await res.json();

Create definition

POST/api/v1/member-statuses

Request body

FieldRequiredNotes
nameyes1–48 characters
icon, iconTypeyesValidated per icon type
privacyBucketIdsyesNon-empty UUID array
description, colournoOptional

Response

201: created definition. 400: validation error.

Shell
curl -sS -X POST \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Resting",
    "description": "Low energy",
    "icon": "πŸŒ™",
    "iconType": "emoji",
    "colour": "#6B7280",
    "privacyBucketIds": ["BUCKET_UUID"]
  }' \
  "https://api.floralitys.com/api/v1/member-statuses"

Get definition

GET/api/v1/member-statuses/{definitionId}

Response

200: single definition. 404: not found or trashed.

JSON
{
  "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "userId": "a0a0a0a0-a0a0-a0a0-a0a0-a0a0a0a0a0a0",
  "name": "Resting",
  "description": "Low energy",
  "icon": "πŸŒ™",
  "iconType": "emoji",
  "colour": "#6B7280",
  "position": 0,
  "deletedAt": null,
  "purgeAt": null,
  "createdAt": 1714233600000,
  "updatedAt": 1714237200000,
  "privacyBucketIds": ["b1c2d3e4-f5a6-7890-abcd-ef1234567890"]
}
JSON
{
  "code": "NOT_FOUND",
  "message": "Status definition not found."
}

List assignment holders

GET/api/v1/member-statuses/{definitionId}?holders=1

Returns who currently has this definition assigned (members, active front, or account-level rows). Same path as get definition; query holders=1 switches the response shape.

Response

200: array of holder objects.

JSON
[
  {
    "assignmentId": "c2d3e4f5-a6b7-8901-cdef-123456789abc",
    "targetKind": "member",
    "memberId": "b1c2d3e4-f5a6-7890-abcd-ef1234567890",
    "memberName": "River",
    "memberDisplayName": "River"
  }
]

Update definition

PATCH/api/v1/member-statuses/{definitionId}

Partial update. Body fields match create (except id comes from the path). Include privacyBucketIds only when replacing the full bucket set.

Response

200: updated definition. 404 / 400 on failure.


Delete definition (trash)

DELETE/api/v1/member-statuses/{definitionId}

Soft-deletes the definition into trash (memberStatusDefinition). Assignments are cleared as part of delete.

Response

204: no body. Restore with restore or purge from trash via the dashboard.

Plain text
// 204 No Content: empty response body

Reorder definitions

POST/api/v1/member-statuses/reorder

Request body

{ "orderedIds": ["uuid-1", "uuid-2", "..."] }

Every id must be an active definition owned by the account.

Response

204: no body.


Restore definition from trash

POST/api/v1/member-statuses/{definitionId}/restore

Restores a trashed definition. Does not restore old assignments.

Response

204: no body. 404 if not in trash.


Set privacy buckets

PUT/api/v1/member-statuses/{definitionId}/privacy-buckets

Request body

{ "bucketIds": ["uuid-1", "uuid-2"] }

Replaces the definition's privacy bucket links (minimum one id).

Response

204: no body.


Account-level resolved statuses

GET/api/v1/member-statuses/assignments/account

Statuses assigned with targetKind: account (shown account-wide).

Response

200: array of resolved status objects.

JSON
[
  {
    "assignmentId": "c2d3e4f5-a6b7-8901-cdef-123456789abc",
    "definitionId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "name": "Resting",
    "description": "Low energy",
    "icon": "πŸŒ™",
    "iconType": "emoji",
    "colour": "#6B7280",
    "targetKind": "member"
  }
]

Assign status

POST/api/v1/member-statuses/assignments

Request body

FieldRequiredNotes
definitionIdyesUUID
targetKindyesmember, active_front, or account
memberIdwhen targetKind is memberMember UUID

Response

204: no body. 400 if definition inactive or member invalid.

Shell
curl -sS -X POST \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "definitionId": "DEFINITION_UUID",
    "targetKind": "member",
    "memberId": "MEMBER_UUID"
  }' \
  "https://api.floralitys.com/api/v1/member-statuses/assignments"

Assign to account

POST/api/v1/member-statuses/assignments/account

Request body

{ "definitionId": "DEFINITION_UUID" }

Response

204: no body.


Assign to active front

POST/api/v1/member-statuses/assignments/active-front

Request body

{ "definitionId": "DEFINITION_UUID" }

Applies to whoever is currently on front.

Response

204: no body.


Assign to multiple members

POST/api/v1/member-statuses/assignments/members

Request body

{
  "definitionId": "DEFINITION_UUID",
  "memberIds": ["MEMBER_UUID_1", "MEMBER_UUID_2"]
}

Between 1 and 32 member ids per request.

Response

204: no body.


Unassign

POST/api/v1/member-statuses/assignments/unassign

Request body

{ "assignmentId": "ASSIGNMENT_UUID" }

Use assignmentId from a resolved status or holder list, not the definition id.

Response

204: no body.


Resolved statuses for a member

GET/api/v1/members/{memberId}/statuses

Tags visible on that member after resolution (member + active front + account assignments). Respects active system scope.

Response

200: array of resolved status objects.

JSON
[
  {
    "assignmentId": "c2d3e4f5-a6b7-8901-cdef-123456789abc",
    "definitionId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "name": "Resting",
    "description": "Low energy",
    "icon": "πŸŒ™",
    "iconType": "emoji",
    "colour": "#6B7280",
    "targetKind": "member"
  }
]
Shell
curl -sS \
  -H "Authorization: Bearer YOUR_TOKEN" \
  "https://api.floralitys.com/api/v1/members/MEMBER_UUID/statuses"

Clear all statuses on a member

DELETE/api/v1/members/{memberId}/statuses

Removes every assignment targeting that member (does not touch account or front assignments).

Response

204: no body.


Friend-visible statuses

Read a friend's statuses through the friends scope (friends: read), not memberStatuses. Privacy buckets on each definition control what friends see.

MethodPathDescription
GET/api/v1/friends/{friendUserId}/member-statusesAccount-level statuses on a friend's profile
GET/api/v1/friends/{friendUserId}/member-statuses/members/{memberId}Statuses on one of the friend's members

friendUserId is the friend's user UUID. Response shape matches ResolvedMemberStatus above.


Errors

Failures return { code, message }. Common codes: UNAUTHORIZED (401), FORBIDDEN (403 scope), NOT_FOUND (404), BAD_REQUEST (400). See Errors.

JSON
{
  "code": "BAD_REQUEST",
  "message": "Invalid request body."
}